changeset 18435:4e49bc41f899 stable

fix problems with gui startup (bug #41452) and focus issues (bug #40823) * main-window.cc (set_window_layout): restore window geometry and state for non windows system at the beginning, restore geometry of a dock widget only for non windows systems, show floating and visible dock widgets immediatly, restore window geometry and state for windows system at the end
author Torsten <ttl@justmail.de>
date Fri, 07 Feb 2014 11:37:56 +0100
parents 812162c34a93
children 5d14a08e7533
files libgui/src/main-window.cc
diffstat 1 files changed, 14 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Tue Feb 04 14:07:49 2014 -0800
+++ b/libgui/src/main-window.cc	Fri Feb 07 11:37:56 2014 +0100
@@ -883,7 +883,10 @@
 void
 main_window::set_window_layout (QSettings *settings)
 {
-  QList<octave_dock_widget *> float_and_visible;
+#if ! defined (Q_OS_WIN32)
+  restoreState (settings->value ("MainWindow/windowState").toByteArray ());
+  restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ());
+#endif
 
   // Restore the geometry of all dock-widgets
   foreach (octave_dock_widget *widget, dock_widget_list ())
@@ -897,20 +900,24 @@
           bool visible = settings->value
               ("DockWidgets/" + name + "Visible", true).toBool ();
 
-#if defined (Q_OS_WIN32)
           // If floating, make window from widget.
           if (floating)
             widget->make_window ();
           else if (! widget->parent ())  // should not be floating but is
             widget->make_widget (false); // no docking, just reparent
-#else
+#if ! defined (Q_OS_WIN32)
           // restore geometry
           QVariant val = settings->value ("DockWidgets/" + name);
           widget->restoreGeometry (val.toByteArray ());
 #endif
           // make widget visible if desired
           if (floating && visible)              // floating and visible
-            float_and_visible.append (widget);  // not show before main win
+            {
+              if (settings->value ("DockWidgets/" + widget->objectName () + "_minimized").toBool ())
+                widget->showMinimized ();
+              else
+                widget->setVisible (true);
+            }
           else
             {
               widget->make_widget ();
@@ -919,31 +926,12 @@
         }
     }
 
-#if ! defined (Q_OS_WIN32)
-  // show main first but minimized to avoid flickering,
-  // otherwise the name of a floating widget is shown in a global menu bar
-  showMinimized ();
-  // hide again, otherwise the geometry is not exactly restored
-  hide ();
-#endif
-  // restore geomoetry of main window
+#if defined (Q_OS_WIN32)
   restoreState (settings->value ("MainWindow/windowState").toByteArray ());
   restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ());
-  // show main window
+#endif
+
   show ();
-
-  // show floating widgets after main win to ensure "Octave" in central menu
-  foreach (octave_dock_widget *widget, float_and_visible)
-    {
-#if ! defined (Q_OS_WIN32)
-      widget->make_window ();
-#endif
-      if (settings->value ("DockWidgets/" + widget->objectName () + "_minimized").toBool ())
-        widget->showMinimized ();
-      else
-        widget->setVisible (true);
-    }
-
 }
 
 void