[libchamplain] Don't fire drag-finish when not dragging
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Don't fire drag-finish when not dragging
- Date: Thu, 17 Feb 2011 22:51:34 +0000 (UTC)
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]