Mercurial > hg > octave-shane
changeset 16811:81344ade678f
fix resetting the window layout when some widgets are floating
* main-window.cc(set_window_layout): use dock_widget list instead of children
of the main-window, check for floating widgets that shouldn't be floating
from the settings and reparent them before restoring geometry
author | Torsten <ttl@justmail.de> |
---|---|
date | Sat, 22 Jun 2013 22:25:20 +0200 |
parents | 62fa28af2842 |
children | 366a13bd71d5 |
files | libgui/src/main-window.cc |
diffstat | 1 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -542,33 +542,33 @@ void main_window::set_window_layout (QSettings *settings) { - restoreState (settings->value ("MainWindow/windowState").toByteArray ()); - // Restore the geometry of all dock-widgets - foreach (QObject *obj, children ()) + foreach (octave_dock_widget *widget, dock_widget_list ()) { - QString name = obj->objectName (); + QString name = widget->objectName (); - if (obj->inherits ("QDockWidget") && ! name.isEmpty ()) + if (! name.isEmpty ()) { - octave_dock_widget *widget = qobject_cast<octave_dock_widget *> (obj); - QVariant val = settings->value (name); - - widget->restoreGeometry (val.toByteArray ()); - // If floating, make window from widget. bool floating = settings->value ("DockWidgets/" + name + "Floating", false).toBool (); + if (floating) + widget->make_window (false); + else if (! widget->parent ()) // should not be floating but is + widget->setParent (this); // reparent + + // restore geometry + QVariant val = settings->value (name); + widget->restoreGeometry (val.toByteArray ()); + + // make widget visible if desired bool visible = settings->value ("DockWidgets/" + name + "Visible", true).toBool (); - if (floating) - widget->make_window (visible); - - // make widget visible if desired widget->setVisible (visible); } } + restoreState (settings->value ("MainWindow/windowState").toByteArray ()); restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ()); }