From aff094f278b8cda86f2a2de6e122d72732994da6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 27 Jun 2023 13:59:36 +0400 Subject: [PATCH] Prevent some accidental story closing. --- .../media/stories/media_stories_controller.cpp | 9 +++++++++ .../SourceFiles/media/stories/media_stories_controller.h | 1 + .../SourceFiles/media/stories/media_stories_view.cpp | 4 ++++ Telegram/SourceFiles/media/stories/media_stories_view.h | 1 + .../SourceFiles/media/view/media_view_overlay_widget.cpp | 4 +++- 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp index 40cd9fc4a..ab7e2ab48 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp @@ -505,6 +505,15 @@ ContentLayout Controller::contentLayout() const { }; } +bool Controller::closeByClickAt(QPoint position) const { + const auto ¤t = _layout.current(); + Assert(current.has_value()); + + return (position.x() < current->content.x() - st::storiesControlSize) + || (position.x() > current->content.x() + current->content.width() + + st::storiesControlSize); +} + Data::FileOrigin Controller::fileOrigin() const { return Data::FileOriginStory(_shown.peer, _shown.story); } diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.h b/Telegram/SourceFiles/media/stories/media_stories_controller.h index 89dda44d4..c7137a250 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.h +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.h @@ -101,6 +101,7 @@ public: [[nodiscard]] Layout layout() const; [[nodiscard]] rpl::producer layoutValue() const; [[nodiscard]] ContentLayout contentLayout() const; + [[nodiscard]] bool closeByClickAt(QPoint position) const; [[nodiscard]] Data::FileOrigin fileOrigin() const; [[nodiscard]] TextWithEntities captionText() const; void showFullCaption(); diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.cpp b/Telegram/SourceFiles/media/stories/media_stories_view.cpp index b79064e2e..79528eb11 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_view.cpp @@ -51,6 +51,10 @@ ContentLayout View::contentLayout() const { return _controller->contentLayout(); } +bool View::closeByClickAt(QPoint position) const { + return _controller->closeByClickAt(position); +} + void View::updatePlayback(const Player::TrackState &state) { _controller->updateVideoPlayback(state); } diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.h b/Telegram/SourceFiles/media/stories/media_stories_view.h index dabb6952a..d2f62a0ac 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.h +++ b/Telegram/SourceFiles/media/stories/media_stories_view.h @@ -60,6 +60,7 @@ public: [[nodiscard]] QRect finalShownGeometry() const; [[nodiscard]] rpl::producer finalShownGeometryValue() const; [[nodiscard]] ContentLayout contentLayout() const; + [[nodiscard]] bool closeByClickAt(QPoint position) const; [[nodiscard]] SiblingView sibling(SiblingType type) const; [[nodiscard]] Data::FileOrigin fileOrigin() const; [[nodiscard]] TextWithEntities captionText() const; diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 29415489f..6fc85848f 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -5576,7 +5576,9 @@ void OverlayWidget::handleMouseRelease( || documentContentShown() || !documentBubbleShown() || !_docRect.contains(position)) { - close(); + if (!_stories || _stories->closeByClickAt(position)) { + close(); + } } } _pressed = false;