Unset tooltip window earlier

This avoids a crash when the tooltip window tries
to update its action muxers.
This commit is contained in:
Matthias Clasen 2020-05-09 16:46:40 -04:00
parent 1306727fb1
commit 177c0eb9e2
3 changed files with 17 additions and 0 deletions

View File

@ -990,3 +990,17 @@ gtk_tooltip_maybe_allocate (GtkNative *native)
gtk_native_check_resize (GTK_NATIVE (tooltip->window));
}
void
gtk_tooltip_unset_surface (GtkNative *native)
{
GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (native));
GtkTooltip *tooltip;
tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (!tooltip || GTK_NATIVE (tooltip->native) != native)
return;
gtk_tooltip_set_surface (tooltip, NULL);
}

View File

@ -44,6 +44,7 @@ GtkWidget * _gtk_widget_find_at_coords (GdkSurface *surface,
gint *widget_y);
void gtk_tooltip_maybe_allocate (GtkNative *native);
void gtk_tooltip_unset_surface (GtkNative *native);
G_END_DECLS

View File

@ -7484,6 +7484,8 @@ gtk_window_destroy (GtkWindow *window)
g_return_if_fail (GTK_IS_WINDOW (window));
gtk_tooltip_unset_surface (GTK_NATIVE (window));
for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (toplevel_list)); i++)
{
gpointer item = g_list_model_get_item (G_LIST_MODEL (toplevel_list), i);