summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-08-29 18:15:33 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-08-30 17:29:52 +0900
commit6bb9f4fd16a279f0e04156f8e2a64bfb65e83ca4 (patch)
treed17b5a0573afd4ccc35c0b72febcd268c59052f5
parentffa041fe58f63ad961ca88e3bbe1f696b1f8e1ea (diff)
downloadefl-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.c14
-rw-r--r--src/lib/elementary/elm_main.c24
-rw-r--r--src/lib/elementary/elm_widget.c62
-rw-r--r--src/lib/elementary/elm_widget.eo24
-rw-r--r--src/lib/elementary/elm_widget.h6
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);