[gnome-builder/gnome-builder-43] libide/gui: restore panel state at the end



commit 26de2224ebbb4453832f1a1508097191b75acd5a
Author: Christian Hergert <chergert redhat com>
Date:   Wed Sep 21 19:31:58 2022 -0700

    libide/gui: restore panel state at the end
    
    We want to do this very last so that the reveal-start/end/bottom state is
    always going to be right, even if other panel restoration raises the
    widget (thus showing the panel).

 src/libide/gui/ide-workspace-session.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/gui/ide-workspace-session.c b/src/libide/gui/ide-workspace-session.c
index f97948839..3973d0e67 100644
--- a/src/libide/gui/ide-workspace-session.c
+++ b/src/libide/gui/ide-workspace-session.c
@@ -513,6 +513,7 @@ _ide_workspace_restore_session_simple (IdeWorkspace     *self,
                                        IdeSession       *session,
                                        IdeWorkspaceDock *dock)
 {
+  g_autoptr(IdeSessionItem) panels = NULL;
   guint n_items;
 
   IDE_ENTRY;
@@ -544,11 +545,15 @@ _ide_workspace_restore_session_simple (IdeWorkspace     *self,
             ide_workspace_restore_frame (self, type, item, dock);
           else if (g_type_is_a (type, IDE_TYPE_WORKSPACE) &&
                    type == G_OBJECT_TYPE (self))
-            ide_workspace_restore_panels (self, item, dock);
+            g_set_object (&panels, item);
           else if (ide_str_equal0 (type_hint, "IdePane"))
             ide_workspace_restore_pane (self, item, dock);
         }
     }
 
+  /* Restore panels last so their visibility remains intact */
+  if (panels != NULL)
+    ide_workspace_restore_panels (self, panels, dock);
+
   IDE_EXIT;
 }


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