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.]] } --
