bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f5a4fd89d9935fd77afab7bad446477d101e35da

commit f5a4fd89d9935fd77afab7bad446477d101e35da
Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Sep 26 10:15:24 2019 -0400

    efl_ui/item_clickable: fix event info for press events
    
    this is just a button and not the full clickable struct
    
    Reviewed-by: Marcel Hollerbach <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D10198
---
 src/lib/elementary/efl_ui_collection.c      | 18 ++++++++++---
 src/lib/elementary/efl_ui_collection_view.c | 39 +++++++++++++++++++----------
 src/lib/elementary/efl_ui_item_clickable.eo | 12 ++++++---
 3 files changed, 50 insertions(+), 19 deletions(-)

diff --git a/src/lib/elementary/efl_ui_collection.c 
b/src/lib/elementary/efl_ui_collection.c
index a281997974..6c3c5fe226 100644
--- a/src/lib/elementary/efl_ui_collection.c
+++ b/src/lib/elementary/efl_ui_collection.c
@@ -632,13 +632,25 @@ _redirect_cb(void *data, const Efl_Event *ev)
                                                                 \
         efl_event_callback_call(obj, Item_Desc, &item_clicked); \
      }
+#define REDIRECT_EVT_PRESS(Desc, Item_Desc)                           \
+   if (Desc == ev->desc)                                        \
+     {                                                          \
+        Efl_Ui_Item_Clickable_Pressed item_pressed;             \
+        int *button = ev->info;        \
+                                                                \
+        item_pressed.button = *button;                        \
+        item_pressed.item = ev->object;                         \
+                                                                \
+        efl_event_callback_call(obj, Item_Desc, &item_pressed); \
+     }
 
-   REDIRECT_EVT(EFL_INPUT_EVENT_PRESSED, EFL_UI_EVENT_ITEM_PRESSED);
-   REDIRECT_EVT(EFL_INPUT_EVENT_UNPRESSED, EFL_UI_EVENT_ITEM_UNPRESSED);
-   REDIRECT_EVT(EFL_INPUT_EVENT_LONGPRESSED, EFL_UI_EVENT_ITEM_LONGPRESSED);
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_PRESSED, EFL_UI_EVENT_ITEM_PRESSED);
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_UNPRESSED, EFL_UI_EVENT_ITEM_UNPRESSED);
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_LONGPRESSED, 
EFL_UI_EVENT_ITEM_LONGPRESSED);
    REDIRECT_EVT(EFL_INPUT_EVENT_CLICKED_ANY, EFL_UI_EVENT_ITEM_CLICKED_ANY);
    REDIRECT_EVT(EFL_INPUT_EVENT_CLICKED, EFL_UI_EVENT_ITEM_CLICKED);
 #undef REDIRECT_EVT
+#undef REDIRECT_EVT_PRESS
 }
 
 EFL_CALLBACKS_ARRAY_DEFINE(active_item,
diff --git a/src/lib/elementary/efl_ui_collection_view.c 
b/src/lib/elementary/efl_ui_collection_view.c
index 400e80e7be..8640bdae40 100644
--- a/src/lib/elementary/efl_ui_collection_view.c
+++ b/src/lib/elementary/efl_ui_collection_view.c
@@ -183,23 +183,36 @@ _redirect_item_cb(void *data, const Efl_Event *ev)
 {
    Eo *obj = data;
 
-#define REDIRECT_EVT(Desc, Item_Desc)                                   \
-   if (Desc == ev->desc)                                                \
-     {                                                                  \
-        Efl_Ui_Item_Clickable_Clicked item_clicked;                     \
-        Efl_Input_Clickable_Clicked *clicked = ev->info;                \
-                                                                        \
-        item_clicked.clicked = *clicked;                                \
-        item_clicked.item = ev->object;                                 \
-                                                                        \
-        efl_event_callback_call(obj, Item_Desc, &item_clicked);         \
+#define REDIRECT_EVT(Desc, Item_Desc)                           \
+   if (Desc == ev->desc)                                        \
+     {                                                          \
+        Efl_Ui_Item_Clickable_Clicked item_clicked;             \
+        Efl_Input_Clickable_Clicked *clicked = ev->info;        \
+                                                                \
+        item_clicked.clicked = *clicked;                        \
+        item_clicked.item = ev->object;                         \
+                                                                \
+        efl_event_callback_call(obj, Item_Desc, &item_clicked); \
      }
-   REDIRECT_EVT(EFL_INPUT_EVENT_PRESSED, EFL_UI_EVENT_ITEM_PRESSED);
-   REDIRECT_EVT(EFL_INPUT_EVENT_UNPRESSED, EFL_UI_EVENT_ITEM_UNPRESSED);
-   REDIRECT_EVT(EFL_INPUT_EVENT_LONGPRESSED, EFL_UI_EVENT_ITEM_LONGPRESSED);
+#define REDIRECT_EVT_PRESS(Desc, Item_Desc)                           \
+   if (Desc == ev->desc)                                        \
+     {                                                          \
+        Efl_Ui_Item_Clickable_Pressed item_pressed;             \
+        int *button = ev->info;        \
+                                                                \
+        item_pressed.button = *button;                        \
+        item_pressed.item = ev->object;                         \
+                                                                \
+        efl_event_callback_call(obj, Item_Desc, &item_pressed); \
+     }
+
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_PRESSED, EFL_UI_EVENT_ITEM_PRESSED);
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_UNPRESSED, EFL_UI_EVENT_ITEM_UNPRESSED);
+   REDIRECT_EVT_PRESS(EFL_INPUT_EVENT_LONGPRESSED, 
EFL_UI_EVENT_ITEM_LONGPRESSED);
    REDIRECT_EVT(EFL_INPUT_EVENT_CLICKED_ANY, EFL_UI_EVENT_ITEM_CLICKED_ANY);
    REDIRECT_EVT(EFL_INPUT_EVENT_CLICKED, EFL_UI_EVENT_ITEM_CLICKED);
 #undef REDIRECT_EVT
+#undef REDIRECT_EVT_PRESS
 }
 
 EFL_CALLBACKS_ARRAY_DEFINE(active_item_cbs,
diff --git a/src/lib/elementary/efl_ui_item_clickable.eo 
b/src/lib/elementary/efl_ui_item_clickable.eo
index a8bc7ea15b..fbe680a208 100644
--- a/src/lib/elementary/efl_ui_item_clickable.eo
+++ b/src/lib/elementary/efl_ui_item_clickable.eo
@@ -6,14 +6,20 @@ struct Efl.Ui.Item_Clickable_Clicked {
    item: Efl.Ui.Item; [[The clicked item.]]
 }
 
+struct Efl.Ui.Item_Clickable_Pressed {
+   [[A struct that expresses a press or unpress in item of container widget.]]
+   button: int; [[The button which was pressed or unpressed.]]
+   item: Efl.Ui.Item; [[The corresponding item.]]
+}
+
 interface Efl.Ui.Item_Clickable
 {
    [[Shared sets of events between @Efl.Ui.Collection and 
@Efl.Ui.Collection_View.]]
    event_prefix: efl_ui;
    events {
-      item,pressed : Efl.Ui.Item_Clickable_Clicked; [[A $pressed event 
occurred over an item.]]
-      item,unpressed : Efl.Ui.Item_Clickable_Clicked; [[An $unpressed event 
occurred over an item.]]
-      item,longpressed : Efl.Ui.Item_Clickable_Clicked; [[A $longpressed event 
occurred over an item.]]
+      item,pressed : Efl.Ui.Item_Clickable_Pressed; [[A $pressed event 
occurred over an item.]]
+      item,unpressed : Efl.Ui.Item_Clickable_Pressed; [[An $unpressed event 
occurred over an item.]]
+      item,longpressed : Efl.Ui.Item_Clickable_Pressed; [[A $longpressed event 
occurred over an item.]]
       item,clicked : Efl.Ui.Item_Clickable_Clicked; [[A $clicked event 
occurred over an item.]]
       item,clicked,any : Efl.Ui.Item_Clickable_Clicked; [[A $[clicked,any] 
event occurred over an item.]]
    }

-- 


Reply via email to