return TRUE;
}
+/*
+ * Another widget, e.g. a modal dialog, was shadowing us with a GTK grab. The
+ * button release went to that widget, thus forget about the pressed button to
+ * avoid that the next mouse move is taken for a drag.
+ */
+ static void
+grab_notify_event(GtkWidget *widget UNUSED,
+ gboolean was_grabbed,
+ gpointer data UNUSED)
+{
+ if (!was_grabbed)
+ dragging_button_state = 0;
+}
+
#ifdef FEAT_DND
/////////////////////////////////////////////////////////////////////////////
G_CALLBACK(button_press_event), NULL);
g_signal_connect(G_OBJECT(gui.drawarea), "button-release-event",
G_CALLBACK(button_release_event), NULL);
+ g_signal_connect(G_OBJECT(gui.drawarea), "grab-notify",
+ G_CALLBACK(grab_notify_event), NULL);
g_signal_connect(G_OBJECT(gui.drawarea), "scroll-event",
G_CALLBACK(scroll_event), NULL);