Handle the case that the protocol version in the context is not set yet.

2004-11-03  Matthias Clasen  <mclasen@redhat.com>

	* gdk/x11/gdkdnd-x11.c (gdk_drag_motion): Handle the
	case that the protocol version in the context is not
	set yet.  (#157123, James Henstridge)
This commit is contained in:
Matthias Clasen 2004-11-03 17:06:38 +00:00 committed by Matthias Clasen
parent 253f6836e7
commit 669d068594
5 changed files with 37 additions and 1 deletions

View File

@ -1,5 +1,9 @@
2004-11-03 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (gdk_drag_motion): Handle the
case that the protocol version in the context is not
set yet. (#157123, James Henstridge)
* gtk/gtktreeview.c (gtk_tree_view_search_activate): Don't
try to activate a node if the cursor is not valid.

View File

@ -1,5 +1,9 @@
2004-11-03 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (gdk_drag_motion): Handle the
case that the protocol version in the context is not
set yet. (#157123, James Henstridge)
* gtk/gtktreeview.c (gtk_tree_view_search_activate): Don't
try to activate a node if the cursor is not valid.

View File

@ -1,5 +1,9 @@
2004-11-03 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (gdk_drag_motion): Handle the
case that the protocol version in the context is not
set yet. (#157123, James Henstridge)
* gtk/gtktreeview.c (gtk_tree_view_search_activate): Don't
try to activate a node if the cursor is not valid.

View File

@ -1,5 +1,9 @@
2004-11-03 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (gdk_drag_motion): Handle the
case that the protocol version in the context is not
set yet. (#157123, James Henstridge)
* gtk/gtktreeview.c (gtk_tree_view_search_activate): Don't
try to activate a node if the cursor is not valid.

View File

@ -3231,7 +3231,27 @@ gdk_drag_motion (GdkDragContext *context,
if (private->old_actions != possible_actions)
private->xdnd_actions_set = FALSE;
if (protocol == GDK_DRAG_PROTO_XDND && private->version == 0)
{
/* This ugly hack is necessary since GTK+ doesn't know about
* the XDND protocol version, and in particular doesn't know
* that gdk_drag_find_window_for_screen() has the side-effect
* of setting private->version, and therefore sometimes call
* gdk_drag_motion() without a prior call to
* gdk_drag_find_window_for_screen(). This happens, e.g.
* when GTK+ is proxying DND events to embedded windows.
*/
if (dest_window)
{
GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window);
xdnd_check_dest (display,
GDK_DRAWABLE_XID (dest_window),
&private->version);
}
}
/* When we have a Xdnd target, make sure our XdndActionList
* matches the current actions;
*/