Subscribe to QEvent::WindowStateChange instead of QWindow::windowStateChanged

This commit is contained in:
Ilya Fedin 2024-06-18 13:01:17 +04:00 committed by John Preston
parent f768e405fa
commit fc5e9414b7
3 changed files with 21 additions and 40 deletions

View File

@ -383,20 +383,14 @@ void Panel::initWindow() {
&& _fullScreenOrMaximized.current()) {
toggleFullScreen();
}
} else if (e->type() == QEvent::WindowStateChange && _call->rtmp()) {
const auto state = window()->windowState();
_fullScreenOrMaximized = (state & Qt::WindowFullScreen)
|| (state & Qt::WindowMaximized);
}
return base::EventFilterResult::Continue;
});
if (_call->rtmp()) {
QObject::connect(
window()->windowHandle(),
&QWindow::windowStateChanged,
[=](Qt::WindowState state) {
_fullScreenOrMaximized = (state == Qt::WindowFullScreen)
|| (state == Qt::WindowMaximized);
});
}
window()->setBodyTitleArea([=](QPoint widgetPoint) {
using Flag = Ui::WindowTitleHitTestFlag;
const auto titleRect = QRect(

View File

@ -504,6 +504,22 @@ OverlayWidget::OverlayWidget()
if (handleContextMenu(position)) {
return base::EventFilterResult::Cancel;
}
} else if (e->type() == QEvent::WindowStateChange) {
const auto state = _window->windowState();
if (state & Qt::WindowMinimized || Platform::IsMac()) {
} else if (state & Qt::WindowMaximized) {
if (_fullscreen || _windowed) {
_fullscreen = _windowed = false;
savePosition();
}
} else if (_fullscreen || _windowed) {
} else if (state & Qt::WindowFullScreen) {
_fullscreen = true;
savePosition();
} else {
_windowed = true;
savePosition();
}
}
return base::EventFilterResult::Continue;
});
@ -733,29 +749,6 @@ void OverlayWidget::setupWindow() {
return Flag::Move | Flag(0);
});
const auto callback = [=](Qt::WindowState state) {
if (state == Qt::WindowMinimized || Platform::IsMac()) {
return;
} else if (state == Qt::WindowMaximized) {
if (_fullscreen || _windowed) {
_fullscreen = _windowed = false;
savePosition();
}
} else if (_fullscreen || _windowed) {
return;
} else if (state == Qt::WindowFullScreen) {
_fullscreen = true;
savePosition();
} else {
_windowed = true;
savePosition();
}
};
QObject::connect(
_window->windowHandle(),
&QWindow::windowStateChanged,
callback);
_window->setAttribute(Qt::WA_NoSystemBackground, true);
_window->setAttribute(Qt::WA_TranslucentBackground, true);
@ -3246,7 +3239,7 @@ bool OverlayWidget::isHidden() const {
}
bool OverlayWidget::isMinimized() const {
return _window->windowHandle()->windowState() == Qt::WindowMinimized;
return _window->isMinimized();
}
bool OverlayWidget::isFullScreen() const {

View File

@ -459,12 +459,6 @@ void MainWindow::init() {
initHook();
connect(
windowHandle(),
&QWindow::windowStateChanged,
this,
[=](Qt::WindowState state) { handleStateChanged(state); });
updatePalette();
if (Ui::Platform::NativeWindowFrameSupported()) {