test callbacks and fix select on drag
authorCarsten Haitzler <raster@rasterman.com>
Tue, 8 Sep 2009 06:35:14 +0000 (06:35 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Tue, 8 Sep 2009 06:35:14 +0000 (06:35 +0000)
SVN revision: 42344

src/bin/test_genlist.c
src/lib/elm_genlist.c

index 3b3dc31..c3448f9 100644 (file)
@@ -756,6 +756,42 @@ void gl5_del(const void *data, Evas_Object *obj)
 {
 }
 
+static void
+item_drag_up(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag up\n");
+}
+
+static void
+item_drag_down(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag down\n");
+}
+
+static void
+item_drag_left(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag left\n");
+}
+
+static void
+item_drag_right(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag right\n");
+}
+
+static void
+item_drag(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag\n");
+}
+
+static void
+item_drag_stop(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("drag stop\n");
+}
+
 void
 test_genlist5(void *data, Evas_Object *obj, void *event_info)
 {
@@ -804,6 +840,13 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info)
    elm_box_pack_end(bx, gl);
    elm_object_scroll_freeze_push(gl);
    evas_object_show(bx2);
+   
+   evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
+   evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
+   evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
+   evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
+   evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
+   evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
 
    bx2 = elm_box_add(win);
    elm_box_horizontal_set(bx2, 1);
index 46fa77e..5d16076 100644 (file)
@@ -593,6 +593,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
    Elm_Genlist_Item *it = data;
    Evas_Event_Mouse_Up *ev = event_info;
    Eina_List *l;
+   Eina_Bool dragged = 0;
    if (ev->button != 1) return;
    it->down = 0;
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) it->wd->on_hold = EINA_TRUE;
@@ -606,6 +607,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
      {
         it->dragging = 0;
         evas_object_smart_callback_call(it->wd->obj, "drag,stop", it);
+        dragged = 1;
      }
    if (it->wd->on_hold)
      {
@@ -622,6 +624,7 @@ _mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
         return;
      }
    if (it->disabled) return;
+   if (dragged) return;
    if (it->wd->multi)
      {
        if (!it->selected)