This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch v-0.27
in repository enlightenment.
View the commit online.
commit bbf8b249f7f638d27a7ee23de8dedf2347d89c13
Author: Carsten Haitzler <ras...@rasterman.com>
AuthorDate: Fri Jan 24 18:31:32 2025 +0000
comp - autoclose popup allow wheel events to report like key events
@feat
---
src/bin/e_comp.h | 1 +
src/bin/e_comp_object.c | 19 +++++++++++++++++++
src/bin/e_comp_object.h | 2 ++
3 files changed, 22 insertions(+)
diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h
index 686ed1600..fdd0a4baf 100644
--- a/src/bin/e_comp.h
+++ b/src/bin/e_comp.h
@@ -147,6 +147,7 @@ struct _E_Comp
Ecore_Event_Handler *key_handler;
E_Comp_Object_Autoclose_Cb del_cb; //cb to call on autoclose delete
E_Comp_Object_Key_Cb key_cb; //cb to call on key press
+ E_Comp_Object_Wheel_Cb wheel_cb; //cb to call if wheel used outside autoclose obj
void *data; //user data
} autoclose;
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 010d34d4b..c655876d6 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -4802,6 +4802,7 @@ _e_comp_object_autoclose_cleanup(Eina_Bool already_del)
e_comp->autoclose.data = ""
e_comp->autoclose.del_cb = NULL;
e_comp->autoclose.key_cb = NULL;
+ e_comp->autoclose.wheel_cb = NULL;
E_FREE_FUNC(e_comp->autoclose.key_handler, ecore_event_handler_del);
e_comp_shape_queue();
}
@@ -4825,6 +4826,17 @@ _e_comp_object_autoclose_mouse_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED
_e_comp_object_autoclose_cleanup(0);
}
+static void
+_e_comp_object_autoclose_wheel_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ Evas_Event_Mouse_Wheel *ev = event_info;
+ Eina_Bool del = EINA_TRUE;
+
+ if (e_comp->autoclose.wheel_cb)
+ del = !e_comp->autoclose.wheel_cb(e_comp->autoclose.data, ev);
+ if (del) _e_comp_object_autoclose_cleanup(0);
+}
+
static void
_e_comp_object_autoclose_setup(Evas_Object *obj)
{
@@ -4838,6 +4850,7 @@ _e_comp_object_autoclose_setup(Evas_Object *obj)
evas_object_name_set(e_comp->autoclose.rect, "e_comp->autoclose.rect");
evas_object_color_set(e_comp->autoclose.rect, 0, 0, 0, 0);
evas_object_event_callback_add(e_comp->autoclose.rect, EVAS_CALLBACK_MOUSE_UP, _e_comp_object_autoclose_mouse_up_cb, e_comp);
+ evas_object_event_callback_add(e_comp->autoclose.rect, EVAS_CALLBACK_MOUSE_WHEEL, _e_comp_object_autoclose_wheel_cb, e_comp);
e_comp_grab_input(0, 1);
}
evas_object_layer_set(e_comp->autoclose.rect, evas_object_layer_get(obj) - 1);
@@ -4892,6 +4905,12 @@ e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, e_comp);
}
+E_API void
+e_comp_object_util_autoclose_wheel_cb_set(E_Comp_Object_Wheel_Cb cb)
+{
+ e_comp->autoclose.wheel_cb = cb;
+}
+
E_API Evas_Object *
e_comp_object_frame_icon_get(Evas_Object *obj)
{
diff --git a/src/bin/e_comp_object.h b/src/bin/e_comp_object.h
index 893de823c..c055f91f9 100644
--- a/src/bin/e_comp_object.h
+++ b/src/bin/e_comp_object.h
@@ -4,6 +4,7 @@ typedef struct E_Event_Comp_Object E_Event_Comp_Object;
typedef void (*E_Comp_Object_Autoclose_Cb)(void *, Evas_Object *);
typedef Eina_Bool (*E_Comp_Object_Key_Cb)(void *, Ecore_Event_Key *);
typedef Eina_Bool (*E_Comp_Object_Mover_Cb) (void *data, Evas_Object *comp_object, const char *signal);
+typedef Eina_Bool (*E_Comp_Object_Wheel_Cb) (void *data, Evas_Event_Mouse_Wheel *ev);
typedef struct E_Comp_Object_Mover E_Comp_Object_Mover;
@@ -54,6 +55,7 @@ E_API void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_
E_API void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
E_API Eina_Bool e_comp_object_util_autoclose_on_escape(void *d EINA_UNUSED, Ecore_Event_Key *ev);
E_API void e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb, E_Comp_Object_Key_Cb cb, const void *data);
+E_API void e_comp_object_util_autoclose_wheel_cb_set(E_Comp_Object_Wheel_Cb cb);
E_API void e_comp_object_util_center(Evas_Object *obj);
E_API void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
E_API void e_comp_object_util_center_on_zone(Evas_Object *obj, E_Zone *zone);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.