From ff1d5fce29cbd85605e5de0125318be33b2eb9bb Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 30 May 2023 17:36:11 +0400 Subject: [PATCH] Allow tracking isLayerShown in LayerManager. --- ui/layers/layer_manager.cpp | 4 ++++ ui/layers/layer_manager.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/ui/layers/layer_manager.cpp b/ui/layers/layer_manager.cpp index 7a22e09..a6470ac 100644 --- a/ui/layers/layer_manager.cpp +++ b/ui/layers/layer_manager.cpp @@ -168,6 +168,8 @@ void LayerManager::ensureLayerCreated() { ) | rpl::start_with_next([=](QSize size) { _layer->resize(size); }, _layer->lifetime()); + + _layerShown = true; } void LayerManager::destroyLayer() { @@ -176,6 +178,8 @@ void LayerManager::destroyLayer() { } auto layer = base::take(_layer); + _layerShown = false; + const auto resetFocus = Ui::InFocusChain(layer); if (resetFocus) { _widget->setFocus(); diff --git a/ui/layers/layer_manager.h b/ui/layers/layer_manager.h index a051a11..b8ce72b 100644 --- a/ui/layers/layer_manager.h +++ b/ui/layers/layer_manager.h @@ -42,6 +42,10 @@ public: void raise(); bool setFocus(); + [[nodiscard]] rpl::producer layerShownValue() const { + return _layerShown.value(); + } + [[nodiscard]] not_null toastParent() const { return _widget; } @@ -58,6 +62,7 @@ private: const not_null _widget; base::unique_qptr _layer; std::shared_ptr _cachedShow; + rpl::variable _layerShown; const style::Box *_boxSt = nullptr; const style::Box *_layerSt = nullptr;