widget: Remove scroll_lock from EO
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 29 Aug 2017 09:15:33 +0000 (18:15 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 30 Aug 2017 08:29:52 +0000 (17:29 +0900)
1. Uniformize the API, which is now for internal use:
   This uses the same enum as scroller "movement_block" instead
   of 2 separate properties. Less APIs, more consistence.

2. Remove scroll_lock x/y from EO widget. I was told it is not going to
   exist in the upcoming scrollable interface.

3. Remove scroll hold/freeze getters.
   scroll hold/freeze push/pop are still there but it remains to be seen
   how the EO scrollable interface will exploit them. Right now they are
   full of bugs.

Ref T5363

src/lib/elementary/elm_interface_scrollable.c
src/lib/elementary/elm_main.c
src/lib/elementary/elm_widget.c
src/lib/elementary/elm_widget.eo
src/lib/elementary/elm_widget.h

index 718417e..6b10a02 100644 (file)
@@ -2144,10 +2144,7 @@ _elm_scroll_post_event_up(void *data,
    if (sid->obj)
      {
         if (sid->down.dragged)
-          {
-             elm_widget_scroll_lock_x_set(sid->obj, EINA_FALSE);
-             elm_widget_scroll_lock_y_set(sid->obj, EINA_FALSE);
-          }
+          elm_widget_scroll_lock_set(sid->obj, EFL_UI_SCROLL_BLOCK_NONE);
      }
    return EINA_FALSE;
 }
@@ -2959,11 +2956,13 @@ _elm_scroll_post_event_move(void *data,
                             Evas *e EINA_UNUSED)
 {
    Elm_Scrollable_Smart_Interface_Data *sid = data;
+   Efl_Ui_Scroll_Block block;
    Eina_Bool horiz, vert;
    int start = 0;
 
    if (!sid->down.want_dragged) return EINA_TRUE;
 
+   block = elm_widget_scroll_lock_get(sid->obj);
    _elm_widget_parents_bounce_get(sid->obj, &horiz, &vert);
    if (sid->down.hold_parent)
      {
@@ -2990,7 +2989,8 @@ _elm_scroll_post_event_move(void *data,
                   sid->down.dragged = EINA_TRUE;
                   if (sid->obj)
                     {
-                       elm_widget_scroll_lock_x_set(sid->obj, 1);
+                       block |= EFL_UI_SCROLL_BLOCK_HORIZONTAL;
+                       elm_widget_scroll_lock_set(sid->obj, block);
                     }
                   start = 1;
                }
@@ -3012,8 +3012,8 @@ _elm_scroll_post_event_move(void *data,
                   sid->down.dragged = EINA_TRUE;
                   if (sid->obj)
                     {
-                       elm_widget_scroll_lock_y_set
-                          (sid->obj, EINA_TRUE);
+                       block |= EFL_UI_SCROLL_BLOCK_VERTICAL;
+                       elm_widget_scroll_lock_set(sid->obj, block);
                     }
                   start = 1;
                }
index c82d1de..4752d30 100644 (file)
@@ -1815,30 +1815,46 @@ EAPI void
 elm_object_scroll_lock_x_set(Evas_Object *obj,
                              Eina_Bool    lock)
 {
+   Efl_Ui_Scroll_Block block;
+
    EINA_SAFETY_ON_NULL_RETURN(obj);
-   elm_widget_scroll_lock_x_set(obj, lock);
+   block = elm_widget_scroll_lock_get(obj);
+   if (lock) block |= EFL_UI_SCROLL_BLOCK_HORIZONTAL;
+   else block &= ~EFL_UI_SCROLL_BLOCK_HORIZONTAL;
+   elm_widget_scroll_lock_set(obj, block);
 }
 
 EAPI void
 elm_object_scroll_lock_y_set(Evas_Object *obj,
                              Eina_Bool    lock)
 {
+   Efl_Ui_Scroll_Block block;
+
    EINA_SAFETY_ON_NULL_RETURN(obj);
-   elm_widget_scroll_lock_y_set(obj, lock);
+   block = elm_widget_scroll_lock_get(obj);
+   if (lock) block |= EFL_UI_SCROLL_BLOCK_VERTICAL;
+   else block &= ~EFL_UI_SCROLL_BLOCK_VERTICAL;
+   elm_widget_scroll_lock_set(obj, block);
 }
 
 EAPI Eina_Bool
 elm_object_scroll_lock_x_get(const Evas_Object *obj)
 {
+   Efl_Ui_Scroll_Block block;
+
    EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
-   return elm_widget_scroll_lock_x_get(obj);
+   block = elm_widget_scroll_lock_get(obj);
+   return !!(block & EFL_UI_SCROLL_BLOCK_HORIZONTAL);
 }
 
 EAPI Eina_Bool
 elm_object_scroll_lock_y_get(const Evas_Object *obj)
 {
+   Efl_Ui_Scroll_Block block;
+
    EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
-   return elm_widget_scroll_lock_y_get(obj);
+   block = elm_widget_scroll_lock_get(obj);
+   return !!(block & EFL_UI_SCROLL_BLOCK_VERTICAL);
 }
 
 EAPI void
index 791cb7a..bd96b03 100644 (file)
@@ -3532,9 +3532,12 @@ _elm_widget_scroll_hold_pop(Eo *obj, Elm_Widget_Smart_Data *sd)
    if (sd->scroll_hold < 0) sd->scroll_hold = 0;
 }
 
-EOLIAN static int
-_elm_widget_scroll_hold_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
+EAPI int
+elm_widget_scroll_hold_get(const Eo *obj)
 {
+   Elm_Widget_Smart_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+
+   if (!sd) return 0;
    return sd->scroll_hold;
 }
 
@@ -3586,9 +3589,12 @@ _elm_widget_scroll_freeze_pop(Eo *obj, Elm_Widget_Smart_Data *sd)
    if (sd->scroll_freeze < 0) sd->scroll_freeze = 0;
 }
 
-EOLIAN static int
-_elm_widget_scroll_freeze_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
+EAPI int
+elm_widget_scroll_freeze_get(const Eo *obj)
 {
+   Elm_Widget_Smart_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+
+   if (!sd) return 0;
    return sd->scroll_freeze;
 }
 
@@ -3975,34 +3981,38 @@ elm_widget_cursor_del(Eo *obj, Elm_Cursor *cur)
    sd->cursors = eina_list_remove(sd->cursors, cur);
 }
 
-EOLIAN static void
-_elm_widget_scroll_lock_x_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Bool lock)
+EAPI void
+elm_widget_scroll_lock_set(Eo *obj, Efl_Ui_Scroll_Block block)
 {
-   if (sd->scroll_x_locked == lock) return;
-   sd->scroll_x_locked = lock;
-   if (sd->scroll_x_locked) _propagate_x_drag_lock(obj, 1);
-   else _propagate_x_drag_lock(obj, -1);
-}
+   Elm_Widget_Smart_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+   Eina_Bool lx, ly;
 
-EOLIAN static void
-_elm_widget_scroll_lock_y_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Bool lock)
-{
-   if (sd->scroll_y_locked == lock) return;
-   sd->scroll_y_locked = lock;
-   if (sd->scroll_y_locked) _propagate_y_drag_lock(obj, 1);
-   else _propagate_y_drag_lock(obj, -1);
+   if (!sd) return;
+   lx = !!(block & EFL_UI_SCROLL_BLOCK_HORIZONTAL);
+   ly = !!(block & EFL_UI_SCROLL_BLOCK_VERTICAL);
+   if (sd->scroll_x_locked != lx)
+     {
+        sd->scroll_x_locked = lx;
+        _propagate_x_drag_lock(obj, lx ? 1 : -1);
+     }
+   if (sd->scroll_y_locked != ly)
+     {
+        sd->scroll_y_locked = ly;
+        _propagate_y_drag_lock(obj, ly ? 1 : -1);
+     }
 }
 
-EOLIAN static Eina_Bool
-_elm_widget_scroll_lock_x_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
+EAPI Efl_Ui_Scroll_Block
+elm_widget_scroll_lock_get(const Eo *obj)
 {
-   return sd->scroll_x_locked;
-}
+   Elm_Widget_Smart_Data *sd = efl_data_scope_safe_get(obj, MY_CLASS);
+   Efl_Ui_Scroll_Block block = EFL_UI_SCROLL_BLOCK_NONE;
 
-EOLIAN static Eina_Bool
-_elm_widget_scroll_lock_y_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
-{
-   return sd->scroll_y_locked;
+   if (!sd) return block;
+   if (sd->scroll_x_locked) block |= EFL_UI_SCROLL_BLOCK_HORIZONTAL;
+   if (sd->scroll_y_locked) block |= EFL_UI_SCROLL_BLOCK_VERTICAL;
+
+   return block;
 }
 
 EAPI int
index 38cb984..404cfa3 100644 (file)
@@ -413,18 +413,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible,
       }
 
       /* Scroll API. */
-      @property scroll_lock_x {
-         [[Drag lock on X axis]]
-         values {
-            lock: bool; [[$true if drag is locked on X axis, $false otherwise]]
-         }
-      }
-      @property scroll_lock_y {
-         [[Lock the Y axis from being dragged]]
-         values {
-            lock: bool; [[$true if the Y axis is locked, $false otherwise]]
-         }
-      }
       @property on_show_region_hook {
          [[Region hook on show property]]
          set {}
@@ -438,18 +426,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Elm.Interface.Atspi_Accessible,
             enable: bool; [[$true if item loop is enabled, $false otherwise]]
          }
       }
-      @property scroll_freeze {
-         [[Scroll freeze property]]
-         get {
-            return: int; [[FIXME]]
-         }
-      }
-      @property scroll_hold {
-         [[Scroll hold property]]
-         get {
-            return: int; [[FIXME]]
-         }
-      }
       scroll_hold_push {
          [[Push scroll hold]]
       }
index cc17e77..482490d 100644 (file)
@@ -739,10 +739,8 @@ EAPI void             elm_widget_tooltip_add(Evas_Object *obj, Elm_Tooltip *tt);
 EAPI void             elm_widget_tooltip_del(Evas_Object *obj, Elm_Tooltip *tt);
 EAPI void             elm_widget_cursor_add(Evas_Object *obj, Elm_Cursor *cur);
 EAPI void             elm_widget_cursor_del(Evas_Object *obj, Elm_Cursor *cur);
-EAPI void             elm_widget_scroll_lock_x_set(Evas_Object *obj, Eina_Bool lock);
-EAPI void             elm_widget_scroll_lock_y_set(Evas_Object *obj, Eina_Bool lock);
-EAPI Eina_Bool        elm_widget_scroll_lock_x_get(const Evas_Object *obj);
-EAPI Eina_Bool        elm_widget_scroll_lock_y_get(const Evas_Object *obj);
+EAPI void             elm_widget_scroll_lock_set(Evas_Object *obj, Efl_Ui_Scroll_Block block);
+EAPI Efl_Ui_Scroll_Block elm_widget_scroll_lock_get(const Evas_Object *obj);
 EAPI int              elm_widget_scroll_child_locked_x_get(const Evas_Object *obj);
 EAPI int              elm_widget_scroll_child_locked_y_get(const Evas_Object *obj);
 EAPI void             elm_widget_item_loop_enabled_set(Evas_Object *obj, Eina_Bool enable);