Don't showFullScreen() from isMaximized() state.
This commit is contained in:
		
							parent
							
								
									a6d59fccf4
								
							
						
					
					
						commit
						76a2ae4714
					
				
					 3 changed files with 27 additions and 23 deletions
				
			
		| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue