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;
}
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)
{
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;
}
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;
}
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
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;
}
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;
}
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
}
/* 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 {}
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]]
}
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);