Mercurial > octave
changeset 24275:e9fe31118542
improve re-docking of a floating widget under windows
* octave-dock-widget.cc (make_widget): save window state before adding the
widget, restore this state after adding, hide and re-show the widget in
order to make it visible again
* main-window.cc (set_window_layout): restore state and geometry on windows
for not storing the default state when calling make_widget
author | Torsten <mttl@mailbox.org> |
---|---|
date | Sat, 18 Nov 2017 11:50:16 +0100 |
parents | c1940e9e3399 |
children | 8f26ef2688bc |
files | libgui/src/main-window.cc libgui/src/octave-dock-widget.cc |
diffstat | 2 files changed, 6 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc Fri Nov 17 13:46:15 2017 -0500 +++ b/libgui/src/main-window.cc Sat Nov 18 11:50:16 2017 +0100 @@ -1265,10 +1265,8 @@ void main_window::set_window_layout (QSettings *settings) { -#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 ()) @@ -1309,10 +1307,8 @@ } } -#if defined (Q_OS_WIN32) restoreState (settings->value ("MainWindow/windowState").toByteArray ()); restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ()); -#endif show (); }
--- a/libgui/src/octave-dock-widget.cc Fri Nov 17 13:46:15 2017 -0500 +++ b/libgui/src/octave-dock-widget.cc Sat Nov 18 11:50:16 2017 +0100 @@ -196,16 +196,12 @@ if (dock) { - // add widget to last saved docking area (dock=true is default) - int area - = settings->value ("DockWidgets/" + objectName () + "_dock_area", - Qt::TopDockWidgetArea).toInt (); - m_parent->addDockWidget (static_cast<Qt::DockWidgetArea> (area), this); - - // FIXME: restoreGeometry is ignored for docked widgets - // and its child widget - restoreGeometry (settings->value - ("DockWidgets/" + objectName ()).toByteArray ()); + settings->setValue ("MainWindow/windowState", m_parent->saveState ()); + m_parent->addDockWidget (Qt::TopDockWidgetArea, this); + // recover old window states, hide and re-show new added widget + m_parent->restoreState (settings->value ("MainWindow/windowState").toByteArray ()); + focus (); + QApplication::setActiveWindow (this); } else // only reparent, no docking setParent (m_parent);