From: WooHyun Jung Date: Tue, 6 Dec 2011 02:29:33 +0000 (+0900) Subject: [*][elm_entry] The first refactoring for speed up of elm_entry_add X-Git-Tag: REL_F_I9500_20111209_1~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa2548b2aeb66446609d510031ccb9ec88cf0d2c;p=framework%2Fuifw%2Felementary.git [*][elm_entry] The first refactoring for speed up of elm_entry_add --- diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index 31fcf66..70a596e 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -84,6 +84,8 @@ struct _Widget_Data Eina_Bool autosave : 1; Eina_Bool usedown : 1; Eina_Bool scroll : 1; + Eina_Bool h_bounce : 1; + Eina_Bool v_bounce : 1; Eina_Bool input_panel_enable : 1; Eina_Bool autoreturnkey : 1; Eina_Bool autoperiod : 1; @@ -572,14 +574,14 @@ _theme_hook(Evas_Object *obj) edje_object_signal_emit(wd->ent, "elm,action,focus", "elm"); edje_object_message_signal_process(wd->ent); edje_object_scale_set(wd->ent, elm_widget_scale_get(obj) * _elm_config->scale); - elm_smart_scroller_mirrored_set(wd->scroller, elm_widget_mirrored_get(obj)); - elm_smart_scroller_object_theme_set(obj, wd->scroller, "scroller", "entry", - elm_widget_style_get(obj)); if (wd->scroll) { const char *str; Evas_Object *edj; + elm_smart_scroller_mirrored_set(wd->scroller, elm_widget_mirrored_get(obj)); + elm_smart_scroller_object_theme_set(obj, wd->scroller, "scroller", "entry", + elm_widget_style_get(obj)); edj = elm_smart_scroller_edje_object_get(wd->scroller); str = edje_object_data_get(edj, "focus_highlight"); if ((str) && (!strcmp(str, "on"))) @@ -2964,22 +2966,13 @@ elm_entry_add(Evas_Object *parent) evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, wd); - wd->scroller = elm_smart_scroller_add(e); - elm_widget_sub_object_add(obj, wd->scroller); - elm_smart_scroller_widget_set(wd->scroller, obj); - elm_smart_scroller_object_theme_set(obj, wd->scroller, "scroller", "entry", - elm_widget_style_get(obj)); - evas_object_size_hint_weight_set(wd->scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(wd->scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_smart_scroller_bounce_allow_set(wd->scroller, EINA_FALSE, EINA_FALSE); - elm_smart_scroller_propagate_events_set(wd->scroller, EINA_TRUE); - wd->linewrap = ELM_WRAP_WORD; wd->editable = EINA_TRUE; wd->disabled = EINA_FALSE; wd->context_menu = EINA_TRUE; wd->magnifier_enabled = EINA_TRUE; wd->autosave = EINA_TRUE; + wd->scroll = EINA_FALSE; wd->cnp_mode = ELM_CNP_MODE_MARKUP; wd->autoperiod = EINA_TRUE; @@ -3982,47 +3975,53 @@ elm_entry_scrollable_set(Evas_Object *obj, Eina_Bool scroll) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); + const Elm_Scroller_Policy map[3] = + { + ELM_SMART_SCROLLER_POLICY_AUTO, + ELM_SMART_SCROLLER_POLICY_ON, + ELM_SMART_SCROLLER_POLICY_OFF + }; if (!wd) return; scroll = !!scroll; if (wd->scroll == scroll) return; wd->scroll = scroll; if (wd->scroll) { - elm_widget_sub_object_del(obj, wd->scroller); - elm_widget_resize_object_set(obj, wd->scroller); + if (!wd->scroller) + { + wd->scroller = elm_smart_scroller_add(evas_object_evas_get(obj)); + elm_widget_resize_object_set(obj, wd->scroller); + elm_smart_scroller_widget_set(wd->scroller, obj); + elm_smart_scroller_object_theme_set(obj, wd->scroller, "scroller", "entry", + elm_widget_style_get(obj)); + evas_object_size_hint_weight_set(wd->scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(wd->scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_propagate_events_set(wd->scroller, EINA_TRUE); + evas_object_propagate_events_set(elm_smart_scroller_edje_object_get(wd->scroller), + EINA_TRUE); + } + elm_smart_scroller_bounce_allow_set(wd->scroller, wd->h_bounce, wd->v_bounce); + if (wd->single_line) + elm_smart_scroller_policy_set(wd->scroller, ELM_SMART_SCROLLER_POLICY_OFF, + ELM_SMART_SCROLLER_POLICY_OFF); + else + elm_smart_scroller_policy_set(wd->scroller, map[wd->policy_h], map[wd->policy_v]); elm_widget_sub_object_add(obj, wd->ent); elm_smart_scroller_child_set(wd->scroller, wd->ent); evas_object_show(wd->scroller); elm_widget_on_show_region_hook_set(obj, _show_region_hook, obj); - if (wd->single_line) - { - elm_smart_scroller_policy_set(wd->scroller, - ELM_SMART_SCROLLER_POLICY_OFF, - ELM_SMART_SCROLLER_POLICY_OFF); - elm_smart_scroller_bounce_allow_set(wd->scroller, EINA_FALSE, EINA_FALSE); - } - else - { - const Elm_Scroller_Policy map[3] = - { - ELM_SMART_SCROLLER_POLICY_AUTO, - ELM_SMART_SCROLLER_POLICY_ON, - ELM_SMART_SCROLLER_POLICY_OFF - }; - elm_smart_scroller_policy_set(wd->scroller, - map[wd->policy_h], - map[wd->policy_v]); - elm_smart_scroller_bounce_allow_set(wd->scroller, EINA_FALSE, EINA_FALSE); - } } else { - elm_smart_scroller_child_set(wd->scroller, NULL); + if (wd->scroller) + { + elm_smart_scroller_child_set(wd->scroller, NULL); + evas_object_smart_member_add(wd->scroller, obj); + elm_widget_sub_object_add(obj, wd->scroller); + evas_object_hide(wd->scroller); + } elm_widget_sub_object_del(obj, wd->ent); elm_widget_resize_object_set(obj, wd->ent); - evas_object_smart_member_add(wd->scroller, obj); - elm_widget_sub_object_add(obj, wd->scroller); - evas_object_hide(wd->scroller); elm_widget_on_show_region_hook_set(obj, NULL, NULL); } wd->lastw = -1; @@ -4183,6 +4182,8 @@ elm_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; + wd->h_bounce = h_bounce; + wd->v_bounce = v_bounce; elm_smart_scroller_bounce_allow_set(wd->scroller, h_bounce, v_bounce); }