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()
&& !Core::App().passcodeLocked())) {
DEBUG_LOG(("Window Pos: First show, setting minimized after."));
setWindowState(Qt::WindowMinimized);
setWindowState(windowState() | Qt::WindowMinimized);
if (Global::WorkMode().value() == dbiwmTrayOnly
|| Global::WorkMode().value() == dbiwmWindowAndTray) {
hide();

View File

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

View File

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

View File

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

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