This scroll block enum should also be used in widget itself.
Ref T5363
off [[Never use a softcursor.]]
}
+enum Efl.Ui.Scroll_Block
+{
+ [[Direction in which a scroller should be blocked.
+
+ Note: These options may be effective only in case of thumbscroll (i.e.
+ when scrolling by dragging).
+
+ @since 1.21
+ ]]
+ none = 0, [[Don't block any movement.]]
+ vertical = 1, [[Block vertical movement.]]
+ horizontal = 2 [[Block horizontal movement.]]
+}
+
enum Elm.Icon.Type
{
[[Elementary icon types]]
return;
if (direction)
{
- if (sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL) return;
+ if (sid->block & EFL_UI_SCROLL_BLOCK_HORIZONTAL) return;
}
else
{
- if (sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) return;
+ if (sid->block & EFL_UI_SCROLL_BLOCK_VERTICAL) return;
}
evas_post_event_callback_push(e, _scroll_wheel_post_event_cb, sid);
if (!sid->pan_obj) return;
- if ((sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
- (sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ if ((sid->block & EFL_UI_SCROLL_BLOCK_VERTICAL) &&
+ (sid->block & EFL_UI_SCROLL_BLOCK_HORIZONTAL))
return;
#ifdef SMOOTHDBG
pgx = _elm_scroll_page_x_get(sid, ox, EINA_TRUE);
if (pgx != x &&
!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
ev->event_flags |= EVAS_EVENT_FLAG_ON_SCROLL;
_elm_scroll_scroll_to_x
pgy = _elm_scroll_page_y_get(sid, oy, EINA_TRUE);
if (pgy != y &&
!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ EFL_UI_SCROLL_BLOCK_VERTICAL))
{
ev->event_flags |= EVAS_EVENT_FLAG_ON_SCROLL;
_elm_scroll_scroll_to_y
sid = data;
ev = event_info;
- if ((sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
- (sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ if ((sid->block & EFL_UI_SCROLL_BLOCK_VERTICAL) &&
+ (sid->block & EFL_UI_SCROLL_BLOCK_HORIZONTAL))
return;
#ifdef SMOOTHDBG
if (!sid->pan_obj) return;
- if ((sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL) &&
- (sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ if ((sid->block & EFL_UI_SCROLL_BLOCK_VERTICAL) &&
+ (sid->block & EFL_UI_SCROLL_BLOCK_HORIZONTAL))
return;
ev = event_info;
if (!sid->down.now) return;
if ((sid->scrollto.x.animator) && (!sid->hold) && (!sid->freeze) &&
- !(sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ !(sid->block & EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
Evas_Coord px = 0;
ELM_ANIMATOR_DISCONNECT(sid->obj, sid->scrollto.x.animator, _elm_scroll_scroll_to_x_animator, sid);
}
if ((sid->scrollto.y.animator) && (!sid->hold) && (!sid->freeze) &&
- !(sid->block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ !(sid->block & EFL_UI_SCROLL_BLOCK_VERTICAL))
{
Evas_Coord py = 0;
ELM_ANIMATOR_DISCONNECT(sid->obj, sid->scrollto.y.animator, _elm_scroll_scroll_to_y_animator, sid);
if (x > (y * 2))
{
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
sid->down.dir_x = EINA_TRUE;
}
{
sid->down.dir_x = EINA_FALSE;
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ EFL_UI_SCROLL_BLOCK_VERTICAL))
{
sid->down.dir_y = EINA_TRUE;
}
if (!dodir)
{
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
sid->down.dir_x = EINA_TRUE;
}
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ EFL_UI_SCROLL_BLOCK_VERTICAL))
{
sid->down.dir_y = EINA_TRUE;
}
if (x > y)
{
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
sid->down.dir_x = EINA_TRUE;
}
{
sid->down.dir_x = EINA_FALSE;
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ EFL_UI_SCROLL_BLOCK_VERTICAL))
{
sid->down.dir_y = EINA_TRUE;
}
else
{
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL))
+ EFL_UI_SCROLL_BLOCK_HORIZONTAL))
{
sid->down.dir_x = EINA_TRUE;
}
if (!(sid->block &
- ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL))
+ EFL_UI_SCROLL_BLOCK_VERTICAL))
{
sid->down.dir_y = EINA_TRUE;
}
}
EOLIAN static void
-_elm_interface_scrollable_movement_block_set(Eo *obj EINA_UNUSED, Elm_Scrollable_Smart_Interface_Data *sid, Elm_Scroller_Movement_Block block)
+_elm_interface_scrollable_movement_block_set(Eo *obj EINA_UNUSED, Elm_Scrollable_Smart_Interface_Data *sid, Efl_Ui_Scroll_Block block)
{
sid->block = block;
}
-EOLIAN static Elm_Scroller_Movement_Block
+EOLIAN static Efl_Ui_Scroll_Block
_elm_interface_scrollable_movement_block_get(Eo *obj EINA_UNUSED, Elm_Scrollable_Smart_Interface_Data *sid)
{
return sid->block;
sid->one_direction_at_a_time = ELM_SCROLLER_SINGLE_DIRECTION_SOFT;
sid->momentum_animator_disabled = EINA_FALSE;
sid->bounce_animator_disabled = EINA_FALSE;
- sid->block = ELM_SCROLLER_MOVEMENT_NO_BLOCK;
+ sid->block = EFL_UI_SCROLL_BLOCK_NONE;
_elm_scroll_scroll_bar_reset(sid);
last [[Sentinel value to indicate last enum field during iteration]]
}
-enum Elm.Scroller.Movement_Block
-{
- [[Type that blocks the scroll movement in one or more direction.
-
- @since 1.8
- ]]
- legacy: elm_scroller_movement;
- no_block = 1 << 0, [[Do not block movements]]
- block_vertical = 1 << 1, [[Block vertical movements]]
- block_horizontal = 1 << 2 [[Block horizontal movements]]
-}
-
-
mixin Elm.Interface_Scrollable(Efl.Ui.Scrollable, Efl.Canvas.Group, Efl.Ui.Focus.Manager, Elm.Widget)
{
[[Elm scrollable mixin]]
This function will block scrolling movement (by input of a user) in
a given direction. One can disable movements in the X axis, the Y
- axis or both. The default value is #ELM_SCROLLER_MOVEMENT_NO_BLOCK,
- where movements are allowed in both directions.
+ axis or both. The default value is $none, where movements are
+ allowed in both directions.
What makes this function different from
freeze_push(), hold_push() and lock_x_set() (or lock_y_set())
is that it doesn't propagate its effects to any parent or child
widget of $obj. Only the target scrollable widget will be locked
with regard to scrolling.
-
- @since 1.8]]
- set {
- }
- get {
- }
+ ]]
values {
- block: Elm.Scroller.Movement_Block; [[Which axis (or axes) to block]]
+ block: Efl.Ui.Scroll_Block(none); [[Which axis (or axes) to block]]
}
}
@property momentum_animator_disabled {
Elm_Scroller_Policy hbar_flags, vbar_flags;
Elm_Scroller_Single_Direction one_direction_at_a_time;
- Elm_Scroller_Movement_Block block;
+ Efl_Ui_Scroll_Block block;
struct
{
if (sd->freeze)
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
if (sd->freeze)
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
{
if (horizontal)
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+ (obj, EFL_UI_SCROLL_BLOCK_HORIZONTAL);
else
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
+ (obj, EFL_UI_SCROLL_BLOCK_VERTICAL);
sd->freeze = EINA_TRUE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,hidden", "elm");
}
if (sd->freeze)
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
if (sd->timer && ((cur_y - sd->down_y) > finger_size))
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
if (sd->timer && ((sd->down_y - cur_y) > finger_size))
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
((is_mirrored) && (sd->timer) && ((sd->down_x - cur_x) > finger_size)))
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
(!is_mirrored && (sd->timer) && ((sd->down_x - cur_x) > finger_size)))
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
case ELM_PANEL_ORIENT_TOP:
case ELM_PANEL_ORIENT_BOTTOM:
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
+ (obj, EFL_UI_SCROLL_BLOCK_VERTICAL);
break;
case ELM_PANEL_ORIENT_LEFT:
case ELM_PANEL_ORIENT_RIGHT:
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+ (obj, EFL_UI_SCROLL_BLOCK_HORIZONTAL);
break;
}
{
if (horizontal)
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+ (obj, EFL_UI_SCROLL_BLOCK_HORIZONTAL);
else
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
+ (obj, EFL_UI_SCROLL_BLOCK_VERTICAL);
sd->freeze = EINA_TRUE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,hidden", "elm");
if (sd->freeze)
{
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
+ (obj, EFL_UI_SCROLL_BLOCK_NONE);
sd->freeze = EINA_FALSE;
elm_layout_signal_emit(sd->scr_ly, "elm,state,content,visible", "elm");
}
case ELM_PANEL_ORIENT_TOP:
case ELM_PANEL_ORIENT_BOTTOM:
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
+ (obj, EFL_UI_SCROLL_BLOCK_VERTICAL);
break;
case ELM_PANEL_ORIENT_LEFT:
case ELM_PANEL_ORIENT_RIGHT:
elm_interface_scrollable_movement_block_set
- (obj, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+ (obj, EFL_UI_SCROLL_BLOCK_HORIZONTAL);
break;
}
Elm_Scroller_Movement_Block block)
{
ELM_SCROLLABLE_CHECK(obj);
+ Efl_Ui_Scroll_Block mode = EFL_UI_SCROLL_BLOCK_NONE;
- elm_interface_scrollable_movement_block_set(obj, block);
+ // legacy -> eo
+ if (block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL)
+ mode |= EFL_UI_SCROLL_BLOCK_HORIZONTAL;
+ if (block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL)
+ mode |= EFL_UI_SCROLL_BLOCK_VERTICAL;
+
+ elm_interface_scrollable_movement_block_set(obj, mode);
}
EAPI Elm_Scroller_Movement_Block
elm_scroller_movement_block_get(const Evas_Object *obj)
{
Elm_Scroller_Movement_Block block = ELM_SCROLLER_MOVEMENT_NO_BLOCK;
+ Efl_Ui_Scroll_Block mode;
ELM_SCROLLABLE_CHECK(obj, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
- block = elm_interface_scrollable_movement_block_get((Eo *) obj);
+ mode = elm_interface_scrollable_movement_block_get(obj);
+
+ // eo -> legacy
+ if (mode & EFL_UI_SCROLL_BLOCK_HORIZONTAL)
+ block |= ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL;
+ if (mode & EFL_UI_SCROLL_BLOCK_VERTICAL)
+ block |= ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL;
return block;
}
#include "elm_interface_scrollable.eo.legacy.h"
#include "elm_scroller.eo.legacy.h"
+
+/**
+ * Type that blocks the scroll movement in one or more direction.
+ *
+ * @since 1.8
+ *
+ * @ingroup Elm_Scroller
+ */
+typedef enum
+{
+ ELM_SCROLLER_MOVEMENT_NO_BLOCK = 1, /**< Do not block movements */
+ ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL = 2, /**< Block vertical movements */
+ ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL = 4 /**< Block horizontal movements */
+} Elm_Scroller_Movement_Block;
+
/**
* @brief Add a new scroller to the parent
*