From 62867a7d49607ef5f080ee6a6ecb8fdf93e1d7cf Mon Sep 17 00:00:00 2001 From: Jaime Thomas Date: Sun, 19 Apr 2009 18:31:20 +0000 Subject: [PATCH] Knock another item off the TODO. Theme now emits ecdb,clicked for taking action, and ecdb,activate for focusing. --- ecdb/trunk/TODO | 2 +- .../data/themes/default/groups/burn_data.edc | 21 +++ .../data/themes/default/groups/burn_image.edc | 14 ++ .../data/themes/default/groups/button.edc | 9 +- .../data/themes/default/groups/check.edc | 14 ++ .../data/themes/default/groups/combo.edc | 11 +- .../data/themes/default/groups/entry.edc | 9 +- .../data/themes/default/groups/erase_disc.edc | 14 ++ ecdb/trunk/src/ecdb_burn_data_gui.c | 18 ++- ecdb/trunk/src/ecdb_burn_image_gui.c | 18 ++- ecdb/trunk/src/ecdb_erase_gui.c | 4 +- ecdb/trunk/src/ecdb_gui.c | 122 ++++++++++++------ ecdb/trunk/src/ecdb_widgets.c | 43 ++---- 13 files changed, 203 insertions(+), 96 deletions(-) diff --git a/ecdb/trunk/TODO b/ecdb/trunk/TODO index 6824467..1bcd162 100644 --- a/ecdb/trunk/TODO +++ b/ecdb/trunk/TODO @@ -17,10 +17,10 @@ TODO -> integrate exchange -> instead of always swallowing widgets, allow theme to specify on a widget-by-widget basis if it wants to emit signals from internal parts (so, for example, the settings could be triggered by a small + in the corner, and expand from there) ->able to allow entire gui to be handled by theme... so we only interact with signals (no widgets at all) --> make theme and code use a custom signal, rather than mouse,clicked,1 DONE ////////////////////////////////////////////////////////////////////////////// -> better way to detect pipe deletion (done? - needs more testing) -> get rid of evas_object_name_find/name_set -> Detect if the media in a drive has changed and update the drive info using dbus. +-> make theme and code use a custom signal, rather than mouse,clicked,1 diff --git a/ecdb/trunk/data/themes/default/groups/burn_data.edc b/ecdb/trunk/data/themes/default/groups/burn_data.edc index 564c036..8b36780 100644 --- a/ecdb/trunk/data/themes/default/groups/burn_data.edc +++ b/ecdb/trunk/data/themes/default/groups/burn_data.edc @@ -454,6 +454,27 @@ group { } programs { + program { + name: "emit_clicked_return"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/burn_data/return"; + source: "ecdb/burn_data/return"; + } + + program { + name: "emit_clicked_begin"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/burn_data/begin"; + source: "ecdb/burn_data/begin"; + } + + program { + name: "emit_clicked_settings"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/burn_data/settings"; + source: "ecdb/burn_data/settings"; + } + program { name: "burn_data_page,visible1"; signal: "ecdb,burn_data_page,visible"; diff --git a/ecdb/trunk/data/themes/default/groups/burn_image.edc b/ecdb/trunk/data/themes/default/groups/burn_image.edc index 30ef83e..6a8d58d 100644 --- a/ecdb/trunk/data/themes/default/groups/burn_image.edc +++ b/ecdb/trunk/data/themes/default/groups/burn_image.edc @@ -350,6 +350,20 @@ group { } programs { + program { + name: "emit_clicked_return"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/burn_image/return"; + source: "ecdb/burn_image/return"; + } + + program { + name: "emit_clicked_begin"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/burn_image/begin"; + source: "ecdb/burn_image/begin"; + } + program { name: "burn_image_page,visible1"; signal: "ecdb,burn_image_page,visible"; diff --git a/ecdb/trunk/data/themes/default/groups/button.edc b/ecdb/trunk/data/themes/default/groups/button.edc index 1b03f33..c787bbd 100644 --- a/ecdb/trunk/data/themes/default/groups/button.edc +++ b/ecdb/trunk/data/themes/default/groups/button.edc @@ -364,7 +364,7 @@ group { name: "click_emit"; signal: "mouse,clicked,1"; source: "*"; - action: SIGNAL_EMIT "clicked" "ecdb"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb"; } program { @@ -391,6 +391,13 @@ group { source: "ecdb"; target: "button"; } + + program { + name: "activate"; + signal: "mouse,down,1"; + action: SIGNAL_EMIT "ecdb,activate" "ecdb"; + source: "*"; + } } } diff --git a/ecdb/trunk/data/themes/default/groups/check.edc b/ecdb/trunk/data/themes/default/groups/check.edc index e758fc5..97fa87e 100644 --- a/ecdb/trunk/data/themes/default/groups/check.edc +++ b/ecdb/trunk/data/themes/default/groups/check.edc @@ -186,6 +186,20 @@ group { } programs { + program { + name: "emit_clicked"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb"; + source: "*"; + } + + program { + name: "emit_activate"; + signal: "mouse,down,1"; + action: SIGNAL_EMIT "ecdb,activate" "ecdb"; + source: "*"; + } + program { name: "focus_in"; signal: "ecdb,focus,in"; diff --git a/ecdb/trunk/data/themes/default/groups/combo.edc b/ecdb/trunk/data/themes/default/groups/combo.edc index bef45d5..7d8376d 100644 --- a/ecdb/trunk/data/themes/default/groups/combo.edc +++ b/ecdb/trunk/data/themes/default/groups/combo.edc @@ -307,10 +307,17 @@ group { } program { - name: "clicked_send"; + name: "emit_clicked"; signal: "mouse,clicked,1"; source: "*"; - action: SIGNAL_EMIT "ecdb,combo,clicked" "ecdb"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb"; + } + + program { + name: "emit_activate"; + signal: "mouse,down,1"; + source: "*"; + action: SIGNAL_EMIT "ecdb,activate" "ecdb"; } program { diff --git a/ecdb/trunk/data/themes/default/groups/entry.edc b/ecdb/trunk/data/themes/default/groups/entry.edc index b083a5f..b144d6e 100644 --- a/ecdb/trunk/data/themes/default/groups/entry.edc +++ b/ecdb/trunk/data/themes/default/groups/entry.edc @@ -112,7 +112,14 @@ group { program { name: "signal_emit"; signal: "mouse,clicked,1"; - action: SIGNAL_EMIT "clicked" "ecdb"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb"; + source: "*"; + } + + program { + name: "ecdb,activate"; + signal: "mouse,down,1"; + action: SIGNAL_EMIT "ecdb,activate" "ecdb"; source: "*"; } diff --git a/ecdb/trunk/data/themes/default/groups/erase_disc.edc b/ecdb/trunk/data/themes/default/groups/erase_disc.edc index a341adf..1ef10f2 100644 --- a/ecdb/trunk/data/themes/default/groups/erase_disc.edc +++ b/ecdb/trunk/data/themes/default/groups/erase_disc.edc @@ -315,6 +315,20 @@ group { } programs { + program { + name: "emit_clicked_return"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/erase/return"; + source: "ecdb/erase/return"; + } + + program { + name: "emit_clicked_begin"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "ecdb,clicked" "ecdb/erase/begin"; + source: "ecdb/erase/begin"; + } + program { name: "erase_page,visible1"; signal: "ecdb,erase_page,visible"; diff --git a/ecdb/trunk/src/ecdb_burn_data_gui.c b/ecdb/trunk/src/ecdb_burn_data_gui.c index c269f41..b5454df 100644 --- a/ecdb/trunk/src/ecdb_burn_data_gui.c +++ b/ecdb/trunk/src/ecdb_burn_data_gui.c @@ -8,7 +8,9 @@ static void _button_cb_begin(void *data, Evas_Object *obj, const char *emission, const char *source); static void _page_del(void *data, Evas *e, Evas_Object *obj, void *ev); -static void _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info); +static void _combo_cb_clicked(void *data, Evas_Object *obj, + const char *emission, + const char *source); static void _update_capacity(Ewl_Widget *w, void *ev_info, void *data); // Config inwin updates @@ -211,7 +213,8 @@ _button_cb_begin(void *data, Evas_Object *obj __UNUSED__, static void _combo_cb_clicked(void *data, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) + const char *emission __UNUSED__, + const char *source __UNUSED__) { Evas_Object *b; Ecdb_Data_Project *proj; @@ -512,14 +515,14 @@ ecdb_burn_data_page_show(Ecdb_Page *page) bp->ret = ecdb_button_add(page->data, "ecdb/burn_data/return"); ecdb_button_label_set(bp->ret, "Return to Main Page"); - edje_object_signal_callback_add(page->data, "mouse,clicked,1", + edje_object_signal_callback_add(page->data, "ecdb,clicked", "ecdb/burn_data/return", _button_cb_return, page); evas_object_show(bp->ret); ecdb_button_icon_set(bp->ret, "ecdb/burn_data/return"); bp->begin = ecdb_button_add(page->data, "ecdb/burn_data/begin"); ecdb_button_label_set(bp->begin, "Start Burn"); - edje_object_signal_callback_add(page->data, "mouse,clicked,1", + edje_object_signal_callback_add(page->data, "ecdb,clicked", "ecdb/burn_data/begin", _button_cb_begin, page); evas_object_show(bp->begin); ecdb_button_icon_set(bp->begin, "ecdb/burn_data/begin"); @@ -540,7 +543,8 @@ ecdb_burn_data_page_show(Ecdb_Page *page) { b = ecdb_combo_item_add(bp->drive_combo, NULL); ecdb_combo_item_label_set(b, drive->product); - evas_object_smart_callback_add(b, "clicked", _combo_cb_clicked, proj); + edje_object_signal_callback_add(b, "ecdb,clicked", "ecdb", + _combo_cb_clicked, proj); ecdb_combo_append(bp->drive_combo, b); evas_object_show(b); } @@ -649,7 +653,7 @@ ecdb_burn_data_page_show(Ecdb_Page *page) b = ecdb_button_add(t, NULL); ecdb_button_label_set(b, "Apply"); - edje_object_signal_callback_add(b, "mouse,down,1", "*", _apply_clicked, + edje_object_signal_callback_add(b, "ecdb,clicked", "*", _apply_clicked, t); ecdb_config_inwin_child_add(t, b, 0, 4, 2, 1); evas_object_show(b); @@ -657,7 +661,7 @@ ecdb_burn_data_page_show(Ecdb_Page *page) // At the end so t is a valid pointer b = ecdb_button_add(page->data, "ecdb/burn_data/settings"); ecdb_button_label_set(b, "Settings"); - edje_object_signal_callback_add(page->data, "mouse,clicked,1", + edje_object_signal_callback_add(page->data, "ecdb,clicked", "ecdb/burn_data/settings", _settings_clicked, t); evas_object_show(b); } diff --git a/ecdb/trunk/src/ecdb_burn_image_gui.c b/ecdb/trunk/src/ecdb_burn_image_gui.c index a4e9177..d26cc9d 100644 --- a/ecdb/trunk/src/ecdb_burn_image_gui.c +++ b/ecdb/trunk/src/ecdb_burn_image_gui.c @@ -7,10 +7,12 @@ static void _button_cb_return(void *data, Evas_Object *obj, static void _button_cb_begin(void *data, Evas_Object *obj, const char *emission, const char *source); -static void _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info); +static void _combo_cb_clicked(void *data, Evas_Object *obj, + const char *emission, + const char *source); static void _page_hide_finished(void *data, Evas_Object *o, - const char *emission, - const char *source); + const char *emission, + const char *source); static void _page_del(void *data, Evas *e, Evas_Object *obj, void *ev); static void @@ -144,7 +146,8 @@ _button_cb_begin(void *data, Evas_Object *obj __UNUSED__, static void _combo_cb_clicked(void *data, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) + const char *emission __UNUSED__, + const char *source __UNUSED__) { Evas_Object *b; Ecdb_Burn_Project *bp; @@ -214,14 +217,14 @@ ecdb_burn_image_page_show(Ecdb_Page *page) /* Make the interface all nice and proper */ bp->ret = ecdb_button_add(page->image, "ecdb/burn_image/return"); ecdb_button_label_set(bp->ret, "Return to Main Page"); - edje_object_signal_callback_add(page->image, "mouse,clicked,1", + edje_object_signal_callback_add(page->image, "ecdb,clicked", "ecdb/burn_image/return", _button_cb_return, page); evas_object_show(bp->ret); ecdb_button_icon_set(bp->ret, "ecdb/burn_image/return"); bp->begin = ecdb_button_add(page->image, "ecdb/burn_image/begin"); ecdb_button_label_set(bp->begin, "Start Burn"); - edje_object_signal_callback_add(page->image, "mouse,clicked,1", + edje_object_signal_callback_add(page->image, "ecdb,clicked", "ecdb/burn_image/begin", _button_cb_begin, page); evas_object_show(bp->begin); ecdb_button_icon_set(bp->begin, "ecdb/burn_image/begin"); @@ -246,7 +249,8 @@ ecdb_burn_image_page_show(Ecdb_Page *page) { b = ecdb_combo_item_add(bp->drive_combo, NULL); ecdb_combo_item_label_set(b, drive->product); - evas_object_smart_callback_add(b, "clicked", _combo_cb_clicked, proj); + edje_object_signal_callback_add(b, "ecdb,clicked", "ecdb", + _combo_cb_clicked, proj); ecdb_combo_append(bp->drive_combo, b); evas_object_show(b); } diff --git a/ecdb/trunk/src/ecdb_erase_gui.c b/ecdb/trunk/src/ecdb_erase_gui.c index f4bcda6..909b1fc 100644 --- a/ecdb/trunk/src/ecdb_erase_gui.c +++ b/ecdb/trunk/src/ecdb_erase_gui.c @@ -133,14 +133,14 @@ ecdb_erase_page_show(Ecdb_Page *page) bp->ret = ecdb_button_add(page->erase, "ecdb/erase/return"); ecdb_button_label_set(bp->ret, "Return to Main Page"); - edje_object_signal_callback_add(page->erase, "mouse,clicked,1", + edje_object_signal_callback_add(page->erase, "ecdb,clicked", "ecdb/erase/return", _button_cb_return, page); evas_object_show(bp->ret); ecdb_button_icon_set(bp->ret, "ecdb/erase/return"); bp->begin = ecdb_button_add(page->erase, "ecdb/erase/begin"); ecdb_button_label_set(bp->begin, "Start Erase"); - edje_object_signal_callback_add(page->erase, "mouse,clicked,1", + edje_object_signal_callback_add(page->erase, "ecdb,clicked", "ecdb/erase/begin", _button_cb_begin, page); evas_object_show(bp->begin); ecdb_button_icon_set(bp->begin, "ecdb/erase/begin"); diff --git a/ecdb/trunk/src/ecdb_gui.c b/ecdb/trunk/src/ecdb_gui.c index 5faa131..780570c 100644 --- a/ecdb/trunk/src/ecdb_gui.c +++ b/ecdb/trunk/src/ecdb_gui.c @@ -1,13 +1,21 @@ /* vim: set sw=3 ts=3 sts=3 expandtab: */ #include "ecdb.h" -static void ecdb_handle_typebuf(Evas_Object *gui, Ewl_Widget *fl); -static void ecdb_cb_welcome_page_buttons_clicked(void *data, Evas_Object *o, +typedef void (*edje_cb_type)(void *, Evas_Object *, const char *, const char *); + +static void ecdb_cb_burn_data_clicked(void *data, Evas_Object *o, const char *emission, const char *source); +static void ecdb_cb_burn_audio_clicked(void *data, Evas_Object *o, + const char *emission, const char *source); +static void ecdb_cb_burn_image_clicked(void *data, Evas_Object *o, + const char *emission, const char *source); +static void ecdb_cb_erase_disc_clicked(void *data, Evas_Object *o, + const char *emission, const char *source); + +static void ecdb_handle_typebuf(Evas_Object *gui, Ewl_Widget *fl); static void ecdb_filelist_show(Ecdb_Page *page); static void ecdb_welcome_page_hide_finished(void *data, Evas_Object *o, - const char *emission, - const char *source); + const char *emission, const char *source); static void _page_del(void *data, Evas *e, Evas_Object *obj, void *ev); static void _filelist_del(Ewl_Widget *w, void *ev_data, void *data); @@ -357,39 +365,6 @@ ecdb_handle_typebuf(Evas_Object *gui, Ewl_Widget *fl) edje_object_part_text_set(gui, "filelist_overlay_text", NULL); } - -static void -ecdb_cb_welcome_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission __UNUSED__, - const char *source) -{ - Ecdb_Page *page = data; - - if (!strcmp(source, "ecdb/burn_data")) - { - edje_object_signal_emit(o, "ecdb,welcome_page,hide", "ecdb"); - ecdb_burn_data_page_show(page); - ecdb_filelist_show(page); - } - else if (!strcmp(source, "ecdb/erase")) - { - edje_object_signal_emit(o, "ecdb,welcome_page,hide", "ecdb"); - ecdb_erase_page_show(page); - } - else if (!strcmp(source, "ecdb/burn_image")) - { - ecdb_filelist_show(page); - edje_object_signal_emit(o, "ecdb,welcome_page,hide", "ecdb"); - ecdb_burn_image_page_show(page); - } - else if (o) - { - edje_object_signal_emit(page->gui, "ecdb,filelist,hide", "ecdb"); - } - - EINA_ERROR_PDBG("Action: %s\n", source); -} - void ecdb_welcome_page_show(Ecdb_Page *page) { @@ -404,23 +379,40 @@ ecdb_welcome_page_show(Ecdb_Page *page) evas_object_move(page->welcome, x, y); evas_object_resize(page->welcome, w, h); edje_object_part_swallow(page->gui, "action_area", page->welcome); - edje_object_signal_callback_add(page->welcome, "mouse,clicked,1", - "ecdb/*", ecdb_cb_welcome_page_buttons_clicked, page); edje_object_signal_callback_add(page->welcome, "hide,finished", "welcome_page", ecdb_welcome_page_hide_finished, page->gui); evas_object_show(page->welcome); int i; - char *labels[] = {"Burn Data CD", "Burn Audio CD", "Burn Image", - "Erase Re-writable Disc"}; - char *ids[] = {"ecdb/burn_data", "ecdb/burn_audio", "ecdb/burn_image", - "ecdb/erase"}; + edje_cb_type cbs[] = + { + ecdb_cb_burn_data_clicked, + ecdb_cb_burn_audio_clicked, + ecdb_cb_burn_image_clicked, + ecdb_cb_erase_disc_clicked + }; + char *labels[] = + { + "Burn Data CD", + "Burn Audio CD", + "Burn Image", + "Erase Re-writable Disc" + }; + char *ids[] = + { + "ecdb/burn_data", + "ecdb/burn_audio", + "ecdb/burn_image", + "ecdb/erase" + }; for (i = 0; i < 4; i++) { b = ecdb_button_add(page->welcome, ids[i]); ecdb_button_label_set(b, labels[i]); evas_object_show(b); + edje_object_signal_callback_add(b, "ecdb,clicked", "ecdb", + cbs[i], page); ecdb_button_icon_set(b, ids[i]); } } @@ -533,3 +525,47 @@ ecdb_gui_combo_header_from_speeds(Evas_Object *c, const char *name, void *data, evas_object_show(ret); } +static void +ecdb_cb_burn_data_clicked(void *data, Evas_Object *o, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Ecdb_Page *page = data; + + edje_object_signal_emit(page->welcome, "ecdb,welcome_page,hide", "ecdb"); + ecdb_burn_data_page_show(page); + ecdb_filelist_show(page); +} + +static void +ecdb_cb_burn_audio_clicked(void *data, Evas_Object *o, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Ecdb_Page *page = data; + + edje_object_signal_emit(page->welcome, "ecdb,filelist,hide", "ecdb"); + EINA_ERROR_PDBG("Burn Audio Disc\n"); +} + +static void +ecdb_cb_burn_image_clicked(void *data, Evas_Object *o, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Ecdb_Page *page = data; + + ecdb_filelist_show(page); + edje_object_signal_emit(page->welcome, "ecdb,welcome_page,hide", "ecdb"); + ecdb_burn_image_page_show(page); +} +static void +ecdb_cb_erase_disc_clicked(void *data, Evas_Object *o, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Ecdb_Page *page = data; + + edje_object_signal_emit(page->welcome, "ecdb,welcome_page,hide", "ecdb"); + ecdb_erase_page_show(page); +} diff --git a/ecdb/trunk/src/ecdb_widgets.c b/ecdb/trunk/src/ecdb_widgets.c index d587792..9dac94a 100644 --- a/ecdb/trunk/src/ecdb_widgets.c +++ b/ecdb/trunk/src/ecdb_widgets.c @@ -52,7 +52,7 @@ ecdb_widget_add(Evas_Object *parent, const char *name) return NULL; } - edje_object_signal_callback_add(o, "mouse,down,*", "*", + edje_object_signal_callback_add(o, "ecdb,activate", "*", _mouse_down_edje, NULL); if (name) @@ -68,13 +68,6 @@ ecdb_widget_add(Evas_Object *parent, const char *name) /************************** BUTTON ******************************************/ -void -_button_click_cb_call(void *data, Evas_Object *obj, const char *emission, - const char *source) -{ - evas_object_smart_callback_call(obj, "clicked", NULL); -} - Evas_Object * ecdb_button_add(Evas_Object *parent, const char *name) { @@ -88,8 +81,6 @@ ecdb_button_add(Evas_Object *parent, const char *name) } edje_object_file_set(b, em->theme_path, "ecdb/button"); - edje_object_signal_callback_add(b, "clicked", "ecdb", _button_click_cb_call, - b); return b; } @@ -139,13 +130,6 @@ ecdb_button_label_get(Evas_Object *b) } /************************* COMBO ITEM ****************************************/ -void -_combo_item_click_cb_call(void *data, Evas_Object *obj, const char *emission, - const char *source) -{ - evas_object_smart_callback_call(obj, "clicked", NULL); -} - Evas_Object * ecdb_combo_item_add(Evas_Object *parent, const char *name) { @@ -158,8 +142,6 @@ ecdb_combo_item_add(Evas_Object *parent, const char *name) return NULL; } edje_object_file_set(ci, em->theme_path, "ecdb/combo_item"); - edje_object_signal_callback_add(ci, "clicked", "ecdb", - _combo_item_click_cb_call, ci); return ci; } @@ -510,7 +492,6 @@ _entry_click_cb_call(void *data, Evas_Object *obj, const char *emission, const char *source) { evas_object_focus_set(obj, 1); - evas_object_smart_callback_call(obj, "clicked", NULL); } Evas_Object * @@ -641,7 +622,8 @@ _combo_hide(void *data, Evas *e, Evas_Object *obj, void *event_info) } static void -_combo_clicked(void *data, Evas_Object *obj, void *event_info) +_combo_clicked(void *data, Evas_Object *obj, const char *emission __UNUSED__, + const char *source __UNUSED__) { Combo_Data *cd; Evas_Object *swallow, *header; @@ -685,12 +667,6 @@ _combo_clicked(void *data, Evas_Object *obj, void *event_info) ecdb_combo_collapse(data); } -static void -_combo_item_hide(void *data, Evas_Object *obj, void *event_info) -{ - edje_object_signal_emit(obj, "ecdb,focus,out", "ecdb"); -} - static void _combo_moveable_click_cb(void *data, Evas_Object *obj, const char *emission, const char *source) @@ -715,7 +691,6 @@ _combo_click_cb(void *data, Evas_Object *obj, const char *emission, ecdb_combo_expand(c); else ecdb_combo_collapse(c); - evas_object_smart_callback_call(c, "clicked", NULL); } Evas_Object * @@ -736,7 +711,7 @@ ecdb_combo_add(Evas_Object *parent, const char *name) c); evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE, _combo_hide, c); evas_object_event_callback_add(c, EVAS_CALLBACK_DEL, _combo_del, c); - edje_object_signal_callback_add(c, "ecdb,combo,clicked", "ecdb", + edje_object_signal_callback_add(c, "ecdb,clicked", "ecdb", _combo_click_cb, c); cd = calloc(1, sizeof(Combo_Data)); @@ -811,8 +786,8 @@ ecdb_combo_append(Evas_Object *c, Evas_Object *o) } cd->count++; edje_object_part_box_append(cd->popup, "ecdb.box", o); - evas_object_smart_callback_add(o, "clicked", _combo_clicked, c); - evas_object_smart_callback_add(o, "hidden", _combo_item_hide, c); + edje_object_signal_callback_add(o, "ecdb,clicked", "ecdb", + _combo_clicked, c); } void @@ -943,7 +918,7 @@ ecdb_combo_collapse(Evas_Object *c) } while ((eina_iterator_next(it, (void **)&o))) - evas_object_smart_callback_call(o, "hidden", c); + edje_object_signal_emit(o, "ecdb,focus,out", "ecdb"); eina_iterator_free(it); cd->expanded = 0; @@ -1133,10 +1108,14 @@ _config_inwin_del(void *data, Evas *e, Evas_Object *obj, void *event_info) iwd = data; if (!evas_object_event_callback_del(iwd->parent, EVAS_CALLBACK_HIDE, _config_inwin_hide)) + { EINA_ERROR_PWARN("EVAS_CALLBACK_HIDE callback removal failure!\n"); + } if (!evas_object_event_callback_del(iwd->parent, EVAS_CALLBACK_RESIZE, _config_inwin_resize)) + { EINA_ERROR_PWARN("EVAS_CALLBACK_RESIZE callback removal failure!\n"); + } FREE(iwd); }