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;
25 KeyEvent MakeWebKeyEvent(bool pressed, const EVT*);
27 TouchEvent MakeTouchEvent(Evas_Coord_Point pt,
28 Evas_Touch_Point_State state,
30 unsigned int timestamp,
33 class EflEventHandler {
35 explicit EflEventHandler(EflWindow* window);
38 EflEventHandler(const EflEventHandler&) = delete;
39 EflEventHandler& operator=(const EflEventHandler&) = delete;
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);
53 void RegisterCallbacks();
54 void AddTouchCallbacks();
55 void DeleteTouchCallbacks();
56 void AddKeyCallbacks();
57 void DeleteKeyCallbacks();
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*);
71 void ProcessTouchEvents(unsigned int timestamp, bool is_multi_touch);
72 int GetTopControlsHeight();
73 template <typename EVT>
74 bool GetTouchEventsEnabled(const EVT* evas_evt);
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;
85 EflWindow* window_ = nullptr;
86 Evas_Object* native_view_ = nullptr;
91 #endif // UI_OZONE_PLATFORM_EFL_EFL_EVENT_HANDLER_H_