diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 6a7fbf53b..08d94e641 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -330,6 +330,10 @@ HistoryWidget::HistoryWidget( _fieldBarCancel->addClickHandler([=] { cancelFieldAreaState(); }); _send->addClickHandler([=] { sendButtonClicked(); }); + _mediaEditManager.updateRequests() | rpl::start_with_next([this] { + updateOverStates(mapFromGlobal(QCursor::pos())); + }, lifetime()); + { using namespace SendMenu; const auto sendAction = [=](Action action, Details) { diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.cpp index 0f765fe69..35fbc2134 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.cpp @@ -53,6 +53,7 @@ void MediaEditManager::apply(SendMenu::Action action) { } else if (action.type == Type::SpoilerOff) { _spoilered = false; } + _updateRequests.fire({}); } void MediaEditManager::cancel() { @@ -145,6 +146,10 @@ SendMenu::Details MediaEditManager::sendMenuDetails( }; } +rpl::producer<> MediaEditManager::updateRequests() const { + return _updateRequests.events(); +} + bool MediaEditManager::CanBeSpoilered(not_null item) { const auto media = item ? item->media() : nullptr; const auto editingMedia = media && media->allowsEditMedia(); diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.h b/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.h index 0ca33f854..3fec1e34e 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_media_edit_manager.h @@ -48,6 +48,8 @@ public: [[nodiscard]] SendMenu::Details sendMenuDetails( bool hasCaptionText) const; + [[nodiscard]] rpl::producer<> updateRequests() const; + [[nodiscard]] explicit operator bool() const { return _item != nullptr; } @@ -60,6 +62,8 @@ private: bool _spoilered = false; bool _invertCaption = false; + rpl::event_stream<> _updateRequests; + rpl::lifetime _lifetime; };