From 47f9978c462d3fa90734b6e0e8339490b438fc77 Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Mon, 3 Feb 2020 13:50:26 +0400 Subject: [PATCH] Double click on PiP to switch back to fullscreen. --- .../SourceFiles/media/view/media_view_pip.cpp | 15 +++++++++++++++ Telegram/SourceFiles/media/view/media_view_pip.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp index 8d59f2b82..bde3895bb 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip.cpp +++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp @@ -734,6 +734,9 @@ void Pip::setupPanel() { case QEvent::MouseButtonRelease: handleMouseRelease(static_cast<QMouseEvent*>(e.get())->button()); break; + case QEvent::MouseButtonDblClick: + handleDoubleClick(static_cast<QMouseEvent*>(e.get())->button()); + break; } }, _panel.lifetime()); } @@ -797,9 +800,11 @@ void Pip::handleMouseRelease(Qt::MouseButton button) { || _panel.dragging() || !pressed || *pressed != _over) { + _lastHandledPress = std::nullopt; return; } + _lastHandledPress = _over; switch (_over) { case OverState::Close: _panel.close(); break; case OverState::Enlarge: _closeAndContinue(); break; @@ -807,6 +812,16 @@ void Pip::handleMouseRelease(Qt::MouseButton button) { } } +void Pip::handleDoubleClick(Qt::MouseButton button) { + if (_over != OverState::Other + || !_lastHandledPress + || *_lastHandledPress != _over) { + return; + } + playbackPauseResume(); // Un-click the first click. + _closeAndContinue(); +} + void Pip::setupButtons() { _close.state = OverState::Close; _enlarge.state = OverState::Enlarge; diff --git a/Telegram/SourceFiles/media/view/media_view_pip.h b/Telegram/SourceFiles/media/view/media_view_pip.h index 7ad917029..d59294f11 100644 --- a/Telegram/SourceFiles/media/view/media_view_pip.h +++ b/Telegram/SourceFiles/media/view/media_view_pip.h @@ -153,6 +153,7 @@ private: void handleMouseMove(QPoint position); void handleMousePress(Qt::MouseButton button); void handleMouseRelease(Qt::MouseButton button); + void handleDoubleClick(Qt::MouseButton button); void handleLeave(); void handleClose(); @@ -166,6 +167,7 @@ private: bool _showPause = false; OverState _over = OverState::None; std::optional<OverState> _pressed; + std::optional<OverState> _lastHandledPress; Button _close; Button _enlarge; Button _playback;