From a4996f90ae34b36258561f44f349651f86cd3aec Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 8 Oct 2009 05:26:58 +0000 Subject: [PATCH] 1. remove excess swallows - now edje handles that itself 2. beforfe show.. calc first so initial windowis the right size! SVN revision: 42953 --- legacy/elementary/src/lib/elm_bubble.c | 4 ---- legacy/elementary/src/lib/elm_button.c | 1 - legacy/elementary/src/lib/elm_check.c | 1 - legacy/elementary/src/lib/elm_frame.c | 2 -- legacy/elementary/src/lib/elm_hover.c | 26 --------------------- legacy/elementary/src/lib/elm_index.c | 9 +------ legacy/elementary/src/lib/elm_layout.c | 13 +---------- legacy/elementary/src/lib/elm_notify.c | 2 -- legacy/elementary/src/lib/elm_pager.c | 1 - legacy/elementary/src/lib/elm_progressbar.c | 1 - legacy/elementary/src/lib/elm_radio.c | 3 --- legacy/elementary/src/lib/elm_slider.c | 1 - legacy/elementary/src/lib/elm_spinner.c | 2 ++ legacy/elementary/src/lib/elm_toggle.c | 4 ---- legacy/elementary/src/lib/elm_win.c | 13 ++++++++++- 15 files changed, 16 insertions(+), 67 deletions(-) diff --git a/legacy/elementary/src/lib/elm_bubble.c b/legacy/elementary/src/lib/elm_bubble.c index 781f06b818..b72075996a 100644 --- a/legacy/elementary/src/lib/elm_bubble.c +++ b/legacy/elementary/src/lib/elm_bubble.c @@ -59,10 +59,6 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - if (wd->content) - edje_object_part_swallow(wd->bbl, "elm.swallow.content", wd->content); - if (wd->icon) - edje_object_part_swallow(wd->bbl, "elm.swallow.icon", wd->icon); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_button.c b/legacy/elementary/src/lib/elm_button.c index 36e4fc2b4e..ac34f24c82 100644 --- a/legacy/elementary/src/lib/elm_button.c +++ b/legacy/elementary/src/lib/elm_button.c @@ -85,7 +85,6 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; if (obj != wd->icon) return; - edje_object_part_swallow(wd->btn, "elm.swallow.content", obj); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_check.c b/legacy/elementary/src/lib/elm_check.c index c0ba760edb..39341a2421 100644 --- a/legacy/elementary/src/lib/elm_check.c +++ b/legacy/elementary/src/lib/elm_check.c @@ -98,7 +98,6 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); if (obj != wd->icon) return; - edje_object_part_swallow(wd->chk, "elm.swallow.content", obj); Evas_Coord mw, mh; evas_object_size_hint_min_get(obj, &mw, &mh); _sizing_eval(data); diff --git a/legacy/elementary/src/lib/elm_frame.c b/legacy/elementary/src/lib/elm_frame.c index 55201e4833..2bdd4bc712 100644 --- a/legacy/elementary/src/lib/elm_frame.c +++ b/legacy/elementary/src/lib/elm_frame.c @@ -57,8 +57,6 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - - edje_object_part_swallow(wd->frm, "elm.swallow.content", obj); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_hover.c b/legacy/elementary/src/lib/elm_hover.c index f87cd95aee..9792328d97 100644 --- a/legacy/elementary/src/lib/elm_hover.c +++ b/legacy/elementary/src/lib/elm_hover.c @@ -23,7 +23,6 @@ static void _del_hook(Evas_Object *obj); static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _reval_content(Evas_Object *obj); -static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); static void _hov_show_do(Evas_Object *obj); static void _hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -87,9 +86,7 @@ _sizing_eval(Evas_Object *obj) evas_object_move(wd->cov, x, y); evas_object_resize(wd->cov, w, h); evas_object_size_hint_min_set(wd->offset, x2 - x, y2 - y); - edje_object_part_swallow(wd->cov, "elm.swallow.offset", wd->offset); evas_object_size_hint_min_set(wd->size, w2, h2); - edje_object_part_swallow(wd->cov, "elm.swallow.size", wd->size); } static void @@ -103,23 +100,6 @@ _reval_content(Evas_Object *obj) edje_object_part_swallow(wd->cov, si->swallow, si->obj); } -static void -_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Widget_Data *wd = elm_widget_data_get(data); - const Eina_List *l; - const Subinfo *si; - - EINA_LIST_FOREACH(wd->subs, l, si) - { - if (si->obj == obj) - { - edje_object_part_swallow(wd->cov, si->swallow, si->obj); - break; - } - } -} - static void _sub_del(void *data, Evas_Object *obj, void *event_info) { @@ -132,9 +112,6 @@ _sub_del(void *data, Evas_Object *obj, void *event_info) { if (si->obj == sub) { - evas_object_event_callback_del(sub, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _changed_size_hints); wd->subs = eina_list_remove_list(wd->subs, l); eina_stringshare_del(si->swallow); free(si); @@ -390,9 +367,6 @@ elm_hover_content_set(Evas_Object *obj, const char *swallow, Evas_Object *conten { elm_widget_sub_object_add(obj, content); edje_object_part_swallow(wd->cov, buf, content); - evas_object_event_callback_add(content, - EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _changed_size_hints, obj); si = ELM_NEW(Subinfo); si->swallow = eina_stringshare_add(buf); si->obj = content; diff --git a/legacy/elementary/src/lib/elm_index.c b/legacy/elementary/src/lib/elm_index.c index e8fe4e9593..cd6ab6c441 100644 --- a/legacy/elementary/src/lib/elm_index.c +++ b/legacy/elementary/src/lib/elm_index.c @@ -194,7 +194,6 @@ _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level) Item *it, **itfit = NULL; Evas_Coord mw, mh, w, h; int i = 0; - char buf[1024]; if (wd->level_active[level]) return; evas_object_geometry_get(box, NULL, NULL, &w, &h); @@ -235,10 +234,7 @@ _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level) } } } - snprintf(buf, sizeof(buf), "elm.swallow.index.%i", level); -// evas_object_size_hint_min_get(box, &mw, &mh); -// evas_object_size_hint_min_set(box, mw, 0); - edje_object_part_swallow(wd->base, buf, box); + evas_object_smart_calculate(box); wd->level_active[level] = 1; } @@ -248,7 +244,6 @@ _index_box_clear(Evas_Object *obj, Evas_Object *box, int level) Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Item *it; - char buf[1024]; if (!wd->level_active[level]) return; EINA_LIST_FOREACH(wd->items, l, it) @@ -258,8 +253,6 @@ _index_box_clear(Evas_Object *obj, Evas_Object *box, int level) evas_object_del(it->base); it->base = 0; } - snprintf(buf, sizeof(buf), "elm.swallow.index.%i", level); - edje_object_part_swallow(wd->base, buf, box); wd->level_active[level] = 0; } diff --git a/legacy/elementary/src/lib/elm_layout.c b/legacy/elementary/src/lib/elm_layout.c index b7ac5d50ae..c920a46966 100644 --- a/legacy/elementary/src/lib/elm_layout.c +++ b/legacy/elementary/src/lib/elm_layout.c @@ -70,18 +70,7 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - const Eina_List *l; - const Subinfo *si; - - EINA_LIST_FOREACH(wd->subs, l, si) - { - if (si->obj == obj) - { - edje_object_part_swallow(wd->lay, si->swallow, obj); - _sizing_eval(data); - break; - } - } + _sizing_eval(data); } static void diff --git a/legacy/elementary/src/lib/elm_notify.c b/legacy/elementary/src/lib/elm_notify.c index 5490e097e8..af4c9692ce 100644 --- a/legacy/elementary/src/lib/elm_notify.c +++ b/legacy/elementary/src/lib/elm_notify.c @@ -66,8 +66,6 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - - edje_object_part_swallow(wd->notify, "elm.swallow.content", obj); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_pager.c b/legacy/elementary/src/lib/elm_pager.c index 11e19b741c..d264d78f85 100644 --- a/legacy/elementary/src/lib/elm_pager.c +++ b/legacy/elementary/src/lib/elm_pager.c @@ -80,7 +80,6 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Item *it = data; - edje_object_part_swallow(it->base, "elm.swallow.content", it->content); edje_object_size_min_calc(it->base, &it->minw, &it->minh); _sizing_eval(it->obj); } diff --git a/legacy/elementary/src/lib/elm_progressbar.c b/legacy/elementary/src/lib/elm_progressbar.c index af3426ad22..c164d8cc96 100644 --- a/legacy/elementary/src/lib/elm_progressbar.c +++ b/legacy/elementary/src/lib/elm_progressbar.c @@ -119,7 +119,6 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); if (obj != wd->icon) return; - edje_object_part_swallow(wd->progressbar, "elm.swallow.content", obj); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_radio.c b/legacy/elementary/src/lib/elm_radio.c index 8587f482f1..1e1712912c 100644 --- a/legacy/elementary/src/lib/elm_radio.c +++ b/legacy/elementary/src/lib/elm_radio.c @@ -125,9 +125,6 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); if (obj != wd->icon) return; - edje_object_part_swallow(wd->chk, "elm.swallow.content", obj); - Evas_Coord mw, mh; - evas_object_size_hint_min_get(obj, &mw, &mh); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_slider.c b/legacy/elementary/src/lib/elm_slider.c index a3af2d062e..32b3ab1102 100644 --- a/legacy/elementary/src/lib/elm_slider.c +++ b/legacy/elementary/src/lib/elm_slider.c @@ -124,7 +124,6 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); if (obj != wd->icon) return; - edje_object_part_swallow(wd->slider, "elm.swallow.content", obj); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_spinner.c b/legacy/elementary/src/lib/elm_spinner.c index 8705b38af6..2a015571b4 100644 --- a/legacy/elementary/src/lib/elm_spinner.c +++ b/legacy/elementary/src/lib/elm_spinner.c @@ -67,6 +67,8 @@ static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + _elm_theme_set(wd->spinner, "spinner", "base", elm_widget_style_get(obj)); + edje_object_part_swallow(wd->spinner, "elm.swallow.entry", wd->ent); _write_label(obj); edje_object_message_signal_process(wd->spinner); edje_object_scale_set(wd->spinner, elm_widget_scale_get(obj) * _elm_config->scale); diff --git a/legacy/elementary/src/lib/elm_toggle.c b/legacy/elementary/src/lib/elm_toggle.c index 874c2e5989..ea0fae4e1d 100644 --- a/legacy/elementary/src/lib/elm_toggle.c +++ b/legacy/elementary/src/lib/elm_toggle.c @@ -84,11 +84,7 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - Evas_Coord mw, mh; - if (obj != wd->icon) return; - edje_object_part_swallow(wd->tgl, "elm.swallow.content", obj); - evas_object_size_hint_min_get(obj, &mw, &mh); _sizing_eval(data); } diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index 2460302e2a..b5eb389d15 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -22,6 +22,7 @@ struct _Elm_Win }; static void _elm_win_obj_callback_del(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _elm_win_obj_callback_show(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _elm_win_resize(Ecore_Evas *ee); static void _elm_win_delete_request(Ecore_Evas *ee); static void _elm_win_resize_job(void *data); @@ -107,6 +108,15 @@ _elm_win_obj_callback_del(void *data, Evas *e, Evas_Object *obj, void *event_inf free(win); } +static void +_elm_win_obj_callback_show(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + // this is called to make sure all smart containers have calculated their + // sizes BEFORE we show the window to make sure it initially appears at + // our desired size (ie min size is known first) + evas_call_smarts_calculate(e); +} + static void _elm_win_delete_request(Ecore_Evas *ee) { @@ -356,6 +366,8 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) evas_object_layer_set(win->win_obj, 50); evas_object_pass_events_set(win->win_obj, 1); + evas_object_event_callback_add(win->win_obj, EVAS_CALLBACK_SHOW, + _elm_win_obj_callback_show, win); ecore_evas_object_associate(win->ee, win->win_obj, ECORE_EVAS_OBJECT_ASSOCIATE_BASE | ECORE_EVAS_OBJECT_ASSOCIATE_STACK | @@ -700,7 +712,6 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); - edje_object_part_swallow(wd->frm, "elm.swallow.content", obj); _sizing_eval(data); }