diff options
author | Youngbok Shin <youngb.shin@samsung.com> | 2016-05-13 14:06:18 +0900 |
---|---|---|
committer | Jaehwan Kim <jae.hwan.kim@samsung.com> | 2016-05-13 14:06:18 +0900 |
commit | 91437fafb001391bbc8f54807f64b012cfacde09 (patch) | |
tree | 6642f61a44385720bb2a0b9eb21876afcac56071 | |
parent | e80d8d9a7134fdc00fc2ea791205eee5d208e175 (diff) | |
download | efl-91437fafb001391bbc8f54807f64b012cfacde09.tar.gz |
Elementary toolbar: Don't call "clicked" callback when item is just selected
Summary:
"clicked" callback must be called when an item is really clicked.
But, toolbar had called it whenever an item was selected.
Even, it could be triggered by "elm_toolbar_item_selected_set()" API.
So, "clicked" callback will be called when only an item is clicked.
Also, it changed confusing names of related internal functions.
@fix
Test Plan: N/A
Reviewers: jaehwan, woohyun, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3937
-rw-r--r-- | src/lib/elementary/elm_toolbar.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 506ae5331c..4e2314b2ce 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -1174,7 +1174,6 @@ _item_select(Elm_Toolbar_Item_Data *it) { if (it->func) it->func((void *)(WIDGET_ITEM_DATA_GET(EO_OBJ(it))), WIDGET(it), EO_OBJ(it)); } - eo_event_callback_call(obj, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, EO_OBJ(it)); eo_event_callback_call(obj, EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, EO_OBJ(it)); if (_elm_config->atspi_mode) elm_interface_atspi_accessible_state_changed_signal_emit(EO_OBJ(it), ELM_ATSPI_STATE_SELECTED, EINA_TRUE); @@ -1807,7 +1806,7 @@ _move_cb(void *data, } static void -_select_filter_cb(Elm_Toolbar_Item_Data *it, +_mouse_clicked_cb(Elm_Toolbar_Item_Data *it, Evas_Object *obj EINA_UNUSED, const char *emission, const char *source EINA_UNUSED) @@ -1816,16 +1815,21 @@ _select_filter_cb(Elm_Toolbar_Item_Data *it, char buf[sizeof("elm,action,click,") + 1]; button = atoi(emission + sizeof("mouse,clicked,") - 1); - if (button == 1) return; /* regular left click event */ + if (button == 1) + { + /* regular left click event */ + eo_event_callback_call(WIDGET(it), EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, EO_OBJ(it)); + return; + } snprintf(buf, sizeof(buf), "elm,action,click,%d", button); elm_layout_signal_emit(VIEW(it), buf, "elm"); } static void -_select_cb(void *data, - Evas_Object *obj EINA_UNUSED, - const char *emission EINA_UNUSED, - const char *source EINA_UNUSED) +_action_click_cb(void *data, + Evas_Object *obj EINA_UNUSED, + const char *emission EINA_UNUSED, + const char *source EINA_UNUSED) { Elm_Toolbar_Item_Data *it = data; @@ -2512,9 +2516,9 @@ _item_new(Evas_Object *obj, (VIEW(it), "toolbar", "item", elm_widget_style_get(obj))) CRI("Failed to set layout!"); elm_layout_signal_callback_add - (VIEW(it), "elm,action,click", "elm", _select_cb, it); + (VIEW(it), "elm,action,click", "elm", _action_click_cb, it); elm_layout_signal_callback_add - (VIEW(it), "mouse,clicked,*", "*", (Edje_Signal_Cb)_select_filter_cb, it); + (VIEW(it), "mouse,clicked,*", "*", (Edje_Signal_Cb)_mouse_clicked_cb, it); elm_layout_signal_callback_add (VIEW(it), "elm,mouse,in", "elm", _mouse_in_cb, it); elm_layout_signal_callback_add |