[libchamplain] Don't fire drag-finish when not dragging



commit 50ea126e37dff32c9126a1e0b9be6cc90ecba0db
Author: JiÅ?í Techet <techet gmail com>
Date:   Thu Feb 17 23:00:18 2011 +0100

    Don't fire drag-finish when not dragging

 champlain/champlain-marker.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/champlain/champlain-marker.c b/champlain/champlain-marker.c
index 8980fba..c5d95b6 100644
--- a/champlain/champlain-marker.c
+++ b/champlain/champlain-marker.c
@@ -101,6 +101,7 @@ struct _ChamplainMarkerPrivate
   
   gfloat click_x;
   gfloat click_y;
+  gboolean moved;
 };
 
 
@@ -456,6 +457,7 @@ motion_event_cb (ClutterActor        *stage,
                                            &x, &y))
     {
       g_signal_emit_by_name (marker, "drag-motion", x - priv->click_x, y - priv->click_y, event);
+      priv->moved = TRUE;
     }
 
   return TRUE;
@@ -467,6 +469,8 @@ capture_release_event_cb (ClutterActor        *stage,
                          ClutterButtonEvent  *event,
                          ChamplainMarker *marker)
 {
+  ChamplainMarkerPrivate *priv = marker->priv;
+
   if ((event->type != CLUTTER_BUTTON_RELEASE) ||
       (event->button != 1))
     return FALSE;
@@ -479,8 +483,11 @@ capture_release_event_cb (ClutterActor        *stage,
                                         marker);
   
   clutter_set_motion_events_enabled (TRUE);
-  g_signal_emit_by_name (marker, "drag-finish", event);
-
+  if (priv->moved)
+    g_signal_emit_by_name (marker, "drag-finish", event);
+  else
+    g_signal_emit_by_name (marker, "button-release", event);
+  
   return TRUE;
 }
 
@@ -525,6 +532,7 @@ button_press_event_cb (ClutterActor        *actor,
       if (clutter_actor_transform_stage_point (actor, bevent->x, bevent->y,
                                                &priv->click_x, &priv->click_y))
         {
+          priv->moved = FALSE;
           g_signal_connect (stage,
                             "captured-event",
                             G_CALLBACK (motion_event_cb),



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]