notebook: fix critical when switching page
authorMichael Catanzaro <mcatanzaro@redhat.com>
Wed, 23 Aug 2023 20:51:08 +0000 (15:51 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 24 Aug 2023 14:27:44 +0000 (10:27 -0400)
It's expected that gtk_widget_get_root() will return NULL if the widget
tree does not contain a root widget. I don't know what that means or why
it happens, but it's true in gnome-control-center's network panel when
displaying the OpenVPN configuration dialog. We need to handle it.

Fixes #6056

gtk/gtknotebook.c

index d326516add4938ca4ff5bbd557337cc81fb9fd16..9ea880fb0868ff27bab99b5f10e2b7259dcb1d6f 100644 (file)
@@ -5409,7 +5409,9 @@ gtk_notebook_real_switch_page (GtkNotebook     *notebook,
   if (notebook->cur_page)
     {
       GtkRoot *root = gtk_widget_get_root (GTK_WIDGET (notebook));
-      GtkWidget *focus = gtk_root_get_focus (root);
+      GtkWidget *focus = NULL;
+      if (root)
+        focus = gtk_root_get_focus (root);
       if (focus)
         child_has_focus = gtk_widget_is_ancestor (focus, notebook->cur_page->child);
       gtk_widget_unset_state_flags (notebook->cur_page->tab_widget, GTK_STATE_FLAG_CHECKED);