textview: Don't update action state in dispose
authorMatthias Clasen <mclasen@redhat.com>
Tue, 4 Feb 2020 21:40:11 +0000 (22:40 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 5 Feb 2020 06:01:47 +0000 (01:01 -0500)
Only update the action state when we have a text buffer,
there is no need to do it otherwise, since we are going
to get a buffer before we get shown. This avoids triggering
the action state updates from finalize, which is a bad
time to be recreating the action muxer.

gtk/gtktextview.c

index 4e6ce8d468143a469db191fb5e243a6b77516861..8277be03494f405a372d715b369bdf249ec9bbbc 100644 (file)
@@ -1828,8 +1828,6 @@ gtk_text_view_set_buffer (GtkTextView   *text_view,
 {
   GtkTextViewPrivate *priv;
   GtkTextBuffer *old_buffer;
-  gboolean can_undo = FALSE;
-  gboolean can_redo = FALSE;
 
   g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
   g_return_if_fail (buffer == NULL || GTK_IS_TEXT_BUFFER (buffer));
@@ -1888,6 +1886,8 @@ gtk_text_view_set_buffer (GtkTextView   *text_view,
   if (buffer != NULL)
     {
       GtkTextIter start;
+      gboolean can_undo = FALSE;
+      gboolean can_redo = FALSE;
 
       g_object_ref (buffer);
 
@@ -1931,10 +1931,10 @@ gtk_text_view_set_buffer (GtkTextView   *text_view,
 
       if (priv->text_handle)
         gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_NONE);
-    }
 
-  gtk_widget_action_set_enabled (GTK_WIDGET (text_view), "text.undo", can_undo);
-  gtk_widget_action_set_enabled (GTK_WIDGET (text_view), "text.redo", can_redo);
+      gtk_widget_action_set_enabled (GTK_WIDGET (text_view), "text.undo", can_undo);
+      gtk_widget_action_set_enabled (GTK_WIDGET (text_view), "text.redo", can_redo);
+    }
 
   _gtk_text_view_accessible_set_buffer (text_view, old_buffer);
   if (old_buffer)