Mercurial > octave
diff libgui/src/octave-dock-widget.cc @ 25355:5bb07f6e3707
fix uninitialized settings of octave dock widgets at startup (bug #53835)
* octave-dock-widget.cc (octave_dock_widget): new parameter for object name
allowing to set the object name as very first action, call handle_settings
already in the ctor of this class;
(qdockwidget_css): minor update of the dock/hide icon geometry
(make_widget): do not use stored dock area for re-docking;
(handle_settings): do not read dock area but do read last dock geometry;
(save_settings): get latest geometry before saving the settings, do not
save the dock area;
* octave-dock-widget.h: object name as new parameter for ctor,
delete class variable for storing dock area
* documentation-dock-widget.cc (documentation_dock_widget): provide object
name as new parameter to octave_dock_widget
* files-dock-widget.cc (files_dock_widget): dito
* history-dock-widget.cc (history_dock_widget): dito
* file-editor-interface.h (file_editor_interface): dito
* terminal-dock-widget.cc (terminal_dock_widget): dito
* variable-editor.cc (variable_editor): dito
* workspace-view.cc (workspace_view): dito
* variable-editor-model.cc (base_ve_model::data): remove code snippets that
were previously canceled by #if 0 statement
author | Torsten <mttl@mailbox.org> |
---|---|
date | Sun, 06 May 2018 16:27:18 +0200 |
parents | 05a690606fd5 |
children | 1008b4797a6e |
line wrap: on
line diff
--- a/libgui/src/octave-dock-widget.cc Sun May 06 00:19:03 2018 -0500 +++ b/libgui/src/octave-dock-widget.cc Sun May 06 16:27:18 2018 +0200 @@ -169,14 +169,15 @@ ).arg (close_icon).arg (float_icon).arg (icon_size) .arg (close_tooltip).arg (float_tooltip) .arg (titlebar_foreground). arg (titlebar_background) - .arg ((icon_size*2)/3). arg((icon_size*8)/3); + .arg ((icon_size*2)/3). arg((icon_size*7)/3); } - octave_dock_widget::octave_dock_widget (QWidget *p) - : label_dock_widget (p), m_recent_float_geom (), - m_recent_dock_area (Qt::NoDockWidgetArea), m_recent_dock_geom (), + octave_dock_widget::octave_dock_widget (const QString& obj_name, QWidget *p) + : label_dock_widget (p), m_recent_float_geom (), m_recent_dock_geom (), m_waiting_for_mouse_button_release (false) { + setObjectName (obj_name); + m_parent = static_cast<QMainWindow *> (p); // store main window m_predecessor_widget = nullptr; @@ -229,6 +230,8 @@ setFocusPolicy (Qt::StrongFocus); setFeatures (QDockWidget::AllDockWidgetFeatures); + + handle_settings (resource_manager::get_settings ()); } // connect signal visibility changed to related slot (called from main-window) @@ -298,7 +301,7 @@ // Stay window, otherwise will bounce back to window by default because // there is no layout information for this widget in the saved settings. setParent (m_parent, Qt::Window); - m_parent->addDockWidget (m_recent_dock_area, this); + m_parent->addDockWidget (Qt::BottomDockWidgetArea, this); // recover old window states, hide and re-show new added widget m_parent->restoreState (settings->value ("MainWindow/windowState").toByteArray ()); setFloating (false); @@ -429,19 +432,8 @@ + "_floating_geometry", QRect (50,100,480,480)).toRect (); -#if 0 - m_recent_dock_area = settings->value ("DockWidgets/" + objectName () - + "_dock_area", Qt::NoDockWidgetArea).toInt (); -#else - m_recent_dock_area = Qt::NoDockWidgetArea; -#endif - -#if 0 m_recent_dock_geom = settings->value ("DockWidgets/" + objectName (), - QByteArray ()).toRect (); -#else - m_recent_dock_geom = QByteArray (); -#endif + QByteArray ()).toByteArray (); notice_settings (settings); // call individual handler @@ -475,6 +467,8 @@ if (! settings) return; + store_geometry (); + settings->beginGroup ("DockWidgets"); // conditional needed? @@ -482,10 +476,7 @@ settings->setValue (name + "_floating_geometry", m_recent_float_geom); if (! m_recent_dock_geom.isEmpty ()) - { - settings->setValue (name + "_dock_area", m_recent_dock_area); - settings->setValue (name, m_recent_dock_geom); - } + settings->setValue (name, m_recent_dock_geom); settings->setValue (name+"Visible", isVisible ()); // store visibility settings->setValue (name+"Floating", isFloating ()); // store floating settings->setValue (name+"_minimized", isMinimized ()); // store minimized @@ -515,7 +506,6 @@ } else { - m_recent_dock_area = m_parent->dockWidgetArea (this); m_recent_dock_geom = saveGeometry (); } }