From 76a2ae47146d3ab34d2c47eb632bc7376ee5e645 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 4 Mar 2022 15:14:15 +0400 Subject: [PATCH] Don't showFullScreen() from isMaximized() state. --- Telegram/SourceFiles/calls/calls.style | 2 +- .../calls/group/calls_group_panel.cpp | 44 ++++++++++--------- .../calls/group/calls_group_panel.h | 4 +- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Telegram/SourceFiles/calls/calls.style b/Telegram/SourceFiles/calls/calls.style index ea751a99d..b8b366e70 100644 --- a/Telegram/SourceFiles/calls/calls.style +++ b/Telegram/SourceFiles/calls/calls.style @@ -1125,7 +1125,7 @@ groupCallTitle: WindowTitle(defaultWindowTitle) { groupCallPinOnTop: IconButton(groupCallTitleButton) { icon: icon{{ "calls/navbar_pin", groupCallMemberNotJoinedStatus }}; iconOver: icon{{ "calls/navbar_pin", groupCallMembersFg }}; - iconPosition: point(0px, 4px); + iconPosition: point(0px, 2px); } groupCallMajorBlobIdleRadius: 2px; diff --git a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp index f6187af81..87178dec6 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_panel.cpp +++ b/Telegram/SourceFiles/calls/group/calls_group_panel.cpp @@ -267,19 +267,23 @@ void Panel::initWindow() { _call->pushToTalk( e->type() == QEvent::KeyPress, kSpacePushToTalkDelay); - } else if (key == Qt::Key_Escape && _fullScreen.current()) { - toggleFullScreen(false); + } else if (key == Qt::Key_Escape + && _fullScreenOrMaximized.current()) { + toggleFullScreen(); } } return base::EventFilterResult::Continue; }); - QObject::connect( - window()->windowHandle(), - &QWindow::windowStateChanged, - [=](Qt::WindowState state) { - _fullScreen = (state == Qt::WindowFullScreen); - }); + 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; @@ -383,7 +387,7 @@ void Panel::initControls() { } return; } else if (_call->rtmp()) { - toggleFullScreen(!_fullScreen.current()); + toggleFullScreen(); return; } @@ -471,11 +475,11 @@ void Panel::initControls() { refreshControlsBackground(); } -void Panel::toggleFullScreen(bool fullscreen) { - if (fullscreen) { - window()->showFullScreen(); - } else { +void Panel::toggleFullScreen() { + if (_fullScreenOrMaximized.current()) { window()->showNormal(); + } else { + window()->showFullScreen(); } } @@ -646,7 +650,7 @@ void Panel::setupRealMuteButtonState(not_null real) { real->scheduleStartSubscribedValue(), _call->canManageValue(), _mode.value(), - _fullScreen.value() + _fullScreenOrMaximized.value() ) | rpl::distinct_until_changed( ) | rpl::filter( _2 != GroupCall::InstanceState::TransitionToRtc @@ -657,7 +661,7 @@ void Panel::setupRealMuteButtonState(not_null real) { bool scheduleStartSubscribed, bool canManage, PanelMode mode, - bool fullScreen) { + bool fullScreenOrMaximized) { const auto wide = (mode == PanelMode::Wide); using Type = Ui::CallMuteButtonType; using ExpandType = Ui::CallMuteButtonExpandType; @@ -699,7 +703,7 @@ void Panel::setupRealMuteButtonState(not_null real) { : Type::Active), .expandType = ((scheduleDate || !_call->rtmp()) ? ExpandType::None - : fullScreen + : fullScreenOrMaximized ? ExpandType::Expanded : ExpandType::Normal), }); @@ -1142,10 +1146,10 @@ void Panel::createPinOnTop() { } } }; - _fullScreen.value( - ) | rpl::start_with_next([=](bool fullscreen) { - _pinOnTop->setVisible(!fullscreen); - if (fullscreen) { + _fullScreenOrMaximized.value( + ) | rpl::start_with_next([=](bool fullScreenOrMaximized) { + _pinOnTop->setVisible(!fullScreenOrMaximized); + if (fullScreenOrMaximized) { pin(false); _viewport->rp()->events( diff --git a/Telegram/SourceFiles/calls/group/calls_group_panel.h b/Telegram/SourceFiles/calls/group/calls_group_panel.h index b057f29f2..cc64b4102 100644 --- a/Telegram/SourceFiles/calls/group/calls_group_panel.h +++ b/Telegram/SourceFiles/calls/group/calls_group_panel.h @@ -130,7 +130,7 @@ private: bool handleClose(); void startScheduledNow(); - void toggleFullScreen(bool fullscreen); + void toggleFullScreen(); void trackControls(bool track, bool force = false); void raiseControls(); void enlargeVideo(); @@ -199,7 +199,7 @@ private: Ui::GL::Window _window; const std::unique_ptr _layerBg; rpl::variable _mode; - rpl::variable _fullScreen = false; + rpl::variable _fullScreenOrMaximized = false; #ifndef Q_OS_MAC const std::unique_ptr _controls;