Don't showFullScreen() from isMaximized() state.

This commit is contained in:
John Preston 2022-03-04 15:14:15 +04:00
parent a6d59fccf4
commit 76a2ae4714
3 changed files with 27 additions and 23 deletions

View file

@ -1125,7 +1125,7 @@ groupCallTitle: WindowTitle(defaultWindowTitle) {
groupCallPinOnTop: IconButton(groupCallTitleButton) { groupCallPinOnTop: IconButton(groupCallTitleButton) {
icon: icon{{ "calls/navbar_pin", groupCallMemberNotJoinedStatus }}; icon: icon{{ "calls/navbar_pin", groupCallMemberNotJoinedStatus }};
iconOver: icon{{ "calls/navbar_pin", groupCallMembersFg }}; iconOver: icon{{ "calls/navbar_pin", groupCallMembersFg }};
iconPosition: point(0px, 4px); iconPosition: point(0px, 2px);
} }
groupCallMajorBlobIdleRadius: 2px; groupCallMajorBlobIdleRadius: 2px;

View file

@ -267,19 +267,23 @@ void Panel::initWindow() {
_call->pushToTalk( _call->pushToTalk(
e->type() == QEvent::KeyPress, e->type() == QEvent::KeyPress,
kSpacePushToTalkDelay); kSpacePushToTalkDelay);
} else if (key == Qt::Key_Escape && _fullScreen.current()) { } else if (key == Qt::Key_Escape
toggleFullScreen(false); && _fullScreenOrMaximized.current()) {
toggleFullScreen();
} }
} }
return base::EventFilterResult::Continue; return base::EventFilterResult::Continue;
}); });
QObject::connect( if (_call->rtmp()) {
window()->windowHandle(), QObject::connect(
&QWindow::windowStateChanged, window()->windowHandle(),
[=](Qt::WindowState state) { &QWindow::windowStateChanged,
_fullScreen = (state == Qt::WindowFullScreen); [=](Qt::WindowState state) {
}); _fullScreenOrMaximized = (state == Qt::WindowFullScreen)
|| (state == Qt::WindowMaximized);
});
}
window()->setBodyTitleArea([=](QPoint widgetPoint) { window()->setBodyTitleArea([=](QPoint widgetPoint) {
using Flag = Ui::WindowTitleHitTestFlag; using Flag = Ui::WindowTitleHitTestFlag;
@ -383,7 +387,7 @@ void Panel::initControls() {
} }
return; return;
} else if (_call->rtmp()) { } else if (_call->rtmp()) {
toggleFullScreen(!_fullScreen.current()); toggleFullScreen();
return; return;
} }
@ -471,11 +475,11 @@ void Panel::initControls() {
refreshControlsBackground(); refreshControlsBackground();
} }
void Panel::toggleFullScreen(bool fullscreen) { void Panel::toggleFullScreen() {
if (fullscreen) { if (_fullScreenOrMaximized.current()) {
window()->showFullScreen();
} else {
window()->showNormal(); window()->showNormal();
} else {
window()->showFullScreen();
} }
} }
@ -646,7 +650,7 @@ void Panel::setupRealMuteButtonState(not_null<Data::GroupCall*> real) {
real->scheduleStartSubscribedValue(), real->scheduleStartSubscribedValue(),
_call->canManageValue(), _call->canManageValue(),
_mode.value(), _mode.value(),
_fullScreen.value() _fullScreenOrMaximized.value()
) | rpl::distinct_until_changed( ) | rpl::distinct_until_changed(
) | rpl::filter( ) | rpl::filter(
_2 != GroupCall::InstanceState::TransitionToRtc _2 != GroupCall::InstanceState::TransitionToRtc
@ -657,7 +661,7 @@ void Panel::setupRealMuteButtonState(not_null<Data::GroupCall*> real) {
bool scheduleStartSubscribed, bool scheduleStartSubscribed,
bool canManage, bool canManage,
PanelMode mode, PanelMode mode,
bool fullScreen) { bool fullScreenOrMaximized) {
const auto wide = (mode == PanelMode::Wide); const auto wide = (mode == PanelMode::Wide);
using Type = Ui::CallMuteButtonType; using Type = Ui::CallMuteButtonType;
using ExpandType = Ui::CallMuteButtonExpandType; using ExpandType = Ui::CallMuteButtonExpandType;
@ -699,7 +703,7 @@ void Panel::setupRealMuteButtonState(not_null<Data::GroupCall*> real) {
: Type::Active), : Type::Active),
.expandType = ((scheduleDate || !_call->rtmp()) .expandType = ((scheduleDate || !_call->rtmp())
? ExpandType::None ? ExpandType::None
: fullScreen : fullScreenOrMaximized
? ExpandType::Expanded ? ExpandType::Expanded
: ExpandType::Normal), : ExpandType::Normal),
}); });
@ -1142,10 +1146,10 @@ void Panel::createPinOnTop() {
} }
} }
}; };
_fullScreen.value( _fullScreenOrMaximized.value(
) | rpl::start_with_next([=](bool fullscreen) { ) | rpl::start_with_next([=](bool fullScreenOrMaximized) {
_pinOnTop->setVisible(!fullscreen); _pinOnTop->setVisible(!fullScreenOrMaximized);
if (fullscreen) { if (fullScreenOrMaximized) {
pin(false); pin(false);
_viewport->rp()->events( _viewport->rp()->events(

View file

@ -130,7 +130,7 @@ private:
bool handleClose(); bool handleClose();
void startScheduledNow(); void startScheduledNow();
void toggleFullScreen(bool fullscreen); void toggleFullScreen();
void trackControls(bool track, bool force = false); void trackControls(bool track, bool force = false);
void raiseControls(); void raiseControls();
void enlargeVideo(); void enlargeVideo();
@ -199,7 +199,7 @@ private:
Ui::GL::Window _window; Ui::GL::Window _window;
const std::unique_ptr<Ui::LayerManager> _layerBg; const std::unique_ptr<Ui::LayerManager> _layerBg;
rpl::variable<PanelMode> _mode; rpl::variable<PanelMode> _mode;
rpl::variable<bool> _fullScreen = false; rpl::variable<bool> _fullScreenOrMaximized = false;
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
const std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls; const std::unique_ptr<Ui::Platform::SeparateTitleControls> _controls;