elementary/widget - plase update display mode whenever sub object is set

This commit is contained in:
ChunEon Park 2013-05-24 18:34:37 +09:00
parent 86f7d566c6
commit 71bee6ddeb
1 changed files with 9 additions and 8 deletions

View File

@ -1037,6 +1037,8 @@ _elm_widget_sub_object_add(Eo *obj, void *_pd, va_list *list)
if (elm_widget_focus_get(sobj)) _parents_focus(obj); if (elm_widget_focus_get(sobj)) _parents_focus(obj);
} }
elm_widget_display_mode_set(sobj,
evas_object_size_hint_display_mode_get(obj));
end: end:
if (ret) *ret = EINA_TRUE; if (ret) *ret = EINA_TRUE;
} }
@ -4719,22 +4721,21 @@ static void
_elm_widget_display_mode_set(Eo *obj, void *_pd, va_list *list) _elm_widget_display_mode_set(Eo *obj, void *_pd, va_list *list)
{ {
Evas_Display_Mode dispmode = va_arg(*list, Evas_Display_Mode); Evas_Display_Mode dispmode = va_arg(*list, Evas_Display_Mode);
Evas_Display_Mode prev_dispmode;
Evas_Object *child; Evas_Object *child;
Eina_List *l; Eina_List *l;
Elm_Widget_Smart_Data *sd = _pd; Elm_Widget_Smart_Data *sd = _pd;
if (evas_object_size_hint_display_mode_get(obj) == dispmode) return; prev_dispmode = evas_object_size_hint_display_mode_get(obj);
if ((prev_dispmode == dispmode) ||
(prev_dispmode == EVAS_DISPLAY_MODE_DONT_CHANGE)) return;
evas_object_size_hint_display_mode_set(obj, dispmode); evas_object_size_hint_display_mode_set(obj, dispmode);
//TODO: Need to deal with EVAS_DISPLAY_MODE_INHERIT efficiently.
EINA_LIST_FOREACH (sd->subobjs, l, child) EINA_LIST_FOREACH (sd->subobjs, l, child)
{ elm_widget_display_mode_set(child, dispmode);
if (evas_object_size_hint_display_mode_get(child)
!= EVAS_DISPLAY_MODE_DONT_CHANGE)
elm_widget_display_mode_set(child, dispmode);
}
} }
EAPI void EAPI void