inspector: Remove flash timeout from widgets being unmapped
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 16 Mar 2015 12:57:03 +0000 (13:57 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 16 Mar 2015 15:29:37 +0000 (16:29 +0100)
Otherwise the timeout can keep running, even if the widget is being
destroyed.

gtk/inspector/inspect-button.c

index 55d92da82f70bd15c584a762eae8fb86e1d99b93..937e006870c3a08d085ef28d136b7ffa1afdb2a2 100644 (file)
@@ -191,6 +191,7 @@ clear_flash (GtkInspectorWindow *iw)
     {
       gtk_widget_queue_draw (iw->flash_widget);
       g_signal_handlers_disconnect_by_func (iw->flash_widget, draw_flash, iw);
+      g_signal_handlers_disconnect_by_func (iw->flash_widget, clear_flash, iw);
       iw->flash_widget = NULL;
     }
 }
@@ -204,6 +205,7 @@ start_flash (GtkInspectorWindow *iw,
   iw->flash_count = 1;
   iw->flash_widget = widget;
   g_signal_connect_after (widget, "draw", G_CALLBACK (draw_flash), iw);
+  g_signal_connect_swapped (widget, "unmap", G_CALLBACK (clear_flash), iw);
   gtk_widget_queue_draw (widget);
 }
 
@@ -434,6 +436,7 @@ on_flash_timeout (GtkInspectorWindow *iw)
   if (iw->flash_count == 6)
     {
       g_signal_handlers_disconnect_by_func (iw->flash_widget, draw_flash, iw);
+      g_signal_handlers_disconnect_by_func (iw->flash_widget, clear_flash, iw);
       iw->flash_widget = NULL;
       iw->flash_cnx = 0;
 
@@ -471,6 +474,7 @@ void
 gtk_inspector_stop_highlight (GtkWidget *widget)
 {
   g_signal_handlers_disconnect_by_func (widget, draw_flash, NULL);
+  g_signal_handlers_disconnect_by_func (widget, clear_flash, NULL);
   gtk_widget_queue_draw (widget);
 }