diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp index f6d4ad519..b42a0bd74 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.cpp @@ -1448,6 +1448,10 @@ bool Controller::ignoreWindowMove(QPoint position) const { || _header->ignoreWindowMove(position); } +void Controller::tryProcessKeyInput(not_null e) { + _replyArea->tryProcessKeyInput(e); +} + rpl::lifetime &Controller::lifetime() { return _lifetime; } diff --git a/Telegram/SourceFiles/media/stories/media_stories_controller.h b/Telegram/SourceFiles/media/stories/media_stories_controller.h index 18951e7ad..19b2de4d9 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_controller.h +++ b/Telegram/SourceFiles/media/stories/media_stories_controller.h @@ -161,6 +161,7 @@ public: void togglePinnedRequested(bool pinned); [[nodiscard]] bool ignoreWindowMove(QPoint position) const; + void tryProcessKeyInput(not_null e); [[nodiscard]] rpl::lifetime &lifetime(); diff --git a/Telegram/SourceFiles/media/stories/media_stories_reply.cpp b/Telegram/SourceFiles/media/stories/media_stories_reply.cpp index 339a92181..1497a60e4 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_reply.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_reply.cpp @@ -681,6 +681,10 @@ bool ReplyArea::ignoreWindowMove(QPoint position) const { return _controls->isRecordingPressed(); } +void ReplyArea::tryProcessKeyInput(not_null e) { + _controls->tryProcessKeyInput(e); +} + void ReplyArea::showPremiumToast(not_null emoji) { // #TODO stories } diff --git a/Telegram/SourceFiles/media/stories/media_stories_reply.h b/Telegram/SourceFiles/media/stories/media_stories_reply.h index 25594c59b..9b9662b4a 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_reply.h +++ b/Telegram/SourceFiles/media/stories/media_stories_reply.h @@ -68,6 +68,7 @@ public: [[nodiscard]] rpl::producer hasSendTextValue() const; [[nodiscard]] bool ignoreWindowMove(QPoint position) const; + void tryProcessKeyInput(not_null e); private: class Cant; diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.cpp b/Telegram/SourceFiles/media/stories/media_stories_view.cpp index 63fe641da..240a39b4e 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_view.cpp @@ -107,6 +107,10 @@ bool View::ignoreWindowMove(QPoint position) const { return _controller->ignoreWindowMove(position); } +void View::tryProcessKeyInput(not_null e) { + _controller->tryProcessKeyInput(e); +} + SiblingView View::sibling(SiblingType type) const { return _controller->sibling(type); } diff --git a/Telegram/SourceFiles/media/stories/media_stories_view.h b/Telegram/SourceFiles/media/stories/media_stories_view.h index 2e9ce1a74..099689e31 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_view.h +++ b/Telegram/SourceFiles/media/stories/media_stories_view.h @@ -83,6 +83,7 @@ public: void togglePinnedRequested(bool pinned); [[nodiscard]] bool ignoreWindowMove(QPoint position) const; + void tryProcessKeyInput(not_null e); [[nodiscard]] rpl::lifetime &lifetime(); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 33dc18e22..9a58198e3 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -4886,14 +4886,20 @@ bool OverlayWidget::isSaveMsgShown() const { } void OverlayWidget::handleKeyPress(not_null e) { + if (_processingKeyPress) { + return; + } + _processingKeyPress = true; + const auto guard = gsl::finally([&] { _processingKeyPress = false; }); const auto key = e->key(); const auto modifiers = e->modifiers(); const auto ctrl = modifiers.testFlag(Qt::ControlModifier); - if (_stories && key == Qt::Key_Space && _down != Over::Video) { - _stories->togglePaused(!_stories->paused()); - return; - } - if (_streamed) { + if (_stories) { + if (key == Qt::Key_Space && _down != Over::Video) { + _stories->togglePaused(!_stories->paused()); + return; + } + } else if (_streamed) { // Ctrl + F for full screen toggle is in eventFilter(). const auto toggleFull = (modifiers.testFlag(Qt::AltModifier) || ctrl) && (key == Qt::Key_Enter || key == Qt::Key_Return); @@ -4962,9 +4968,9 @@ void OverlayWidget::handleKeyPress(not_null e) { zoomIn(); } else if (key == Qt::Key_Minus || key == Qt::Key_Underscore) { zoomOut(); - } else if (key == Qt::Key_I) { - update(); } + } else if (_stories) { + _stories->tryProcessKeyInput(e); } } diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h index cbb9165d9..b0feb4f1d 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h @@ -690,6 +690,7 @@ private: base::Timer _dropdownShowTimer; bool _receiveMouse = true; + bool _processingKeyPress = false; bool _touchPress = false; bool _touchMove = false;