diff --git a/ui/layers/layer_manager.cpp b/ui/layers/layer_manager.cpp index b5ca389..91e3e9e 100644 --- a/ui/layers/layer_manager.cpp +++ b/ui/layers/layer_manager.cpp @@ -59,6 +59,10 @@ bool LayerManager::setFocus() { return true; } +const LayerWidget *LayerManager::topShownLayer() const { + return _layer ? _layer->topShownLayer() : nullptr; +} + void LayerManager::ensureLayerCreated() { if (_layer) { return; diff --git a/ui/layers/layer_manager.h b/ui/layers/layer_manager.h index 4f53169..cce68dc 100644 --- a/ui/layers/layer_manager.h +++ b/ui/layers/layer_manager.h @@ -36,6 +36,8 @@ public: void raise(); bool setFocus(); + const LayerWidget *topShownLayer() const; + private: void ensureLayerCreated(); void destroyLayer(); diff --git a/ui/layers/layer_widget.cpp b/ui/layers/layer_widget.cpp index 5eb99f7..8e70249 100644 --- a/ui/layers/layer_widget.cpp +++ b/ui/layers/layer_widget.cpp @@ -458,6 +458,17 @@ bool LayerStackWidget::layerShown() const { return _specialLayer || currentLayer() || _mainMenu; } +const LayerWidget *LayerStackWidget::topShownLayer() const { + if (const auto result = currentLayer()) { + return result; + } else if (const auto special = _specialLayer.data()) { + return special; + } else if (const auto menu = _mainMenu.data()) { + return menu; + } + return nullptr; +} + void LayerStackWidget::setStyleOverrides( const style::Box *boxSt, const style::Box *layerSt) { diff --git a/ui/layers/layer_widget.h b/ui/layers/layer_widget.h index f45f16e..7d7e337 100644 --- a/ui/layers/layer_widget.h +++ b/ui/layers/layer_widget.h @@ -144,6 +144,7 @@ public: const ::Window::SectionShow ¶ms); bool layerShown() const; + const LayerWidget *topShownLayer() const; ~LayerStackWidget();