[gtk/matthiasc/for-master] tooltip: Avoid criticals



commit 166200a2d98747cfef0728ba475952fc52a091ea
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu May 21 18:59:58 2020 -0400

    tooltip: Avoid criticals
    
    It is possible that the target widget is already
    unparented at the time that we call the tooltips
    handle_event function. Quietly return in that case,
    no need to emit a critical.

 gtk/gtktooltip.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index 36b162885b..4d10edf3e1 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -919,18 +919,21 @@ _gtk_tooltip_handle_event (GtkWidget *target,
   GdkSurface *surface;
   double x, y;
   double nx, ny;
-  GtkWidget *native;
+  GtkNative *native;
 
   if (!tooltips_enabled (event))
     return;
 
+  native = gtk_widget_get_native (target);
+  if (!native)
+    return;
+
   event_type = gdk_event_get_event_type (event);
   surface = gdk_event_get_surface (event);
   gdk_event_get_position (event, &x, &y);
-  native = GTK_WIDGET (gtk_widget_get_native (target));
 
-  gtk_native_get_surface_transform (GTK_NATIVE (native), &nx, &ny);
-  gtk_widget_translate_coordinates (native, target, x - nx, y - ny, &x, &y);
+  gtk_native_get_surface_transform (native, &nx, &ny);
+  gtk_widget_translate_coordinates (GTK_WIDGET (native), target, x - nx, y - ny, &x, &y);
   gtk_tooltip_handle_event_internal (event_type, surface, target, x, y);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]