summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/windowsupport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/windowsupport.cpp')
-rw-r--r--src/plugins/coreplugin/windowsupport.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/windowsupport.cpp b/src/plugins/coreplugin/windowsupport.cpp
index 9f99981895..ae229fef26 100644
--- a/src/plugins/coreplugin/windowsupport.cpp
+++ b/src/plugins/coreplugin/windowsupport.cpp
@@ -116,6 +116,11 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event)
updateFullScreenAction();
} else if (event->type() == QEvent::WindowActivate) {
WindowList::setActiveWindow(m_window);
+ } else if (event->type() == QEvent::Hide) {
+ // minimized windows are hidden, but we still want to show them
+ WindowList::setWindowVisible(m_window, m_window->isMinimized());
+ } else if (event->type() == QEvent::Show) {
+ WindowList::setWindowVisible(m_window, true);
}
return false;
}
@@ -165,6 +170,7 @@ void WindowList::addWindow(QWidget *window)
Context(Constants::C_GLOBAL));
cmd->setAttribute(Command::CA_UpdateText);
ActionManager::actionContainer(Constants::M_WINDOW)->addAction(cmd, Constants::G_WINDOW_LIST);
+ action->setVisible(window->isVisible() || window->isMinimized()); // minimized windows are hidden but should be shown
QObject::connect(window, &QWidget::windowTitleChanged, [window]() { WindowList::updateTitle(window); });
if (m_dockMenu)
m_dockMenu->addAction(action);
@@ -215,5 +221,13 @@ void WindowList::setActiveWindow(QWidget *window)
m_windowActions.at(i)->setChecked(m_windows.at(i) == window);
}
+void WindowList::setWindowVisible(QWidget *window, bool visible)
+{
+ int index = m_windows.indexOf(window);
+ QTC_ASSERT(index >= 0, return);
+ QTC_ASSERT(index < m_windowActions.size(), return);
+ m_windowActions.at(index)->setVisible(visible);
+}
+
} // Internal
} // Core