Mercurial > hg > octave-nkf
changeset 18503: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 +++ b/libgui/src/main-window.cc @@ -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