Correctly minimize window.

Fixes #6932.
This commit is contained in:
John Preston 2020-01-02 14:57:36 +03:00
parent 4eeac7dc18
commit 322367c1b1
5 changed files with 27 additions and 13 deletions

View File

@ -825,7 +825,7 @@ void MainWindow::psFirstShow() {
&& cStartMinimized() && cStartMinimized()
&& !Core::App().passcodeLocked())) { && !Core::App().passcodeLocked())) {
DEBUG_LOG(("Window Pos: First show, setting minimized after.")); DEBUG_LOG(("Window Pos: First show, setting minimized after."));
setWindowState(Qt::WindowMinimized); setWindowState(windowState() | Qt::WindowMinimized);
if (Global::WorkMode().value() == dbiwmTrayOnly if (Global::WorkMode().value() == dbiwmTrayOnly
|| Global::WorkMode().value() == dbiwmWindowAndTray) { || Global::WorkMode().value() == dbiwmWindowAndTray) {
hide(); hide();

View File

@ -23,17 +23,20 @@ TitleWidget::TitleWidget(QWidget *parent)
, _close(this, _st.close) , _close(this, _st.close)
, _shadow(this, st::titleShadow) , _shadow(this, st::titleShadow)
, _maximizedState(parent->window()->windowState() & Qt::WindowMaximized) { , _maximizedState(parent->window()->windowState() & Qt::WindowMaximized) {
_minimize->setClickedCallback([this]() { _minimize->setClickedCallback([=] {
window()->setWindowState(Qt::WindowMinimized); window()->setWindowState(
window()->windowState() | Qt::WindowMinimized);
_minimize->clearState(); _minimize->clearState();
}); });
_minimize->setPointerCursor(false); _minimize->setPointerCursor(false);
_maximizeRestore->setClickedCallback([this]() { _maximizeRestore->setClickedCallback([=] {
window()->setWindowState(_maximizedState ? Qt::WindowNoState : Qt::WindowMaximized); window()->setWindowState(_maximizedState
? Qt::WindowNoState
: Qt::WindowMaximized);
_maximizeRestore->clearState(); _maximizeRestore->clearState();
}); });
_maximizeRestore->setPointerCursor(false); _maximizeRestore->setPointerCursor(false);
_close->setClickedCallback([this]() { _close->setClickedCallback([=] {
window()->close(); window()->close();
_close->clearState(); _close->clearState();
}); });

View File

@ -238,13 +238,24 @@ bool EventFilter::mainWindowEvent(
} return false; } return false;
case WM_COMMAND: { case WM_COMMAND: {
if (HIWORD(wParam)) return false; if (HIWORD(wParam)) {
return false;
}
int cmd = LOWORD(wParam); int cmd = LOWORD(wParam);
switch (cmd) { switch (cmd) {
case SC_CLOSE: _window->close(); return true; case SC_CLOSE:
case SC_MINIMIZE: _window->setWindowState(Qt::WindowMinimized); return true; _window->close();
case SC_MAXIMIZE: _window->setWindowState(Qt::WindowMaximized); return true; return true;
case SC_RESTORE: _window->setWindowState(Qt::WindowNoState); return true; case SC_MINIMIZE:
_window->setWindowState(
_window->windowState() | Qt::WindowMinimized);
return true;
case SC_MAXIMIZE:
_window->setWindowState(Qt::WindowMaximized);
return true;
case SC_RESTORE:
_window->setWindowState(Qt::WindowNoState);
return true;
} }
} return true; } return true;

View File

@ -102,7 +102,7 @@ void Controller::minimize() {
if (Global::WorkMode().value() == dbiwmTrayOnly) { if (Global::WorkMode().value() == dbiwmTrayOnly) {
_widget.minimizeToTray(); _widget.minimizeToTray();
} else { } else {
_widget.setWindowState(Qt::WindowMinimized); _widget.setWindowState(_widget.windowState() | Qt::WindowMinimized);
} }
} }

@ -1 +1 @@
Subproject commit d30d361609d4b76d3a55b1329642caee30b82264 Subproject commit 0aadf4ca7d483600122bacac1bf24bb6cfe7e448