72e3347ac5a3ba5993354e0335967fbbddf36fe4
[platform/framework/web/chromium-efl.git] / tizen_src / chromium_impl / ui / ozone / platform / efl / efl_event_handler.h
1 // Copyright 2021 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_
6 #define UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_
7
8 #include <Ecore.h>
9 #include <Ecore_Evas.h>
10
11 #if defined(OS_TIZEN_TV_PRODUCT)
12 #include "base/callback.h"
13 #include "ui/gfx/geometry/rect.h"
14 #endif
15
16 namespace ui {
17
18 class EflWindow;
19 class EflPlatformEventSource;
20 class KeyEvent;
21 class TouchEvent;
22
23 // Keyboard
24 template <class EVT>
25 KeyEvent MakeWebKeyEvent(bool pressed, const EVT*);
26
27 TouchEvent MakeTouchEvent(Evas_Coord_Point pt,
28                           Evas_Touch_Point_State state,
29                           int id,
30                           unsigned int timestamp,
31                           int delta_y);
32
33 class EflEventHandler {
34  public:
35   explicit EflEventHandler(EflWindow* window);
36   ~EflEventHandler();
37
38   EflEventHandler(const EflEventHandler&) = delete;
39   EflEventHandler& operator=(const EflEventHandler&) = delete;
40
41   void SetTouchEventsEnabled(bool enabled);
42   bool TouchEventsEnabled() const { return touch_events_enabled_; }
43   void SetKeyEventsEnabled(bool enabled);
44   bool KeyEventsEnabled() const { return key_events_enabled_; }
45   void SendKeyEvent(Evas_Object* ewk_view, void* event_info, bool is_press);
46   void SendMouseDown(int button, int x, int y);
47   void SendMouseUp(int button, int x, int y);
48   void SendMouseMove(int x, int y);
49   void SendMouseWheel(bool y_direction, int step, int x, int y);
50   void SendMouseOut();
51
52  private:
53   void RegisterCallbacks();
54   void AddTouchCallbacks();
55   void DeleteTouchCallbacks();
56   void AddKeyCallbacks();
57   void DeleteKeyCallbacks();
58
59   static void OnMouseDown(void* data, Evas*, Evas_Object*, void*);
60   static void OnMouseUp(void* data, Evas*, Evas_Object*, void*);
61   static void OnMouseMove(void* data, Evas*, Evas_Object*, void*);
62   static void OnMouseIn(void* data, Evas*, Evas_Object*, void*);
63   static void OnMouseOut(void* data, Evas*, Evas_Object*, void*);
64   static void OnMouseWheel(void* data, Evas*, Evas_Object*, void*);
65   static void OnKeyDown(void*, Evas*, Evas_Object*, void*);
66   static void OnKeyUp(void*, Evas*, Evas_Object*, void*);
67   static void OnMultiTouchDownEvent(void*, Evas*, Evas_Object*, void*);
68   static void OnMultiTouchMoveEvent(void*, Evas*, Evas_Object*, void*);
69   static void OnMultiTouchUpEvent(void*, Evas*, Evas_Object*, void*);
70
71   void ProcessTouchEvents(unsigned int timestamp, bool is_multi_touch);
72   int GetTopControlsHeight();
73   template <typename EVT>
74   bool GetTouchEventsEnabled(const EVT* evas_evt);
75
76   int key_modifiers_ = 0;
77   bool touch_events_enabled_ = false;
78   bool key_events_enabled_ = true;
79   int top_controls_height_ = 0;
80   bool was_keydown_filtered_by_platform_ = false;
81   bool was_return_keydown_filtered_by_platform_ = false;
82   bool was_alt_enter_key_down_ = false;
83   bool was_up_keypress_on_ime_top_ = false;
84
85   EflWindow* window_ = nullptr;
86   Evas_Object* native_view_ = nullptr;
87 };
88
89 }  // namespace ui
90
91 #endif  // UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_