From: Bora Hwang Date: Wed, 15 Jan 2014 05:42:13 +0000 (+0900) Subject: ctxpopup: set smart member relationship for objects in ctxpopup X-Git-Tag: v1.9.0-alpha1~202 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=010bb395dae6676a1e8babf7830319038a8006ff;p=platform%2Fupstream%2Felementary.git ctxpopup: set smart member relationship for objects in ctxpopup Summary: to support mouse_down/up/move callbacks of ctxpopup, all objects in ctxpopup should be in smart relationship with ctxpopup. Also, with this patch, bg object and arrow object don't have to be called with evas_object_show or evas_object_hide when ctxpopup is shown or hidden Reviewers: Hermet, seoz, raster, thiepha Reviewed By: seoz Differential Revision: https://phab.enlightenment.org/D458 --- diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c index d9b833b..98ca315 100644 --- a/src/lib/elc_ctxpopup.c +++ b/src/lib/elc_ctxpopup.c @@ -981,9 +981,6 @@ _on_show(void *data EINA_UNUSED, sd->emitted = EINA_FALSE; sd->visible = EINA_TRUE; - evas_object_show(sd->bg); - evas_object_show(sd->arrow); - _show_signals_emit(obj, sd->dir); elm_layout_sizing_eval(obj); @@ -1001,9 +998,6 @@ _on_hide(void *data EINA_UNUSED, if (!sd->visible) return; - evas_object_hide(sd->bg); - evas_object_hide(sd->arrow); - sd->visible = EINA_FALSE; sd->list_visible = EINA_FALSE; } @@ -1014,10 +1008,6 @@ _on_move(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { - ELM_CTXPOPUP_DATA_GET(obj, sd); - - if (sd->visible) evas_object_show(sd->arrow); - elm_layout_sizing_eval(obj); } @@ -1044,9 +1034,6 @@ _list_resize_cb(void *data, sd->list_visible = EINA_TRUE; - evas_object_show(sd->bg); - evas_object_show(sd->arrow); - elm_layout_sizing_eval(data); } @@ -1057,7 +1044,9 @@ _ctxpopup_restack_cb(void *data EINA_UNUSED, void *event_info EINA_UNUSED) { ELM_CTXPOPUP_DATA_GET(obj, sd); - evas_object_stack_below(sd->bg, obj); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); + + evas_object_stack_below(sd->bg, wd->resize_obj); } static void @@ -1120,6 +1109,7 @@ static void _elm_ctxpopup_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) { Elm_Ctxpopup_Smart_Data *priv = _pd; + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); elm_widget_sub_object_parent_add(obj); @@ -1136,13 +1126,14 @@ _elm_ctxpopup_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_widget_theme_object_set(obj, priv->bg, "ctxpopup", "bg", "default"); edje_object_signal_callback_add (priv->bg, "elm,action,click", "*", _bg_clicked_cb, obj); - - evas_object_stack_below(priv->bg, obj); + evas_object_smart_member_add(priv->bg, obj); + evas_object_stack_below(priv->bg, wd->resize_obj); //Arrow priv->arrow = edje_object_add(evas_object_evas_get(obj)); elm_widget_theme_object_set (obj, priv->arrow, "ctxpopup", "arrow", "default"); + evas_object_smart_member_add(priv->arrow, obj); priv->dir_priority[0] = ELM_CTXPOPUP_DIRECTION_UP; priv->dir_priority[1] = ELM_CTXPOPUP_DIRECTION_LEFT;