diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-08-29 18:15:33 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-08-30 17:29:52 +0900 |
commit | 6bb9f4fd16a279f0e04156f8e2a64bfb65e83ca4 (patch) | |
tree | d17b5a0573afd4ccc35c0b72febcd268c59052f5 | |
parent | ffa041fe58f63ad961ca88e3bbe1f696b1f8e1ea (diff) | |
download | efl-6bb9f4fd16a279f0e04156f8e2a64bfb65e83ca4.tar.gz |
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
-rw-r--r-- | src/lib/elementary/elm_interface_scrollable.c | 14 | ||||
-rw-r--r-- | src/lib/elementary/elm_main.c | 24 | ||||
-rw-r--r-- | src/lib/elementary/elm_widget.c | 62 | ||||
-rw-r--r-- | src/lib/elementary/elm_widget.eo | 24 | ||||
-rw-r--r-- | 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); |