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.
5 #ifndef UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_
6 #define UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_
9 #include <Ecore_Evas.h>
11 #if defined(OS_TIZEN_TV_PRODUCT)
12 #include "base/callback.h"
13 #include "ui/gfx/geometry/rect.h"
19 class EflPlatformEventSource;
26 KeyEvent MakeWebKeyEvent(bool pressed, const EVT*);
28 TouchEvent MakeTouchEvent(Evas_Coord_Point pt,
29 Evas_Touch_Point_State state,
31 unsigned int timestamp,
34 class EflEventHandler {
36 explicit EflEventHandler(EflWindow* window);
39 EflEventHandler(const EflEventHandler&) = delete;
40 EflEventHandler& operator=(const EflEventHandler&) = delete;
42 void SetTouchEventsEnabled(bool enabled);
43 bool TouchEventsEnabled() const { return touch_events_enabled_; }
44 void SetKeyEventsEnabled(bool enabled);
45 bool KeyEventsEnabled() const { return key_events_enabled_; }
46 void SendKeyEvent(Evas_Object* ewk_view, void* event_info, bool is_press);
47 void SendMouseDown(int button, int x, int y);
48 void SendMouseUp(int button, int x, int y);
49 void SendMouseMove(int x, int y);
50 void SendMouseWheel(bool y_direction, int step, int x, int y);
53 void SetIMContextEfl(IMContextEfl* im_context) {
54 im_context_efl_ = im_context;
56 IMContextEfl* GetIMContextEfl() { return im_context_efl_; }
59 void RegisterCallbacks();
60 void AddTouchCallbacks();
61 void DeleteTouchCallbacks();
62 void AddKeyCallbacks();
63 void DeleteKeyCallbacks();
65 static void OnMouseDown(void* data, Evas*, Evas_Object*, void*);
66 static void OnMouseUp(void* data, Evas*, Evas_Object*, void*);
67 static void OnMouseMove(void* data, Evas*, Evas_Object*, void*);
68 static void OnMouseIn(void* data, Evas*, Evas_Object*, void*);
69 static void OnMouseOut(void* data, Evas*, Evas_Object*, void*);
70 static void OnMouseWheel(void* data, Evas*, Evas_Object*, void*);
71 static void OnKeyDown(void*, Evas*, Evas_Object*, void*);
72 static void OnKeyUp(void*, Evas*, Evas_Object*, void*);
73 static void OnMultiTouchDownEvent(void*, Evas*, Evas_Object*, void*);
74 static void OnMultiTouchMoveEvent(void*, Evas*, Evas_Object*, void*);
75 static void OnMultiTouchUpEvent(void*, Evas*, Evas_Object*, void*);
77 void ProcessTouchEvents(unsigned int timestamp, bool is_multi_touch);
78 int GetTopControlsHeight();
79 template <typename EVT>
80 bool GetTouchEventsEnabled(const EVT* evas_evt);
82 bool FilterIMEKeyDownEvent(Evas_Event_Key_Down* key_down);
83 bool FilterIMEKeyUpEvent(Evas_Event_Key_Up* key_up);
84 bool IsIMEHandleKeyEventEnabled();
86 int key_modifiers_ = 0;
87 bool touch_events_enabled_ = false;
88 bool key_events_enabled_ = true;
89 int top_controls_height_ = 0;
90 bool was_keydown_filtered_by_platform_ = false;
91 bool was_return_keydown_filtered_by_platform_ = false;
92 bool was_alt_enter_key_down_ = false;
93 bool was_up_keypress_on_ime_top_ = false;
95 EflWindow* window_ = nullptr;
96 Evas_Object* native_view_ = nullptr;
97 IMContextEfl* im_context_efl_ = nullptr;
102 #endif // UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_