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.

Reply via email to