From fc5e9414b7c731bc67f32d2a70440c627374299a Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Tue, 18 Jun 2024 13:01:17 +0400 Subject: [PATCH] Subscribe to QEvent::WindowStateChange instead of QWindow::windowStateChanged --- .../calls/group/calls_group_panel.cpp | 14 ++----- .../media/view/media_view_overlay_widget.cpp | 41 ++++++++----------- Telegram/SourceFiles/window/main_window.cpp | 6 --- 3 files changed, 21 insertions(+), 40 deletions(-) diff --git a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp index 9e967b50e6..84c3361310 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp @@ -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( diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 6430bd56f6..7afc541998 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -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 { diff --git a/Telegram/SourceFiles/window/main_window.cpp b/Telegram/SourceFiles/window/main_window.cpp index 77ce6d20f1..f1b1f7c0b8 100644 --- a/Telegram/SourceFiles/window/main_window.cpp +++ b/Telegram/SourceFiles/window/main_window.cpp @@ -459,12 +459,6 @@ void MainWindow::init() { initHook(); - connect( - windowHandle(), - &QWindow::windowStateChanged, - this, - [=](Qt::WindowState state) { handleStateChanged(state); }); - updatePalette(); if (Ui::Platform::NativeWindowFrameSupported()) {