elementary/widget - don't handle tthe resize objects in widget infrastructure. Acutally these resize objects are sub objects so we don't need to care them separately. This caused overhead in some cases(ie, theme change)

SVN revision: 83990
This commit is contained in:
ChunEon Park 2013-02-16 13:39:59 +00:00
parent 1f92ae407d
commit 844b5805ff
15 changed files with 73 additions and 107 deletions

View File

@ -1024,8 +1024,12 @@
2013-02-16 Paulo C. A. Cavalcanti Jr
* Fix elm_config to properly check file type.
* Fix elm_config to properly check file type.
2013-02-16 ChunEon Park (Hermet)
* Improve naviframe to not apply items'style multiple times.
2013-02-16 ChunEon Park (Hermet)
* Don't handle the resize objects in widget infrastructure. Actually resize objects are sub objects so we don't need to care them separately. this causes overhead in some cases.

View File

@ -70,6 +70,7 @@ Improvements:
* Ctxpopup will be dismissed when language is changed.
* Popup is now a focusable object.
* Improve naviframe to not apply items' style multiple times when theme/styles are changed.
* Don't handle the resize objects in widget infrastructure. Actually resize objects are sub objects so we don't need to care them separately. This causes overhead in some cases(ie, theme change..).
Fixes:

View File

@ -398,7 +398,7 @@ static void
_elm_box_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
wd->resize_obj = evas_object_box_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, evas_object_box_add(evas_object_evas_get(obj)));
evas_object_box_layout_set(wd->resize_obj, _elm_box_custom_layout, obj, NULL);

View File

@ -1249,21 +1249,19 @@ static void
_elm_diskselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Diskselector_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
Evas *evas;
Evas_Object *blank;
Evas_Object *blank, *edje;
evas = evas_object_evas_get(obj);
evas_event_freeze(evas);
wd->resize_obj =
edje_object_add(evas_object_evas_get(obj));
edje = edje_object_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, edje);
eo_do_super(obj, evas_obj_smart_add());
elm_widget_theme_object_set
(obj, wd->resize_obj, "diskselector", "base",
elm_widget_style_get(obj));
(obj, edje, "diskselector", "base", elm_widget_style_get(obj));
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(priv->hit_rect, obj);
@ -1276,7 +1274,7 @@ _elm_diskselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE);
eo_do(obj, elm_scrollable_interface_objects_set(wd->resize_obj, priv->hit_rect));
eo_do(obj, elm_scrollable_interface_objects_set(edje, priv->hit_rect));
priv->len_side = 3;

View File

@ -194,10 +194,10 @@ _set_render_policy_callback(Evas_Object *obj)
static void
_elm_glview_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
// Create image to render Evas_GL Surface
wd->resize_obj = evas_object_image_filled_add(evas_object_evas_get(obj));
evas_object_image_size_set(wd->resize_obj, 1, 1);
Evas_Object *img = evas_object_image_filled_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, img);
evas_object_image_size_set(img, 1, 1);
eo_do_super(obj, evas_obj_smart_add());

View File

@ -127,8 +127,8 @@ static void
_elm_grid_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
wd->resize_obj = evas_object_grid_add(evas_object_evas_get(obj));
Evas_Object *grid = evas_object_grid_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, grid);
evas_object_grid_size_set(wd->resize_obj, 100, 100);
eo_do_super(obj, evas_obj_smart_add());

View File

@ -1335,19 +1335,18 @@ _on_size_evaluate_signal(void *data,
static void
_elm_layout_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
Evas_Object *edje;
/* has to be there *before* parent's smart_add() */
wd->resize_obj =
edje_object_add(evas_object_evas_get(obj));
edje = edje_object_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, edje);
eo_do_super(obj, evas_obj_smart_add());
elm_widget_can_focus_set(obj, EINA_FALSE);
edje_object_signal_callback_add
(wd->resize_obj, "size,eval", "elm",
_on_size_evaluate_signal, obj);
(edje, "size,eval", "elm", _on_size_evaluate_signal, obj);
eo_do(obj, elm_obj_layout_sizing_eval());
}

View File

@ -3938,18 +3938,17 @@ _elm_map_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Evas_Coord minw, minh;
Elm_Map_Pan_Smart_Data *pan_data;
Evas_Object *edje;
Elm_Map_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
wd->resize_obj =
edje_object_add(evas_object_evas_get(obj));
edje = edje_object_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, edje);
eo_do_super(obj, evas_obj_smart_add());
elm_widget_theme_object_set
(obj, wd->resize_obj, "map", "base",
elm_widget_style_get(obj));
(obj, edje, "map", "base", elm_widget_style_get(obj));
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(priv->hit_rect, obj);
@ -3970,7 +3969,7 @@ _elm_map_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
(obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, priv);
eo_do(obj,
elm_scrollable_interface_objects_set(wd->resize_obj, priv->hit_rect),
elm_scrollable_interface_objects_set(edje, priv->hit_rect),
elm_scrollable_interface_wheel_disabled_set(EINA_TRUE),
elm_scrollable_interface_bounce_allow_set(
_elm_config->thumbscroll_bounce_enable,
@ -3991,7 +3990,7 @@ _elm_map_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
eo_do(obj, elm_scrollable_interface_extern_pan_set(priv->pan_obj));
edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
edje_object_size_min_calc(edje, &minw, &minh);
evas_object_size_hint_min_set(obj, minw, minh);
priv->g_layer = elm_gesture_layer_add(obj);

View File

@ -233,16 +233,14 @@ static void
_elm_mapbuf_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Mapbuf_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
wd->resize_obj =
evas_object_rectangle_add(evas_object_evas_get(obj));
Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, rect);
eo_do_super(obj, evas_obj_smart_add());
evas_object_static_clip_set(wd->resize_obj, EINA_TRUE);
evas_object_pass_events_set(wd->resize_obj, EINA_TRUE);
evas_object_color_set(wd->resize_obj, 0, 0, 0, 0);
evas_object_static_clip_set(rect, EINA_TRUE);
evas_object_pass_events_set(rect, EINA_TRUE);
evas_object_color_set(rect, 0, 0, 0, 0);
priv->alpha = EINA_TRUE;
priv->smooth = EINA_TRUE;

View File

@ -1293,18 +1293,18 @@ _elm_photocam_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
Evas_Coord minw, minh;
Elm_Photocam_Pan_Smart_Data *pan_data;
Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
Evas_Object *edje;
Elm_Photocam_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
wd->resize_obj =
edje_object_add(evas_object_evas_get(obj));
edje = edje_object_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, edje);
eo_do_super(obj, evas_obj_smart_add());
elm_widget_theme_object_set
(obj, wd->resize_obj, "photocam", "base",
elm_widget_style_get(obj));
(obj, edje, "photocam", "base", elm_widget_style_get(obj));
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(priv->hit_rect, obj);
@ -1317,8 +1317,7 @@ _elm_photocam_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE);
eo_do(obj, elm_scrollable_interface_objects_set
(wd->resize_obj, priv->hit_rect));
eo_do(obj, elm_scrollable_interface_objects_set(edje, priv->hit_rect));
eo_do(obj,
elm_scrollable_interface_animate_start_cb_set(_scroll_animate_start_cb),
@ -1358,7 +1357,7 @@ _elm_photocam_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
evas_object_event_callback_add
(priv->img, EVAS_CALLBACK_IMAGE_PRELOADED, _main_img_preloaded_cb, obj);
edje_object_size_min_calc(wd->resize_obj, &minw, &minh);
edje_object_size_min_calc(edje, &minw, &minh);
evas_object_size_hint_min_set(obj, minw, minh);
_sizing_eval(obj);

View File

@ -178,13 +178,13 @@ _elm_table_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
static void
_elm_table_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{
Elm_Widget_Smart_Data *priv = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
Evas_Object *table;
priv->resize_obj = evas_object_table_add(evas_object_evas_get(obj));
table = evas_object_table_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, table);
evas_object_event_callback_add
(priv->resize_obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_on_size_hints_changed, obj);
(table, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_size_hints_changed, obj);
eo_do_super(obj, evas_obj_smart_add());

View File

@ -2274,16 +2274,15 @@ static void
_elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Toolbar_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
Evas_Object *edje;
wd->resize_obj =
edje_object_add(evas_object_evas_get(obj));
edje = edje_object_add(evas_object_evas_get(obj));
elm_widget_resize_object_set(obj, edje);
eo_do_super(obj, evas_obj_smart_add());
elm_widget_theme_object_set
(obj, wd->resize_obj, "toolbar", "base",
elm_widget_style_get(obj));
(obj, edje, "toolbar", "base", elm_widget_style_get(obj));
priv->hit_rect = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(priv->hit_rect, obj);
@ -2296,7 +2295,7 @@ _elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE);
eo_do(obj, elm_scrollable_interface_objects_set(wd->resize_obj, priv->hit_rect));
eo_do(obj, elm_scrollable_interface_objects_set(edje, priv->hit_rect));
priv->standard_priority = -99999;
@ -2308,17 +2307,13 @@ _elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_scrollable_interface_drag_start_cb_set(_drag_start_cb));
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,left", "elm",
_elm_toolbar_action_left_cb, obj);
(edje, "elm,action,left", "elm", _elm_toolbar_action_left_cb, obj);
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,right", "elm",
_elm_toolbar_action_right_cb, obj);
(edje, "elm,action,right", "elm", _elm_toolbar_action_right_cb, obj);
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,up", "elm",
_elm_toolbar_action_up_cb, obj);
(edje, "elm,action,up", "elm", _elm_toolbar_action_up_cb, obj);
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,down", "elm",
_elm_toolbar_action_down_cb, obj);
(edje, "elm,action,down", "elm", _elm_toolbar_action_down_cb, obj);
priv->shrink_mode = ELM_TOOLBAR_SHRINK_NONE;
priv->theme_icon_size = _elm_toolbar_icon_size_get(obj);

View File

@ -1127,51 +1127,53 @@ static void
_elm_web_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Web_Smart_Data *priv = _pd;
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
Evas_Object *resize_obj;
#ifdef HAVE_ELEMENTARY_WEB
wd->resize_obj = _view_add(obj);
resize_obj = _view_add(obj);
#else
wd->resize_obj = elm_label_add(obj);
resize_obj = elm_label_add(obj);
elm_widget_resize_object_set(obj, resize_obj);
elm_object_text_set
(wd->resize_obj, "WebKit not supported!");
evas_object_show(wd->resize_obj);
(resize_obj, "WebKit not supported!");
evas_object_show(resize_obj);
#endif
eo_do_super(obj, evas_obj_smart_add());
#ifdef HAVE_ELEMENTARY_WEB
ewk_view_setting_user_agent_set
(wd->resize_obj, ELM_WEB_USER_AGENT);
(resize_obj, ELM_WEB_USER_AGENT);
priv->input_method = ELM_WIN_KEYBOARD_OFF;
evas_object_smart_callback_add
(wd->resize_obj, "inputmethod,changed",
(resize_obj, "inputmethod,changed",
_ewk_view_inputmethod_change_cb, priv);
evas_object_smart_callback_add
(wd->resize_obj, "load,started",
(resize_obj, "load,started",
_ewk_view_load_started_cb, priv);
evas_object_smart_callback_add
(wd->resize_obj, "popup,create",
(resize_obj, "popup,create",
_ewk_view_popup_create_cb, priv);
evas_object_smart_callback_add
(wd->resize_obj, "load,finished",
(resize_obj, "load,finished",
_ewk_view_load_finished_cb, priv);
evas_object_smart_callback_add
(wd->resize_obj, "viewport,changed",
(resize_obj, "viewport,changed",
_ewk_view_viewport_changed_cb, priv);
evas_object_smart_callback_add
(wd->resize_obj, "view,resized",
(resize_obj, "view,resized",
_ewk_view_resized_cb, priv);
priv->inwin_mode = _elm_config->inwin_dialogs_enable;
priv->zoom.min =
ewk_view_zoom_range_min_get(wd->resize_obj);
ewk_view_zoom_range_min_get(resize_obj);
priv->zoom.max =
ewk_view_zoom_range_max_get(wd->resize_obj);
ewk_view_zoom_range_max_get(resize_obj);
priv->zoom.current = 1.0;
_view_smart_callback_proxy(wd->resize_obj, obj);
_view_smart_callback_proxy(resize_obj, obj);
eo_do(obj, elm_wdg_theme(NULL));
elm_widget_can_focus_set(obj, EINA_TRUE);

View File

@ -110,7 +110,7 @@ _elm_web_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
Elm_Widget_Smart_Data *wd = eo_data_get(obj, ELM_OBJ_WIDGET_CLASS);
#ifdef HAVE_ELEMENTARY_WEB
wd->resize_obj = _view_add(obj);
elm_widget_resize_object_set(obj, _view_add(obj));
eo_do_super(obj, evas_obj_smart_add());

View File

@ -759,8 +759,6 @@ elm_widget_theme(Evas_Object *obj)
EINA_LIST_FOREACH(sd->subobjs, l, child)
if (_elm_widget_is(child)) ret &= elm_widget_theme(child);
if (sd->resize_obj && _elm_widget_is(sd->resize_obj))
ret &= elm_widget_theme(sd->resize_obj);
if (sd->hover_obj) ret &= elm_widget_theme(sd->hover_obj);
EINA_LIST_FOREACH(sd->tooltips, l, tt)
@ -809,7 +807,6 @@ elm_widget_theme_specific(Evas_Object *obj,
if (!force) return;
EINA_LIST_FOREACH(sd->subobjs, l, child)
elm_widget_theme_specific(child, th, force);
if (sd->resize_obj) elm_widget_theme(sd->resize_obj);
if (sd->hover_obj) elm_widget_theme(sd->hover_obj);
EINA_LIST_FOREACH(sd->tooltips, l, tt)
elm_tooltip_theme(tt);
@ -2958,14 +2955,6 @@ _elm_widget_focus_set(Eo *obj, void *_pd, va_list *list)
break;
}
}
if (!l)
{
if ((_is_focusable(sd->resize_obj)) &&
(!elm_widget_disabled_get(sd->resize_obj)))
{
elm_widget_focus_set(sd->resize_obj, first);
}
}
}
}
@ -3107,12 +3096,8 @@ _elm_widget_top_win_focused_set(Evas_Object *obj,
API_ENTRY return;
if (sd->top_win_focused == top_win_focused) return;
if (sd->resize_obj)
_elm_widget_top_win_focused_set(sd->resize_obj, top_win_focused);
EINA_LIST_FOREACH(sd->subobjs, l, child)
{
_elm_widget_top_win_focused_set(child, top_win_focused);
}
_elm_widget_top_win_focused_set(child, top_win_focused);
sd->top_win_focused = top_win_focused;
}
@ -3747,7 +3732,6 @@ _elm_widget_translate(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list
EINA_LIST_FOREACH(sd->subobjs, l, child)
elm_widget_translate(child);
if (sd->resize_obj) elm_widget_translate(sd->resize_obj);
if (sd->hover_obj) elm_widget_translate(sd->hover_obj);
#ifdef HAVE_GETTEXT
EINA_LIST_FOREACH(sd->translate_strings, l, ts)
@ -4212,14 +4196,6 @@ _widget_name_find(const Evas_Object *obj,
INTERNAL_ENTRY NULL;
if (!_elm_widget_is(obj)) return NULL;
if (sd->resize_obj)
{
s = evas_object_name_get(sd->resize_obj);
if ((s) && (!strcmp(s, name))) return sd->resize_obj;
if ((recurse != 0) &&
((child = _widget_name_find(sd->resize_obj, name, recurse - 1))))
return child;
}
EINA_LIST_FOREACH(sd->subobjs, l, child)
{
s = evas_object_name_get(child);
@ -4562,11 +4538,11 @@ _elm_widget_orientation_set(Eo *obj __UNUSED__, void *_pd, va_list *list)
sd->orient_mode = orient_mode;
eo_do(obj, elm_wdg_theme(NULL));
EINA_LIST_FOREACH (sd->subobjs, l, child)
elm_widget_orientation_set(child, orient_mode);
eo_do(obj, elm_wdg_theme(NULL));
if (ret) *ret = EINA_TRUE;
}
@ -5365,13 +5341,8 @@ _sub_obj_tree_dump(const Evas_Object *obj,
printf("+ %s(%p)\n",
elm_widget_type_get(obj),
obj);
if (sd->resize_obj)
_sub_obj_tree_dump(sd->resize_obj, lvl + 1);
EINA_LIST_FOREACH(sd->subobjs, l, obj)
{
if (obj != sd->resize_obj)
_sub_obj_tree_dump(obj, lvl + 1);
}
_sub_obj_tree_dump(obj, lvl + 1);
}
else
printf("+ %s(%p)\n", evas_object_type_get(obj), obj);