From bafe9c7426f2773c8415bc9ce990798ef7ffba4a Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Mon, 31 Oct 2011 00:13:32 +0000 Subject: [PATCH] elm: Use appropriate add/del_full for evas event callbacks. SVN revision: 64536 --- legacy/elementary/TODO | 3 +++ .../elementary/src/lib/elc_fileselector_button.c | 15 +++++++++++++++ .../elementary/src/lib/elc_fileselector_entry.c | 14 ++++++++++++++ legacy/elementary/src/lib/elc_hoversel.c | 2 ++ legacy/elementary/src/lib/elm_bubble.c | 4 ++++ legacy/elementary/src/lib/elm_button.c | 2 ++ legacy/elementary/src/lib/elm_check.c | 3 +++ legacy/elementary/src/lib/elm_conform.c | 3 +++ legacy/elementary/src/lib/elm_flip.c | 6 ++++++ legacy/elementary/src/lib/elm_frame.c | 3 +++ legacy/elementary/src/lib/elm_layout.c | 3 +++ legacy/elementary/src/lib/elm_map.c | 2 +- legacy/elementary/src/lib/elm_mapbuf.c | 3 +++ legacy/elementary/src/lib/elm_notify.c | 5 +++++ legacy/elementary/src/lib/elm_progressbar.c | 2 ++ legacy/elementary/src/lib/elm_radio.c | 2 ++ legacy/elementary/src/lib/elm_scroller.c | 3 +++ legacy/elementary/src/lib/elm_slider.c | 6 ++++++ legacy/elementary/src/lib/elm_slideshow.c | 11 +++++++++++ legacy/elementary/src/lib/elm_win.c | 3 +++ 20 files changed, 94 insertions(+), 1 deletion(-) diff --git a/legacy/elementary/TODO b/legacy/elementary/TODO index 37adb5f584..11d1c997ac 100644 --- a/legacy/elementary/TODO +++ b/legacy/elementary/TODO @@ -9,3 +9,6 @@ Things That Just Need To Be Rewritten (tm): "Features" elm_object_icon_s/get() should be implemented for most widgets to reduce api + +callbacks add/del + pager, panes diff --git a/legacy/elementary/src/lib/elc_fileselector_button.c b/legacy/elementary/src/lib/elc_fileselector_button.c index c5197f6739..d104736108 100644 --- a/legacy/elementary/src/lib/elc_fileselector_button.c +++ b/legacy/elementary/src/lib/elc_fileselector_button.c @@ -22,6 +22,7 @@ struct _Widget_Data static const char *widtype = NULL; +static void _del_pre_hook(Evas_Object *obj); static void _del_hook(Evas_Object *obj); static void _theme_hook(Evas_Object *obj); static void _disable_hook(Evas_Object *obj); @@ -30,6 +31,9 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _button_clicked(void *data, + Evas_Object *obj, + void *event_info); static void _on_focus_hook(void *data, Evas_Object *obj); static void _selection_done(void *data, @@ -43,6 +47,16 @@ static const Evas_Smart_Cb_Description _signals[] = { {NULL, NULL} }; +static void +_del_pre_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + evas_object_event_callback_del_full(wd->btn, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); + evas_object_smart_callback_del(wd->btn, "clicked", _button_clicked); +} + static void _del_hook(Evas_Object *obj) { @@ -274,6 +288,7 @@ elm_fileselector_button_add(Evas_Object *parent) elm_widget_sub_object_add(parent, obj); elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); elm_widget_data_set(obj, wd); + elm_widget_del_pre_hook_set(obj, _del_pre_hook); elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); diff --git a/legacy/elementary/src/lib/elc_fileselector_entry.c b/legacy/elementary/src/lib/elc_fileselector_entry.c index 653ee490c3..bad2cafd58 100644 --- a/legacy/elementary/src/lib/elc_fileselector_entry.c +++ b/legacy/elementary/src/lib/elc_fileselector_entry.c @@ -62,6 +62,8 @@ SIG_FWD(SELECTION_CUT) SIG_FWD(UNPRESSED) #undef SIG_FWD +static void _del_pre_hook(Evas_Object *obj); +static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl); static void @@ -82,6 +84,17 @@ _ACTIVATED_fwd(void *data, Evas_Object *obj __UNUSED__, void *event_info) evas_object_smart_callback_call(data, SIG_ACTIVATED, event_info); } +static void +_del_pre_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + evas_object_event_callback_del_full + (wd->button, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); + evas_object_event_callback_del_full + (wd->entry, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); +} + static void _del_hook(Evas_Object *obj) { @@ -233,6 +246,7 @@ elm_fileselector_entry_add(Evas_Object *parent) elm_widget_type_set(obj, "fileselector_entry"); elm_widget_sub_object_add(parent, obj); elm_widget_data_set(obj, wd); + elm_widget_del_pre_hook_set(obj, _del_pre_hook); elm_widget_del_hook_set(obj, _del_hook); elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_focus_next_hook_set(obj, _elm_fileselector_entry_focus_next_hook); diff --git a/legacy/elementary/src/lib/elc_hoversel.c b/legacy/elementary/src/lib/elc_hoversel.c index e0b983c10a..6cb93e2ca0 100644 --- a/legacy/elementary/src/lib/elc_hoversel.c +++ b/legacy/elementary/src/lib/elc_hoversel.c @@ -49,6 +49,8 @@ _del_pre_hook(Evas_Object *obj) Elm_Hoversel_Item *item; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; + evas_object_event_callback_del_full(wd->btn, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); elm_hoversel_hover_end(obj); elm_hoversel_hover_parent_set(obj, NULL); EINA_LIST_FREE(wd->items, item) diff --git a/legacy/elementary/src/lib/elm_bubble.c b/legacy/elementary/src/lib/elm_bubble.c index 5c8c5d9ab1..1dfdceba24 100644 --- a/legacy/elementary/src/lib/elm_bubble.c +++ b/legacy/elementary/src/lib/elm_bubble.c @@ -281,6 +281,8 @@ elm_bubble_content_unset(Evas_Object *obj) if (!wd->content) return NULL; content = wd->content; elm_widget_sub_object_del(obj, content); + evas_object_event_callback_del_full(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->bbl, content); wd->content = NULL; return content; @@ -326,6 +328,8 @@ elm_bubble_icon_unset(Evas_Object *obj) if (!wd->icon) return NULL; icon = wd->icon; elm_widget_sub_object_del(obj, icon); + evas_object_event_callback_del_full(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->bbl, icon); wd->icon = NULL; return icon; diff --git a/legacy/elementary/src/lib/elm_button.c b/legacy/elementary/src/lib/elm_button.c index cafc17e91f..7e2ff28a62 100644 --- a/legacy/elementary/src/lib/elm_button.c +++ b/legacy/elementary/src/lib/elm_button.c @@ -215,6 +215,8 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if (!wd->icon) return NULL; Evas_Object *icon = wd->icon; elm_widget_sub_object_del(obj, wd->icon); + evas_object_event_callback_del_full(wd->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->btn, wd->icon); wd->icon = NULL; return icon; diff --git a/legacy/elementary/src/lib/elm_check.c b/legacy/elementary/src/lib/elm_check.c index 7038c71f88..c4e57c8760 100644 --- a/legacy/elementary/src/lib/elm_check.c +++ b/legacy/elementary/src/lib/elm_check.c @@ -246,6 +246,9 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if (!wd->icon) return NULL; Evas_Object *icon = wd->icon; elm_widget_sub_object_del(obj, wd->icon); + evas_object_event_callback_del_full(wd->icon, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->chk, wd->icon); wd->icon = NULL; return icon; diff --git a/legacy/elementary/src/lib/elm_conform.c b/legacy/elementary/src/lib/elm_conform.c index 620b79ed4f..1ccacac6fa 100644 --- a/legacy/elementary/src/lib/elm_conform.c +++ b/legacy/elementary/src/lib/elm_conform.c @@ -160,6 +160,9 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if ((!wd) || (!wd->content)) return NULL; content = wd->content; elm_widget_sub_object_del(obj, wd->content); + evas_object_event_callback_del_full(wd->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->base, wd->content); wd->content = NULL; return content; diff --git a/legacy/elementary/src/lib/elm_flip.c b/legacy/elementary/src/lib/elm_flip.c index e311b7d316..2f3d5cb830 100644 --- a/legacy/elementary/src/lib/elm_flip.c +++ b/legacy/elementary/src/lib/elm_flip.c @@ -1721,6 +1721,9 @@ elm_flip_content_front_unset(Evas_Object *obj) Evas_Object *content = wd->front.content; evas_object_clip_unset(content); elm_widget_sub_object_del(obj, content); + evas_object_event_callback_del_full(content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); evas_object_smart_member_del(content); wd->front.content = NULL; return content; @@ -1736,6 +1739,9 @@ elm_flip_content_back_unset(Evas_Object *obj) Evas_Object *content = wd->back.content; evas_object_clip_unset(content); elm_widget_sub_object_del(obj, content); + evas_object_event_callback_del_full(content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); evas_object_smart_member_del(content); wd->back.content = NULL; return content; diff --git a/legacy/elementary/src/lib/elm_frame.c b/legacy/elementary/src/lib/elm_frame.c index fb1019c354..7dae02bc40 100644 --- a/legacy/elementary/src/lib/elm_frame.c +++ b/legacy/elementary/src/lib/elm_frame.c @@ -162,6 +162,9 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if (!wd->content) return NULL; content = wd->content; elm_widget_sub_object_del(obj, wd->content); + evas_object_event_callback_del_full(wd->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->frm, wd->content); wd->content = NULL; return content; diff --git a/legacy/elementary/src/lib/elm_layout.c b/legacy/elementary/src/lib/elm_layout.c index 461f9764d9..333827052b 100644 --- a/legacy/elementary/src/lib/elm_layout.c +++ b/legacy/elementary/src/lib/elm_layout.c @@ -424,6 +424,9 @@ _content_unset_hook(Evas_Object *obj, const char *part) if (!si->obj) return NULL; content = si->obj; /* si will die in _sub_del due elm_widget_sub_object_del() */ elm_widget_sub_object_del(obj, content); + evas_object_event_callback_del_full(content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, wd); edje_object_part_unswallow(wd->lay, content); return content; } diff --git a/legacy/elementary/src/lib/elm_map.c b/legacy/elementary/src/lib/elm_map.c index 0d2d40c53d..7142d514c3 100644 --- a/legacy/elementary/src/lib/elm_map.c +++ b/legacy/elementary/src/lib/elm_map.c @@ -2556,7 +2556,7 @@ _group_bubble_content_update(Marker_Group *group) elm_scroller_content_set(group->sc, group->bx); - evas_object_event_callback_add(group->sc, EVAS_CALLBACK_RESIZE, + evas_object_event_callback_add(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _bubble_sc_hits_changed_cb, group); } diff --git a/legacy/elementary/src/lib/elm_mapbuf.c b/legacy/elementary/src/lib/elm_mapbuf.c index ab6f152cfd..9e012494d3 100644 --- a/legacy/elementary/src/lib/elm_mapbuf.c +++ b/legacy/elementary/src/lib/elm_mapbuf.c @@ -191,6 +191,9 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if (!wd->content) return NULL; content = wd->content; elm_widget_sub_object_del(obj, content); + evas_object_event_callback_add(content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); evas_object_smart_member_del(content); evas_object_color_set(wd->clip, 0, 0, 0, 0); evas_object_clip_unset(content); diff --git a/legacy/elementary/src/lib/elm_notify.c b/legacy/elementary/src/lib/elm_notify.c index 116d475a21..3b2de35eab 100644 --- a/legacy/elementary/src/lib/elm_notify.c +++ b/legacy/elementary/src/lib/elm_notify.c @@ -456,6 +456,11 @@ _content_unset_hook(Evas_Object *obj, const char *part __UNUSED__) if (!wd->content) return NULL; content = wd->content; elm_widget_sub_object_del(obj, wd->content); + evas_object_event_callback_del_full(wd->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); + evas_object_event_callback_del_full(wd->content, EVAS_CALLBACK_RESIZE, + _content_resize, obj); edje_object_part_unswallow(wd->notify, wd->content); wd->content = NULL; return content; diff --git a/legacy/elementary/src/lib/elm_progressbar.c b/legacy/elementary/src/lib/elm_progressbar.c index 3ee3b0c54e..e6016629e2 100644 --- a/legacy/elementary/src/lib/elm_progressbar.c +++ b/legacy/elementary/src/lib/elm_progressbar.c @@ -351,6 +351,8 @@ elm_progressbar_icon_unset(Evas_Object *obj) if (!wd->icon) return NULL; Evas_Object *icon = wd->icon; elm_widget_sub_object_del(obj, wd->icon); + evas_object_event_callback_del_full(wd->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->progressbar, wd->icon); wd->icon = NULL; return icon; diff --git a/legacy/elementary/src/lib/elm_radio.c b/legacy/elementary/src/lib/elm_radio.c index 99f1ab3f81..83e2e746f8 100644 --- a/legacy/elementary/src/lib/elm_radio.c +++ b/legacy/elementary/src/lib/elm_radio.c @@ -402,6 +402,8 @@ elm_radio_icon_unset(Evas_Object *obj) if (!wd->icon) return NULL; Evas_Object *icon = wd->icon; elm_widget_sub_object_del(obj, wd->icon); + evas_object_event_callback_del_full(wd->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->radio, wd->icon); wd->icon = NULL; return icon; diff --git a/legacy/elementary/src/lib/elm_scroller.c b/legacy/elementary/src/lib/elm_scroller.c index d4487c470b..8392e96607 100644 --- a/legacy/elementary/src/lib/elm_scroller.c +++ b/legacy/elementary/src/lib/elm_scroller.c @@ -526,6 +526,9 @@ elm_scroller_content_unset(Evas_Object *obj) if (!wd->content) return NULL; content = wd->content; elm_widget_sub_object_del(obj, wd->content); + evas_object_event_callback_del_full(wd->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(elm_smart_scroller_edje_object_get(wd->scr), wd->content); wd->content = NULL; return content; diff --git a/legacy/elementary/src/lib/elm_slider.c b/legacy/elementary/src/lib/elm_slider.c index 044ce93d48..cc634ca0ea 100644 --- a/legacy/elementary/src/lib/elm_slider.c +++ b/legacy/elementary/src/lib/elm_slider.c @@ -593,6 +593,9 @@ elm_slider_icon_unset(Evas_Object *obj) if (wd->icon) { elm_widget_sub_object_del(obj, wd->icon); + evas_object_event_callback_del_full(wd->icon, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); ret = wd->icon; edje_object_part_unswallow(wd->slider, wd->icon); edje_object_signal_emit(wd->slider, "elm,state,icon,hidden", "elm"); @@ -843,6 +846,9 @@ elm_slider_end_unset(Evas_Object *obj) if (wd->end) { elm_widget_sub_object_del(obj, wd->end); + evas_object_event_callback_del_full(wd->end, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); ret = wd->end; edje_object_part_unswallow(wd->slider, wd->end); edje_object_signal_emit(wd->slider, "elm,state,end,hidden", "elm"); diff --git a/legacy/elementary/src/lib/elm_slideshow.c b/legacy/elementary/src/lib/elm_slideshow.c index 69690c2817..71876d6945 100644 --- a/legacy/elementary/src/lib/elm_slideshow.c +++ b/legacy/elementary/src/lib/elm_slideshow.c @@ -39,6 +39,7 @@ struct _Widget_Data }; static const char *widtype = NULL; +static void _del_pre_hook(Evas_Object *obj); static void _del_hook(Evas_Object *obj); static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl); static void _theme_hook(Evas_Object *obj); @@ -97,6 +98,15 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty return EINA_FALSE; } +static void +_del_pre_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + evas_object_event_callback_del_full(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); +} + static void _del_hook(Evas_Object *obj) { @@ -346,6 +356,7 @@ elm_slideshow_add(Evas_Object *parent) elm_widget_sub_object_add(parent, obj); elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); elm_widget_data_set(obj, wd); + elm_widget_del_pre_hook_set(obj, _del_pre_hook); elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, EINA_TRUE); diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index 2d3237b6ff..62f9392f8c 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -2612,6 +2612,9 @@ elm_win_inwin_content_unset(Evas_Object *obj) if (!wd->content) return NULL; Evas_Object *content = wd->content; elm_widget_sub_object_del(obj, wd->content); + evas_object_event_callback_del_full(wd->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); edje_object_part_unswallow(wd->frm, wd->content); wd->content = NULL; return content;