diff --git a/Telegram/SourceFiles/window/window_controller.cpp b/Telegram/SourceFiles/window/window_controller.cpp index 719c1a214e..29f406bef6 100644 --- a/Telegram/SourceFiles/window/window_controller.cpp +++ b/Telegram/SourceFiles/window/window_controller.cpp @@ -615,6 +615,22 @@ std::shared_ptr Controller::uiShow() { return std::make_shared(this); } +void Controller::setHighlightControlId(const QString &id) { + _highlightControlId = id; +} + +QString Controller::highlightControlId() const { + return _highlightControlId; +} + +bool Controller::takeHighlightControlId(const QString &id) { + if (_highlightControlId == id) { + _highlightControlId = QString(); + return true; + } + return false; +} + rpl::lifetime &Controller::lifetime() { return _lifetime; } diff --git a/Telegram/SourceFiles/window/window_controller.h b/Telegram/SourceFiles/window/window_controller.h index 4069c1c762..a855e9f4b4 100644 --- a/Telegram/SourceFiles/window/window_controller.h +++ b/Telegram/SourceFiles/window/window_controller.h @@ -142,6 +142,10 @@ public: [[nodiscard]] std::shared_ptr uiShow(); + void setHighlightControlId(const QString &id); + [[nodiscard]] QString highlightControlId() const; + [[nodiscard]] bool takeHighlightControlId(const QString &id); + [[nodiscard]] rpl::lifetime &lifetime(); private: @@ -178,6 +182,8 @@ private: FloatDelegate *_replacementFloatPlayerDelegate = nullptr; rpl::variable _floatPlayerDelegate = nullptr; + QString _highlightControlId; + rpl::lifetime _accountLifetime; rpl::lifetime _lifetime; diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 7210a4ef89..91bf88746c 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -3680,6 +3680,18 @@ void SessionController::showStarGiftAuction(uint64 giftId) { [=] { _starGiftAuctionLifetime.destroy(); }); } +void SessionController::setHighlightControlId(const QString &id) { + _window->setHighlightControlId(id); +} + +QString SessionController::highlightControlId() const { + return _window->highlightControlId(); +} + +bool SessionController::takeHighlightControlId(const QString &id) { + return _window->takeHighlightControlId(id); +} + SessionController::~SessionController() { resetFakeUnreadWhileOpened(); dropSubsectionTabs(); diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index 9572238a7f..a1df1a4559 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -700,6 +700,10 @@ public: void showStarGiftAuction(const QString &slug); void showStarGiftAuction(uint64 giftId); + void setHighlightControlId(const QString &id); + [[nodiscard]] QString highlightControlId() const; + [[nodiscard]] bool takeHighlightControlId(const QString &id); + [[nodiscard]] rpl::lifetime &lifetime() { return _lifetime; }