From 47dd0060aef87877ea7af5012f21cf8a670fb18f Mon Sep 17 00:00:00 2001 From: Jaehwan Kim Date: Tue, 16 Apr 2013 14:28:08 +0900 Subject: [PATCH] [Scroller] Fix the policy is not changed when the theme is changed. The "reload" signal from edc is necessary always. Change-Id: I87a7c1e4ddb68528c341152da5e61992d7f208fc --- src/lib/elm_interface_scrollable.c | 58 +++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index 6058f9a..d951828 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -816,6 +816,41 @@ _elm_scroll_anim_stop(Elm_Scrollable_Smart_Interface_Data *sid) } static void +_elm_scroll_policy_signal_emit(Elm_Scrollable_Smart_Interface_Data *sid) +{ + if (sid->hbar_flags == ELM_SCROLLER_POLICY_ON) + edje_object_signal_emit + (sid->edje_obj, "elm,action,show_always,hbar", "elm"); + else if (sid->hbar_flags == ELM_SCROLLER_POLICY_OFF) + edje_object_signal_emit + (sid->edje_obj, "elm,action,hide,hbar", "elm"); + else + edje_object_signal_emit + (sid->edje_obj, "elm,action,show_notalways,hbar", "elm"); + if (sid->vbar_flags == ELM_SCROLLER_POLICY_ON) + edje_object_signal_emit + (sid->edje_obj, "elm,action,show_always,vbar", "elm"); + else if (sid->vbar_flags == ELM_SCROLLER_POLICY_OFF) + edje_object_signal_emit + (sid->edje_obj, "elm,action,hide,vbar", "elm"); + else + edje_object_signal_emit + (sid->edje_obj, "elm,action,show_notalways,vbar", "elm"); + edje_object_message_signal_process(sid->edje_obj); + _elm_scroll_scroll_bar_size_adjust(sid); +} + +static void +_elm_scroll_reload_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + _elm_scroll_policy_signal_emit(sid); +} + +static void _elm_scroll_vbar_drag_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, @@ -3016,6 +3051,8 @@ _scroll_edje_object_attach(Evas_Object *obj) (sid->edje_obj, EVAS_CALLBACK_MOVE, _on_edje_move, sid); edje_object_signal_callback_add + (sid->edje_obj, "reload", "elm", _elm_scroll_reload_cb, sid); + edje_object_signal_callback_add (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_vbar_drag_cb, sid); edje_object_signal_callback_add @@ -3727,26 +3764,7 @@ _elm_scroll_policy_set(Evas_Object *obj, sid->hbar_flags = hbar; sid->vbar_flags = vbar; - if (sid->hbar_flags == ELM_SCROLLER_POLICY_ON) - edje_object_signal_emit - (sid->edje_obj, "elm,action,show_always,hbar", "elm"); - else if (sid->hbar_flags == ELM_SCROLLER_POLICY_OFF) - edje_object_signal_emit - (sid->edje_obj, "elm,action,hide,hbar", "elm"); - else - edje_object_signal_emit - (sid->edje_obj, "elm,action,show_notalways,hbar", "elm"); - if (sid->vbar_flags == ELM_SCROLLER_POLICY_ON) - edje_object_signal_emit - (sid->edje_obj, "elm,action,show_always,vbar", "elm"); - else if (sid->vbar_flags == ELM_SCROLLER_POLICY_OFF) - edje_object_signal_emit - (sid->edje_obj, "elm,action,hide,vbar", "elm"); - else - edje_object_signal_emit - (sid->edje_obj, "elm,action,show_notalways,vbar", "elm"); - edje_object_message_signal_process(sid->edje_obj); - _elm_scroll_scroll_bar_size_adjust(sid); + _elm_scroll_policy_signal_emit(sid); if (sid->cb_func.content_min_limit) sid->cb_func.content_min_limit(sid->obj, sid->min_w, sid->min_h); _elm_direction_arrows_eval(sid); -- 2.7.4