elementary: fix infinite recursive call in elm_slider.
authorCedric BAIL <cedric.bail@free.fr>
Mon, 26 Dec 2011 15:01:51 +0000 (15:01 +0000)
committerCedric BAIL <cedric.bail@free.fr>
Mon, 26 Dec 2011 15:01:51 +0000 (15:01 +0000)
SVN revision: 66531

src/lib/elm_slider.c

index aa169c9..c01d4c5 100644 (file)
@@ -452,9 +452,12 @@ _spacer_cb(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *event_info)
    Evas_Event_Mouse_Down *ev = event_info;
    Evas_Coord x, y, w, h;
    double button_x, button_y;
+   double prev_button_x, prev_button_y;
 
    evas_object_geometry_get(wd->spacer, &x, &y, &w, &h);
-   edje_object_part_drag_value_get(wd->slider, "elm.dragable.slider", &button_x, &button_y);
+   edje_object_part_drag_value_get(wd->slider, "elm.dragable.slider", &prev_button_x, &prev_button_y);
+   button_x = prev_button_x;
+   button_y = prev_button_y;
    if (wd->horizontal)
      {
         button_x = ((double)ev->canvas.x - (double)x) / (double)w;
@@ -467,9 +470,15 @@ _spacer_cb(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *event_info)
         if (button_y > 1) button_y = 1;
         if (button_y < 0) button_y = 0;
      }
-   edje_object_part_drag_value_set(wd->slider, "elm.dragable.slider", button_x, button_y);
-   evas_event_feed_mouse_cancel(e, 0, NULL);
-   evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, 0, NULL);
+   if (button_x != prev_button_x || button_y != prev_button_y)
+     {
+        edje_object_part_drag_value_set(wd->slider, "elm.dragable.slider", button_x, button_y);
+     }
+   else
+     {
+        evas_event_feed_mouse_cancel(e, 0, NULL);
+        evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, 0, NULL);
+     }
 }
 
 static void