Mercurial > octave
changeset 29090:f61d1faacfca
maint: merge stable to default.
author | Kai T. Ohlhus <k.ohlhus@gmail.com> |
---|---|
date | Mon, 23 Nov 2020 12:41:34 +0900 |
parents | 944fd6fca864 (current diff) 5f535fe782b3 (diff) |
children | b924b916dc91 |
files | libgui/src/main-window.cc |
diffstat | 4 files changed, 29 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/gui-preferences-dw.h Fri May 29 10:05:36 2020 +0100 +++ b/libgui/src/gui-preferences-dw.h Mon Nov 23 12:41:34 2020 +0900 @@ -62,7 +62,8 @@ const gui_pref dw_float_geometry ("DockWidgets/%1_floating_geometry", QVariant (QRect (50, 50, 480, 640))); -const gui_pref dw_dock_geometry ("DockWidgets/%1", QVariant (QByteArray ())); +const gui_pref dw_dock_geometry ("DockWidgets/%1", + QVariant (QRect (10, 10, 240, 320))); const gui_pref dw_is_visible ("DockWidgets/%1Visible", QVariant (true));
--- a/libgui/src/main-window.cc Fri May 29 10:05:36 2020 +0100 +++ b/libgui/src/main-window.cc Mon Nov 23 12:41:34 2020 +0900 @@ -1596,8 +1596,19 @@ } } - if (! settings) + if (settings) { + // Restore main window state and geometry after creating all + // dock widgets + if (! restoreState (settings->value (mw_state).toByteArray ())) + restoreState (mw_state.def.toByteArray ()); + + if (! restoreGeometry (settings->value (mw_geometry).toByteArray ())) + restoreGeometry (mw_geometry.def.toByteArray ()); + } + else + { + // Reset to the initial window layout and size restoreGeometry (mw_geometry.def.toByteArray ()); restoreState (mw_state.def.toByteArray ());
--- a/libgui/src/octave-dock-widget.cc Fri May 29 10:05:36 2020 +0100 +++ b/libgui/src/octave-dock-widget.cc Mon Nov 23 12:41:34 2020 +0900 @@ -355,6 +355,10 @@ // recover old window states, hide and re-show new added widget m_parent->restoreState (settings->value (mw_state.key).toByteArray ()); setFloating (false); + // restore size using setGeometry instead of restoreGeometry following + // this post: + // https://forum.qt.io/topic/79326/qdockwidget-restoregeometry-not-working-correctly-when-qmainwindow-is-maximized/5 + setGeometry (m_recent_dock_geom); // adjust the (un)dock icon connect (m_dock_action, SIGNAL (triggered (bool)), @@ -494,9 +498,16 @@ if (QApplication::desktop ()->screenNumber (&dummy) == -1) m_recent_float_geom = default_size; - m_recent_dock_geom + // The following is required for ensure smooth transition from old + // saveGeomety to new QRect setting (see comment for restoring size + // of docked widgets) + QVariant dock_geom = settings->value (dw_dock_geometry.key.arg (objectName ()), - dw_dock_geometry.def).toByteArray (); + dw_dock_geometry.def); + if (dock_geom.canConvert (QMetaType::QRect)) + m_recent_dock_geom = dock_geom.toRect (); + else + m_recent_dock_geom = dw_dock_geometry.def.toRect (); notice_settings (settings); // call individual handler @@ -577,7 +588,7 @@ } else { - m_recent_dock_geom = saveGeometry (); + m_recent_dock_geom = geometry (); } }
--- a/libgui/src/octave-dock-widget.h Fri May 29 10:05:36 2020 +0100 +++ b/libgui/src/octave-dock-widget.h Mon Nov 23 12:41:34 2020 +0900 @@ -184,7 +184,7 @@ QString m_icon_color_active; octave_dock_widget *m_predecessor_widget; QRect m_recent_float_geom; - QByteArray m_recent_dock_geom; + QRect m_recent_dock_geom; bool m_waiting_for_mouse_button_release; };