restore window maximized state on toggle
Otherwise the window will have a maximized size but not maximized state after toggling it from system tray
This commit is contained in:
@@ -73,6 +73,16 @@ void WindowControllerTest::toggle()
|
|||||||
instance.toggleWindow();
|
instance.toggleWindow();
|
||||||
QCOMPARE(window.windowState(), Qt::WindowNoState);
|
QCOMPARE(window.windowState(), Qt::WindowNoState);
|
||||||
QCOMPARE(window.isVisible(), false);
|
QCOMPARE(window.isVisible(), false);
|
||||||
|
|
||||||
|
// make sure we restore maximized state when toggling
|
||||||
|
instance.toggleWindow();
|
||||||
|
window.setVisibility(QWindow::Maximized);
|
||||||
|
QCOMPARE(window.windowState(), Qt::WindowMaximized);
|
||||||
|
instance.toggleWindow();
|
||||||
|
QCOMPARE(window.isVisible(), false);
|
||||||
|
instance.toggleWindow();
|
||||||
|
QCOMPARE(window.windowState(), Qt::WindowMaximized);
|
||||||
|
QCOMPARE(window.isVisible(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(WindowControllerTest)
|
QTEST_MAIN(WindowControllerTest)
|
||||||
|
|||||||
@@ -32,6 +32,16 @@ void WindowController::setWindow(QWindow *window)
|
|||||||
{
|
{
|
||||||
m_window = window;
|
m_window = window;
|
||||||
|
|
||||||
|
if (window != nullptr) {
|
||||||
|
// to restore maximized state after reopening from the system tray
|
||||||
|
connect(m_window, &QWindow::windowStateChanged, this, [this]() {
|
||||||
|
if (m_window->isVisible()) {
|
||||||
|
m_wasMaximized = m_window->windowStates() & Qt::WindowMaximized;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
m_wasMaximized = m_window->windowStates() & Qt::WindowMaximized;
|
||||||
|
}
|
||||||
|
|
||||||
Q_EMIT windowChanged();
|
Q_EMIT windowChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +56,11 @@ void WindowController::showAndRaiseWindow(const QString &startupId)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!m_window->isVisible()) {
|
if (!m_window->isVisible()) {
|
||||||
m_window->show();
|
if (m_wasMaximized) {
|
||||||
|
m_window->showMaximized();
|
||||||
|
} else {
|
||||||
|
m_window->show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_WINDOWSYSTEM
|
#ifdef HAVE_WINDOWSYSTEM
|
||||||
|
|||||||
@@ -67,5 +67,6 @@ Q_SIGNALS:
|
|||||||
private:
|
private:
|
||||||
WindowController() = default;
|
WindowController() = default;
|
||||||
|
|
||||||
|
bool m_wasMaximized;
|
||||||
QWindow *m_window = nullptr;
|
QWindow *m_window = nullptr;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user