changeset 33375:a45ccf01d41b

use different widget geometry setting when widget launched from cli * gui-settings.h: new constant for settings key extension in order to distinguish widget geometry settings with and without gui * octave-dock-widget.cc (handle_settings): if no main window exists, extend the name of the geometry settings keys; (save_settings): dito
author Torsten Lilge <ttl-octave@mailbox.org>
date Thu, 11 Apr 2024 20:52:32 +0200
parents f2314b4a9b1a
children d7e4a4e1a8fb
files libgui/src/gui-settings.h libgui/src/octave-dock-widget.cc
diffstat 2 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/gui-settings.h	Thu Apr 11 18:24:08 2024 +0200
+++ b/libgui/src/gui-settings.h	Thu Apr 11 20:52:32 2024 +0200
@@ -221,6 +221,9 @@
 // Some constants used in the preferences of several widgets and therefore
 // defined globally here
 
+// Constants for distinguishing between full GUI and dockwidgets initiated
+// from the command line
+const QString settings_no_mainwin ("__no_mainwin");
 // Constants for handling different color schemes
 const QColor settings_color_no_change (255, 0, 255);
 const QStringList settings_color_modes_ext (QStringList () << "" << "_2");
--- a/libgui/src/octave-dock-widget.cc	Thu Apr 11 18:24:08 2024 +0200
+++ b/libgui/src/octave-dock-widget.cc	Thu Apr 11 20:52:32 2024 +0200
@@ -513,6 +513,7 @@
   QRect default_floating_size = QRect (x+16, y+32, w/3, h/2);
 
   QRect default_dock_size;
+  QString key_ext;
   if (m_main_window)
     {
       // We have a main window, dock size depends on size of main window
@@ -523,10 +524,11 @@
     {
       // No main window, default dock size should never be used
       default_dock_size = QRect (0, 0, w/10, h/10);
+      key_ext = settings_no_mainwin;
     }
 
   m_recent_float_geom
-    = settings.value (dw_float_geometry.settings_key ().arg (objectName ()),
+    = settings.value (dw_float_geometry.settings_key ().arg (objectName ()) + key_ext,
                       default_floating_size).toRect ();
 
   adjust_to_screen (m_recent_float_geom, default_floating_size);
@@ -535,7 +537,7 @@
   // saveGeomety to new QRect setting (see comment for restoring size
   // of docked widgets)
   QVariant dock_geom
-    = settings.value (dw_dock_geometry.settings_key ().arg (objectName ()),
+    = settings.value (dw_dock_geometry.settings_key ().arg (objectName ()) + key_ext,
                       default_dock_size);
 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
   if (dock_geom.canConvert (QMetaType (QMetaType::QRect)))
@@ -588,15 +590,19 @@
 
   store_geometry ();
 
+  QString key_ext;
+  if (! m_main_window)
+    key_ext = settings_no_mainwin;
+
   // conditional needed?
   if (! m_recent_float_geom.isNull ())
-    settings.setValue (dw_float_geometry.settings_key ().arg (name), m_recent_float_geom);
+    settings.setValue (dw_float_geometry.settings_key ().arg (name) + key_ext, m_recent_float_geom);
 
   if (! m_recent_dock_geom.isEmpty ())
-    settings.setValue (dw_dock_geometry.settings_key ().arg (name), m_recent_dock_geom);
-  settings.setValue (dw_is_visible.settings_key ().arg (name), isVisible ()); // store visibility
-  settings.setValue (dw_is_floating.settings_key ().arg (name), isFloating ()); // store floating
-  settings.setValue (dw_is_minimized.settings_key ().arg (name), isMinimized ()); // store minimized
+    settings.setValue (dw_dock_geometry.settings_key ().arg (name) + key_ext, m_recent_dock_geom);
+  settings.setValue (dw_is_visible.settings_key ().arg (name) + key_ext, isVisible ()); // store visibility
+  settings.setValue (dw_is_floating.settings_key ().arg (name) + key_ext, isFloating ()); // store floating
+  settings.setValue (dw_is_minimized.settings_key ().arg (name) + key_ext, isMinimized ()); // store minimized
 
   settings.sync ();
 }