From: Carlos Garnacho Date: Wed, 1 Jul 2015 16:46:30 +0000 (+0200) Subject: gtkdnd: Traverse across insensitive widgets X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~24^2~9124 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3f8982a0cd7b779fe023bbd;p=gtk4.git gtkdnd: Traverse across insensitive widgets The current widget lookup code bails out on insensitive widgets, there's however legit cases where we want DnD handled by a parent of the insensitive widget, so just keep going upwards in that case. We also use now the widget state flags, because get_sensitive() doesn't propagate across hierarchies, so we could conceivably find a drop site inside an insensitive widget. https://bugzilla.gnome.org/show_bug.cgi?id=751793 --- diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c index 3f63d5b363..732d237231 100644 --- a/gtk/gtkdnd.c +++ b/gtk/gtkdnd.c @@ -1881,10 +1881,15 @@ gtk_drag_find_widget (GtkWidget *widget, GList *hierarchy = NULL; gboolean found = FALSE; - if (!gtk_widget_get_mapped (widget) || - !gtk_widget_get_sensitive (widget)) + if (!gtk_widget_get_mapped (widget)) return FALSE; + if (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_INSENSITIVE) + { + widget = gtk_widget_get_parent (widget); + continue; + } + /* need to reference the entire hierarchy temporarily in case the * ::drag-motion/::drag-drop callbacks change the widget hierarchy. */