jaehwan pushed a commit to branch master.

commit ed93aa20588633d36bfcdf6e3b093923be65f4d8
Author: Jaehwan Kim <[email protected]>
Date:   Tue Apr 16 13:27:55 2013 +0900

    Fix the policy is not changed when the theme is changed.
    The "reload" signal from edc is necessary always.
---
 ChangeLog                          |  5 ++++
 NEWS                               |  1 +
 data/themes/widgets/scroller.edc   |  1 +
 src/lib/elm_interface_scrollable.c | 58 +++++++++++++++++++++++++-------------
 4 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a146147..c1c1012 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1251,3 +1251,8 @@
 2013-04-15  Jaehwan Kim
 
         * Add the feature for key events.
+
+2013-04-16  Jaehwan Kim
+
+        * Fix the policy is not changed when the theme is changed.
+        The "reload" signal from edc is necessary always.
diff --git a/NEWS b/NEWS
index cc4b0b0..611964c 100644
--- a/NEWS
+++ b/NEWS
@@ -207,6 +207,7 @@ Fixes:
    * Fix elc_player crash issue.
    * Fix the region_show/region_bring_in don't have a limit at a paging 
movement.
    * Fix the calculation double type number.
+   * Fix the policy is not changed when the theme is changed.
 
 Removals:
 
diff --git a/data/themes/widgets/scroller.edc b/data/themes/widgets/scroller.edc
index ca0f316..0be3920 100644
--- a/data/themes/widgets/scroller.edc
+++ b/data/themes/widgets/scroller.edc
@@ -327,6 +327,7 @@ group { name: "elm/scroller/base/default";
             set_int(sbalways_v, 0);
             set_int(sbalways_h, 0);
             set_int(sbvis_timer, 0);
+            emit("reload", "elm");
          }
       }
 
diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index 06b6496..b2c8ffb 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -979,6 +979,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__,
@@ -3263,6 +3298,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
@@ -3931,26 +3968,7 @@ _elm_scroll_policy_set(Eo *obj EINA_UNUSED, void *_pd, 
va_list *list)
 
    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);

-- 

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter

Reply via email to