jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6bb9f4fd16a279f0e04156f8e2a64bfb65e83ca4

commit 6bb9f4fd16a279f0e04156f8e2a64bfb65e83ca4
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Tue Aug 29 18:15:33 2017 +0900

    widget: Remove scroll_lock from EO
    
    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 | 14 +++---
 src/lib/elementary/elm_main.c                 | 24 +++++++++--
 src/lib/elementary/elm_widget.c               | 62 ++++++++++++++++-----------
 src/lib/elementary/elm_widget.eo              | 24 -----------
 src/lib/elementary/elm_widget.h               |  6 +--
 5 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/src/lib/elementary/elm_interface_scrollable.c 
b/src/lib/elementary/elm_interface_scrollable.c
index 718417e2be..6b10a029cf 100644
--- a/src/lib/elementary/elm_interface_scrollable.c
+++ b/src/lib/elementary/elm_interface_scrollable.c
@@ -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;
                }
diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index c82d1de08b..4752d307b1 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -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
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 791cb7a005..bd96b03cd6 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -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
diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo
index 38cb984751..404cfa388e 100644
--- a/src/lib/elementary/elm_widget.eo
+++ b/src/lib/elementary/elm_widget.eo
@@ -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]]
       }
diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h
index cc17e77911..482490d896 100644
--- a/src/lib/elementary/elm_widget.h
+++ b/src/lib/elementary/elm_widget.h
@@ -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);

-- 


Reply via email to