From: Matthias Clasen Date: Mon, 30 Dec 2019 14:52:13 +0000 (-0500) Subject: tooltip: Never set a window to be its own parent X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~479 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=772ac2b0c587b9bd0927d339550341a547b70057;p=gtk4.git tooltip: Never set a window to be its own parent We do get events on the tooltip window too, and we better ignore them, or bad things may happen, such as widgets that are their own parents and cause infinite loops. Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2339 --- diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c index 88cf89651d..1112e6a374 100644 --- a/gtk/gtktooltip.c +++ b/gtk/gtktooltip.c @@ -495,6 +495,9 @@ gtk_tooltip_set_surface (GtkTooltip *tooltip, if (tooltip->native == native) return; + if (GTK_IS_TOOLTIP_WINDOW (native)) + return; + if (tooltip->native) g_object_weak_unref (G_OBJECT (tooltip->native), native_weak_notify, tooltip); diff --git a/gtk/gtktooltipwindow.c b/gtk/gtktooltipwindow.c index 28e63d095f..2467657889 100644 --- a/gtk/gtktooltipwindow.c +++ b/gtk/gtktooltipwindow.c @@ -558,6 +558,8 @@ void gtk_tooltip_window_set_relative_to (GtkTooltipWindow *window, GtkWidget *relative_to) { + g_return_if_fail (GTK_WIDGET (window) != relative_to); + if (window->relative_to == relative_to) return;