efl_ui_slider: fix focus interaction
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Tue, 16 Jul 2019 11:59:40 +0000 (13:59 +0200)
committerTaehyub Kim <taehyub.kim@samsung.com>
Wed, 17 Jul 2019 07:54:10 +0000 (16:54 +0900)
Summary:
when we move the slider up or down, we might be at the minimum or
maximu, if this is the case. Then we must not eat the key event,
otherwise focus is stuck on this widget.
Depends on D9328

Reviewers: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9329

src/lib/elementary/efl_ui_slider.c

index 3c458d3..513e00d 100644 (file)
@@ -222,6 +222,7 @@ _drag_up(void *data,
    else
      efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            relative_step, relative_step);
+   _slider_update(data, EINA_TRUE);
 }
 
 static void
@@ -246,6 +247,7 @@ _drag_down(void *data,
    else
      efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            relative_step, relative_step);
+   _slider_update(data, EINA_TRUE);
 }
 
 static Eina_Bool
@@ -253,6 +255,9 @@ _key_action_drag(Evas_Object *obj, const char *params)
 {
    EFL_UI_SLIDER_DATA_GET(obj, sd);
    const char *dir = params;
+   double old_value, new_value;
+
+   old_value = efl_ui_range_value_get(obj);
 
    if (!strcmp(dir, "left"))
      {
@@ -288,7 +293,8 @@ _key_action_drag(Evas_Object *obj, const char *params)
      }
    else return EINA_FALSE;
 
-   return EINA_TRUE;
+   new_value = efl_ui_range_value_get(obj);
+   return !EINA_DBL_EQ(new_value, old_value);
 }
 
 // _slider_efl_ui_widget_widget_input_event_handler