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 <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10198
This commit is contained in:
Mike Blumenkrantz 2019-09-26 10:15:24 -04:00 committed by Marcel Hollerbach
parent a95870286e
commit f5a4fd89d9
3 changed files with 50 additions and 19 deletions

View File

@ -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,

View File

@ -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,

View File

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