efl_ui_slider: fix the error when scrolling.

When we use efl_ui_textbox and efl_ui_slider simultaneously, the slider invokes the general widget's scrolling hold and freeze behavior, which calls of the textbox's scrolling functions with an obvious error: sd->scroller = NULL. So switch off that in the slider and don't notice any lack of functionality.

Saved sd->freeze as a flag for future use.

Test: elementary_test -to Efl.Ui.Slider (before and after).
This commit is contained in:
Dmitri Chudinov 2023-08-15 18:11:47 +05:00
parent 08e73fe2eb
commit 380c6d35db
No known key found for this signature in database
1 changed files with 2 additions and 36 deletions

View File

@ -179,7 +179,6 @@ _drag_start(void *data,
elm_object_focus_set(data, EINA_TRUE);
efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, NULL);
_drag_value_fetch(data);
elm_widget_scroll_freeze_push(data);
}
static void
@ -190,7 +189,6 @@ _drag_stop(void *data,
{
_drag_value_fetch(data);
efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
elm_widget_scroll_freeze_pop(data);
}
static void
@ -505,10 +503,7 @@ _spacer_move_cb(void *data,
if (d > (_elm_config->thumbscroll_threshold - 1))
{
if (!sd->frozen)
{
elm_widget_scroll_freeze_push(data);
sd->frozen = EINA_TRUE;
}
sd->frozen = EINA_TRUE;
ev->event_flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
}
@ -519,10 +514,7 @@ _spacer_move_cb(void *data,
efl_event_callback_call
(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
if (sd->frozen)
{
elm_widget_scroll_freeze_pop(data);
sd->frozen = EINA_FALSE;
}
sd->frozen = EINA_FALSE;
return;
}
if (_is_horizontal(sd->dir))
@ -560,28 +552,7 @@ _spacer_up_cb(void *data,
efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
if (sd->frozen)
{
elm_widget_scroll_freeze_pop(data);
sd->frozen = EINA_FALSE;
}
}
static void
_mouse_in_cb(void *data EINA_UNUSED,
Evas *e EINA_UNUSED,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
efl_ui_widget_scroll_hold_push(obj);
}
static void
_mouse_out_cb(void *data EINA_UNUSED,
Evas *e EINA_UNUSED,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
efl_ui_widget_scroll_hold_pop(obj);
}
static char *
@ -657,11 +628,6 @@ _efl_ui_slider_efl_object_constructor(Eo *obj, Efl_Ui_Slider_Data *priv)
(priv->spacer, EVAS_CALLBACK_MOUSE_MOVE, _spacer_move_cb, obj);
evas_object_event_callback_add
(priv->spacer, EVAS_CALLBACK_MOUSE_UP, _spacer_up_cb, obj);
evas_object_event_callback_add
(obj, EVAS_CALLBACK_MOUSE_IN, _mouse_in_cb, obj);
evas_object_event_callback_add
(obj, EVAS_CALLBACK_MOUSE_OUT, _mouse_out_cb, obj);
efl_ui_widget_focus_allow_set(obj, EINA_TRUE);