diff options
Diffstat (limited to 'source/windowing/StarRegisteredPaneManager.hpp')
-rw-r--r-- | source/windowing/StarRegisteredPaneManager.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/windowing/StarRegisteredPaneManager.hpp b/source/windowing/StarRegisteredPaneManager.hpp index 4038525..ebb158d 100644 --- a/source/windowing/StarRegisteredPaneManager.hpp +++ b/source/windowing/StarRegisteredPaneManager.hpp @@ -19,6 +19,8 @@ public: template <typename T = Pane> shared_ptr<T> registeredPane(KeyT const& paneId) const; + template <typename T = Pane> + shared_ptr<T> maybeRegisteredPane(KeyT const& paneId) const; // Displays a registred pane if it is not already displayed. Returns true // if it is newly displayed. @@ -54,6 +56,14 @@ shared_ptr<T> RegisteredPaneManager<KeyT>::registeredPane(KeyT const& paneId) co } template <typename KeyT> +template <typename T> +shared_ptr<T> RegisteredPaneManager<KeyT>::maybeRegisteredPane(KeyT const& paneId) const { + if (auto v = m_registeredPanes.ptr(paneId)) + return convert<T>(v->pane); + return {}; +} + +template <typename KeyT> void RegisteredPaneManager<KeyT>::registerPane( KeyT paneId, PaneLayer paneLayer, PanePtr pane, DismissCallback onDismiss) { if (!m_registeredPanes.insert(move(paneId), {move(paneLayer), move(pane), move(onDismiss)}).second) |