Infinite loop in gtk_tooltip_run_requery
For example, apply:
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index 88cf89651d..98a4817719 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -539,8 +539,11 @@ gtk_tooltip_run_requery (GtkWidget **widget,
{
GtkWidget *parent = gtk_widget_get_parent (*widget);
- if (parent)
+ if (parent) {
+ g_message ("Translating from %s %p to %s %p", G_OBJECT_TYPE_NAME (*widget), *widget,
+ G_OBJECT_TYPE_NAME (parent), parent);
gtk_widget_translate_coordinates (*widget, parent, *x, *y, x, y);
+ }
*widget = parent;
}
then go to page 3 of the widget factory, hover the GtkLockButton
and quickly move the mouse down over the tooltip.
We end up passing the same widget and parent to gtk_widget_translate_coordinates
:
(gdb) p parent
$3 = (GtkWidget *) 0x555555e44760
(gdb) p *widget
$4 = (GtkWidget *) 0x555555e44760
The output of the g_message
call looks like:
Gtk-Message: 10:26:33.019: Translating from GtkTooltipWindow 0x555555e44760 to GtkTooltipWindow 0x555555e44760
etc.