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
This commit is contained in:
Jean-Philippe Andre 2017-08-29 18:15:33 +09:00
parent ffa041fe58
commit 6bb9f4fd16
5 changed files with 65 additions and 65 deletions

View 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;
}

View 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

View 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;
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 void
_elm_widget_scroll_lock_y_set(Eo *obj, Elm_Widget_Smart_Data *sd, Eina_Bool lock)
EAPI Efl_Ui_Scroll_Block
elm_widget_scroll_lock_get(const Eo *obj)
{
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);
}
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_x_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
{
return sd->scroll_x_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;
EOLIAN static Eina_Bool
_elm_widget_scroll_lock_y_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *sd)
{
return sd->scroll_y_locked;
return block;
}
EAPI int

View 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]]
}

View 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);