From 8079af163cef4d0005f9f7df5b95743cff799904 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Mon, 29 Nov 2010 16:55:50 +0900 Subject: [PATCH] [elm_ctxpopup.c] fixed segmentation fault. [changelog] repackaging --- debian/changelog | 8 ++++++++ src/lib/elm_ctxpopup.c | 23 +++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7f8601f..3ae56d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +elementary (1.0.0+svn.51480slp2+build67) unstable; urgency=low + + * fixed ctxpopup problem. + * Git: 165.213.180.234:/git/slp/pkgs/elementary + * Tag: elementary_1.0.0+svn.51480slp2+build67 + + -- ChunEon Park Mon, 29 Nov 2010 16:55:03 +0900 + elementary (1.0.0+svn.51480slp2+build66) unstable; urgency=low * Package upload due to segmented control fix diff --git a/src/lib/elm_ctxpopup.c b/src/lib/elm_ctxpopup.c index ee0d583..5fd8bb0 100644 --- a/src/lib/elm_ctxpopup.c +++ b/src/lib/elm_ctxpopup.c @@ -97,7 +97,7 @@ static void _adjust_pos_y(int indicator_h, Evas_Coord_Point *pos, static void _reset_scroller_size(Widget_Data *wd); static void _hide_ctxpopup(Evas_Object *obj); static void _content_del(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _content_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _content_resize(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _reset_scroller_size(Widget_Data *wd) { @@ -722,6 +722,8 @@ static void _del_pre_hook(Evas_Object *obj) { Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj); if (!wd) return; + fprintf(stderr, "del!\n"); + evas_object_event_callback_del_full(wd->parent, EVAS_CALLBACK_RESIZE, _parent_resize, obj); @@ -740,6 +742,8 @@ static void _del_hook(Evas_Object *obj) Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj); if (!wd) return; + + fprintf(stderr, "del2\n"); elm_ctxpopup_clear(obj); evas_object_del(wd->arrow); evas_object_del(wd->base); @@ -949,9 +953,11 @@ static void _ctxpopup_item_select(void *data, Evas_Object *obj, if (!item) return; if (item->disabled) return; - if (item->func) + + if (item->func) { + _ctxpopup_hide(item->ctxpopup, NULL, item->ctxpopup, NULL); item->func(item->data, item->ctxpopup, item); - _ctxpopup_hide(item->ctxpopup, NULL, item->ctxpopup, NULL); + } } static void _item_obj_create(Elm_Ctxpopup_Item *item, char *group_name) @@ -970,16 +976,17 @@ static void _item_obj_create(Elm_Ctxpopup_Item *item, char *group_name) evas_object_show(item->base); } -static void _content_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) +static void _content_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = (Widget_Data *) elm_widget_data_get(data); Evas_Coord x, y, w, h; if(!wd) return; + evas_object_geometry_get(obj, &x, &y, &w, &h); + evas_object_size_hint_min_set(obj, w, h); + if(wd->visible) { - evas_object_geometry_get(obj, &x, &y, &w, &h); - evas_object_size_hint_min_set(obj, w, h); _sizing_eval(data); } } @@ -1497,7 +1504,7 @@ EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, _content_del, obj); // evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints, obj); - evas_object_event_callback_add(content, EVAS_CALLBACK_RESIZE, _content_changed_size_hints, obj); + evas_object_event_callback_add(content, EVAS_CALLBACK_RESIZE, _content_resize, obj); edje_object_part_swallow(wd->base, "elm.swallow.content", content); elm_widget_sub_object_add(obj, content); @@ -1530,7 +1537,7 @@ elm_ctxpopup_content_unset(Evas_Object *obj) edje_object_part_unswallow(wd->base, content); elm_widget_sub_object_del(obj, content); evas_object_event_callback_del(content, EVAS_CALLBACK_DEL, _content_del); - evas_object_event_callback_del(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints); + evas_object_event_callback_del(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_resize); edje_object_signal_emit(wd->base, "elm,state,content,disable", "elm"); elm_ctxpopup_scroller_disabled_set(obj, EINA_FALSE); -- 2.7.4