# HG changeset patch # User Torsten # Date 1347306918 -7200 # Node ID 450fedd441760065b59b909b12a89b1d3f55ce3d # Parent 9ed4fc294f3f9df51be4d0a6541d6ba78e4ab690 correctly restore the size of all dock-widgets when maximized * main-window.cc: save/restore geometry of dock-widgets when writing/reading the settings diff --git a/libgui/src/main-window.cc b/libgui/src/main-window.cc --- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -435,8 +435,21 @@ // FIXME -- what should happen if settings is 0? + restoreState (settings->value ("MainWindow/windowState").toByteArray ()); + settings->beginGroup ("DockWidgets"); + // restoring the geometry of all widgets + foreach (QObject *obj, children ()) + { + QString name = obj->objectName (); + if (obj->isWidgetType () && ! name.isEmpty ()) + { + QWidget *widget = qobject_cast (obj); + QVariant val = settings->value (name); + widget->restoreGeometry (val.toByteArray ()); + } + } + settings->endGroup(); restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ()); - restoreState (settings->value ("MainWindow/windowState").toByteArray ()); emit settings_changed (); } @@ -449,6 +462,19 @@ settings->setValue ("MainWindow/geometry", saveGeometry ()); settings->setValue ("MainWindow/windowState", saveState ()); + settings->beginGroup ("DockWidgets"); + // saving the geometry of all widgets + foreach (QObject *obj, children()) + { + QString name = obj->objectName (); + if (obj->isWidgetType () && ! name.isEmpty ()) + { + QWidget *widget = qobject_cast(obj); + settings->setValue (name, widget->saveGeometry ()); + } + } + + settings->endGroup(); settings->sync (); }