The freeze property is a set() only but could internally
be reset to false, after dragging a vertical or horizontal slider.
Test scenario:
elementary_test -to scroller
Click Freeze, test the mouse wheel (can't do anything), drag a
scroller side bar, test the mouse wheel again.
Before this patch, the scroller would scroll. After the patch, the
scroller remains fixed, respecting the value of freeze.
FIXME: It is possible that the proper fix would be to disable
bars drag during freeze, but that is not the case currently.
NOTE: freeze, hold, movement_block, lock_x/y have very similar
meanings. The doc really needs clarification here, and some
property might be removed. Also, freeze and hold have no
getter, only a setter. drag_lock_x/y is part of elm_widget,
and not specific to scrollers.
_elm_scroll_scroll_bar_read_and_update(sid);
_elm_scroll_drag_stop(sid);
- sid->freeze = EINA_FALSE;
+ sid->freeze = sid->freeze_want;
}
static void
_elm_scroll_scroll_bar_read_and_update(sid);
_elm_scroll_drag_stop(sid);
- sid->freeze = EINA_FALSE;
+ sid->freeze = sid->freeze_want;
}
static void
_elm_interface_scrollable_freeze_set(Eo *obj EINA_UNUSED, Elm_Scrollable_Smart_Interface_Data *sid, Eina_Bool freeze)
{
sid->freeze = freeze;
+ sid->freeze_want = freeze;
if (sid->freeze)
{
if (sid->down.onhold_animator)
Eina_Bool bouncemey : 1;
Eina_Bool bouncemex : 1;
Eina_Bool freeze : 1;
+ Eina_Bool freeze_want : 1;
Eina_Bool hold : 1;
Eina_Bool min_w : 1;
Eina_Bool min_h : 1;