# HG changeset patch # User Torsten # Date 1391769476 -3600 # Node ID 4e49bc41f8998d24caf8ac9e33943ac571ff242d # Parent 812162c34a931de0bb7a894a42058182090ebbbe 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 diff -r 812162c34a93 -r 4e49bc41f899 libgui/src/main-window.cc --- 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 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