Mercurial > octave
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