diff options
Diffstat (limited to 'source/windowing/StarPaneManager.cpp')
-rw-r--r-- | source/windowing/StarPaneManager.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/windowing/StarPaneManager.cpp b/source/windowing/StarPaneManager.cpp index f34c786..9dd7737 100644 --- a/source/windowing/StarPaneManager.cpp +++ b/source/windowing/StarPaneManager.cpp @@ -128,6 +128,23 @@ void PaneManager::setBackgroundWidget(WidgetPtr bg) { m_backgroundWidget = bg; } +void PaneManager::dismissWhere(function<bool(PanePtr const&)> func) { + if (!func) + return; + + for (auto& layerPair : m_displayedPanes) { + eraseWhere(layerPair.second, [&](auto& panePair) { + if (func(panePair.first)) { + panePair.first->dismissed(); + if (panePair.second) + panePair.second(panePair.first); + return true; + } + return false; + }); + } +} + PanePtr PaneManager::keyboardCapturedPane() const { for (auto const& layerPair : m_displayedPanes) { for (auto const& panePair : layerPair.second) { |