summaryrefslogtreecommitdiff
path: root/gtk/gtkdnd.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-05-15 22:27:42 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-05-15 22:27:42 +0000
commitf642876f0c633a614b82f47808580ce4fbcec622 (patch)
tree08b84be7c2c5d85f831b0dd2ffa306276e9496d1 /gtk/gtkdnd.c
parent70d78734c5c9469bc0863136159f1ad1ac229627 (diff)
downloadgtk+-f642876f0c633a614b82f47808580ce4fbcec622.tar.gz
Don't call gdk_pointer_grab() to change the cursor if we've already
Wed May 15 18:15:45 2002 Owen Taylor <otaylor@redhat.com> * gtk/gtkdnd.c (_gtk_drag_source_handle_event): Don't call gdk_pointer_grab() to change the cursor if we've already ungrabbed on button release / escape. (#80420, Dave Camp)
Diffstat (limited to 'gtk/gtkdnd.c')
-rw-r--r--gtk/gtkdnd.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index ab7b35ef46..0682db2b2c 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -101,6 +101,8 @@ struct _GtkDragSourceInfo
guint drop_timeout; /* Timeout for aborting drop */
guint destroy_icon : 1; /* If true, destroy icon_window
*/
+ guint have_grab : 1; /* Do we still have the pointer grab
+ */
};
struct _GtkDragDestSite
@@ -1897,6 +1899,8 @@ gtk_drag_begin (GtkWidget *widget,
}
}
+ info->have_grab = TRUE;
+
return info->context;
}
@@ -2456,7 +2460,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget,
}
}
}
- else
+ else if (info->have_grab)
{
cursor = gtk_drag_get_cursor (gtk_widget_get_screen (widget),
event->dnd.context->action);
@@ -3022,6 +3026,8 @@ gtk_drag_end (GtkDragSourceInfo *info, guint32 time)
GtkWidget *source_widget = info->widget;
GdkDisplay *display = gtk_widget_get_display (source_widget);
+ info->have_grab = FALSE;
+
gdk_display_pointer_ungrab (display, time);
gdk_display_keyboard_ungrab (display, time);
gtk_grab_remove (info->ipc_widget);