changeset 25356:1008b4797a6e

fix visibility of dock widgets at startup * main-window.cc (set_window_layout): use already defined variable instead of calling objectName again * octave-dock-widget.cc (make_widget, make_window): show the widget only if it already was visible before bringing it into a widget or a window
author Torsten <mttl@mailbox.org>
date Sun, 06 May 2018 20:59:05 +0200
parents 5bb07f6e3707
children 7aeafec2b102
files libgui/src/main-window.cc libgui/src/octave-dock-widget.cc
diffstat 2 files changed, 19 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Sun May 06 16:27:18 2018 +0200
+++ b/libgui/src/main-window.cc	Sun May 06 20:59:05 2018 +0200
@@ -1253,7 +1253,7 @@
 
                 if (visible)
                   {
-                    if (settings->value ("DockWidgets/" + widget->objectName ()
+                    if (settings->value ("DockWidgets/" + name
                                          + "_minimized").toBool ())
                       widget->showMinimized ();
                     else
--- a/libgui/src/octave-dock-widget.cc	Sun May 06 16:27:18 2018 +0200
+++ b/libgui/src/octave-dock-widget.cc	Sun May 06 20:59:05 2018 +0200
@@ -247,6 +247,8 @@
   void
   octave_dock_widget::make_window (bool)
   {
+    bool vis = isVisible ();
+
     // prevent follow-up calls by clearing state variable
     m_waiting_for_mouse_button_release = false;
 
@@ -284,16 +286,21 @@
                  this, SLOT (make_widget (bool)));
       }
 
-    raise ();
-    show ();
-    activateWindow ();
-    setFocus ();
+    if (vis)
+    {
+      raise ();
+      show ();
+      activateWindow ();
+      setFocus ();
+    }
   }
 
   // dock the widget
   void
   octave_dock_widget::make_widget (bool)
   {
+    bool vis = isVisible ();
+
     // Since floating widget has no parent, we have to read it
     QSettings *settings = resource_manager::get_settings ();
 
@@ -305,16 +312,10 @@
     // recover old window states, hide and re-show new added widget
     m_parent->restoreState (settings->value ("MainWindow/windowState").toByteArray ());
     setFloating (false);
-    show ();
-    QApplication::setActiveWindow (this);
-    focus ();
 
     // adjust the (un)dock icon
     if (titleBarWidget ())
       {
-#if defined (Q_OS_UNIX)
-        m_title_widget->setToolTip ("");
-#endif
         m_dock_action->setIcon (QIcon (":/actions/icons/widget-undock"
                                        + m_icon_color + ".png"));
         m_dock_action->setToolTip (tr ("Undock widget"));
@@ -329,6 +330,13 @@
         connect (m_default_float_button, SIGNAL (clicked (bool)),
                  this, SLOT (make_window (bool)));
       }
+
+    if (vis)
+      {
+        show ();
+        QApplication::setActiveWindow (this);
+        focus ();
+      }
   }
 
   // dock the widget