From: Seunggyun Kim <sgyun.kim@samsung.com>
authorSeunggyun Kim <sgyun.kim@samsung.com>
Tue, 21 Dec 2010 10:05:18 +0000 (10:05 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Tue, 21 Dec 2010 10:05:18 +0000 (10:05 +0000)
Subject: [E-devel] [Patch] els_scroller momentum_animator and bounce
animator disabled set/get added

This is a patch for momentum_animator and bounce animator
enabling/disabling
in els_scroller.

I added below api for disabling when the scroller's momentum or bounce
animator need to be disabled in some case.

Eina_Bool elm_smart_scroller_momentum_animator_disabled_get
(Evas_Object
*obj);
void elm_smart_scroller_momentum_animator_disabled_set
(Evas_Object *obj, Eina_Bool disabled);
void elm_smart_scroller_bounce_animator_disabled_set
(Evas_Object *obj, Eina_Bool disabled);
Eina_Bool elm_smart_scroller_bounce_animator_disabled_get
(Evas_Object
*obj);

SVN revision: 55690

AUTHORS
src/lib/els_scroller.c
src/lib/els_scroller.h

diff --git a/AUTHORS b/AUTHORS
index 8fe1cad..5a0740e 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -30,3 +30,4 @@ Viktor Kojouharov <vkojouharov@gmail.com>
 Daniel Juyung Seo (SeoZ) <juyung.seo@samsung.com> <seojuyung2@gmail.com>
 Sangho Park <sangho.g.park@samsung.com> <gouache95@gmail.com>
 Rajeev Ranjan (Rajeev) <rajeev.r@samsung.com> <rajeev.jnnce@gmail.com>
+Seunggyun Kim <sgyun.kim@samsung.com> <tmdrbs@gmail.com>
index 7365af7..c1bdf70 100644 (file)
@@ -101,6 +101,8 @@ struct _Smart_Data
    unsigned char bouncemey : 1;
    unsigned char bounce_horiz : 1;
    unsigned char bounce_vert : 1;
+   unsigned char momentum_animator_disabled :1;
+   unsigned char bounce_animator_disabled :1;
 };
 
 /* local subsystem functions */
@@ -268,6 +270,56 @@ elm_smart_scroller_custom_edje_file_set(Evas_Object *obj, char *file, char *grou
      edje_object_signal_emit(sd->edje_obj, "elm,action,show_notalways,vbar", "elm");
 }
 
+Eina_Bool
+elm_smart_scroller_momentum_animator_disabled_get(Evas_Object *obj)
+{
+   API_ENTRY return EINA_FALSE;
+   return sd->momentum_animator_disabled;
+}
+
+void
+elm_smart_scroller_momentum_animator_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+{
+   API_ENTRY return;
+   sd->momentum_animator_disabled = disabled;
+   if (sd->momentum_animator_disabled)
+     {
+        if (sd->down.momentum_animator)
+          {
+             ecore_animator_del(sd->down.momentum_animator);
+             sd->down.momentum_animator = NULL;
+          }
+     }
+}
+
+Eina_Bool
+elm_smart_scroller_bounce_animator_disabled_get(Evas_Object *obj)
+{
+   API_ENTRY return EINA_FALSE;
+   return sd->bounce_animator_disabled;
+}
+
+void
+elm_smart_scroller_bounce_animator_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+{
+   API_ENTRY return;
+   sd->bounce_animator_disabled = disabled;
+   if (sd->bounce_animator_disabled)
+     {
+        if (sd->scrollto.x.animator)
+          {
+             ecore_animator_del(sd->scrollto.x.animator);
+             sd->scrollto.x.animator = NULL;
+          }            
+
+        if (sd->scrollto.y.animator)
+          {
+             ecore_animator_del(sd->scrollto.y.animator);
+             sd->scrollto.y.animator = NULL;
+          }
+     }
+}
+
 static void
 _smart_anim_start(Evas_Object *obj)
 {
@@ -735,7 +787,7 @@ bounce_eval(Smart_Data *sd)
    if ((!sd->widget) || 
        (!elm_widget_drag_child_locked_x_get(sd->widget)))
      {
-        if (!sd->down.bounce_x_animator)
+        if (!sd->down.bounce_x_animator && !sd->bounce_animator_disabled)
           {
              if (sd->bouncemex)
                {
@@ -757,7 +809,7 @@ bounce_eval(Smart_Data *sd)
    if ((!sd->widget) || 
        (!elm_widget_drag_child_locked_y_get(sd->widget)))
      {
-        if (!sd->down.bounce_y_animator)
+        if (!sd->down.bounce_y_animator && !sd->bounce_animator_disabled)
           {
              if (sd->bouncemey)
                {
@@ -1617,7 +1669,7 @@ _smart_event_mouse_up(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *ev
                                  oy = -sd->down.dy;
                                  if (!_smart_do_page(sd))
                                    {
-                                      if (!sd->down.momentum_animator)
+                                      if (!sd->down.momentum_animator && !sd->momentum_animator_disabled)
                                         {
                                            sd->down.momentum_animator = ecore_animator_add(_smart_momentum_animator, sd);
                                            ev->event_flags |= EVAS_EVENT_FLAG_ON_SCROLL;
@@ -2368,7 +2420,9 @@ _smart_add(Evas_Object *obj)
    sd->bounce_vert = 1;
 
    sd->one_dir_at_a_time = 1;
-
+   sd->momentum_animator_disabled = 0;
+   sd->bounce_animator_disabled = 0;
+   
    o = edje_object_add(evas_object_evas_get(obj));
    evas_object_propagate_events_set(o, 0);
    sd->edje_obj = o;
index 7c6a30b..a265cee 100644 (file)
@@ -32,3 +32,7 @@ void elm_smart_scroller_paging_set              (Evas_Object *obj, double pagere
 void elm_smart_scroller_paging_get              (Evas_Object *obj, double *pagerel_h, double *pagerel_v, Evas_Coord *pagesize_h, Evas_Coord *pagesize_v);
 void elm_smart_scroller_region_bring_in         (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
 void elm_smart_scroller_widget_set              (Evas_Object *obj, Evas_Object *wid);
+Eina_Bool elm_smart_scroller_momentum_animator_disabled_get   (Evas_Object *obj);
+void elm_smart_scroller_momentum_animator_disabled_set             (Evas_Object *obj, Eina_Bool disabled);
+void elm_smart_scroller_bounce_animator_disabled_set               (Evas_Object *obj, Eina_Bool disabled);
+Eina_Bool elm_smart_scroller_bounce_animator_disabled_get     (Evas_Object *obj);