diff --git a/lib/libimhex/include/hex/ui/view.hpp b/lib/libimhex/include/hex/ui/view.hpp index c125a271b3d89..0637ecaf9c7b0 100644 --- a/lib/libimhex/include/hex/ui/view.hpp +++ b/lib/libimhex/include/hex/ui/view.hpp @@ -110,6 +110,17 @@ namespace hex { void trackViewState(); void setFocused(bool focused); + protected: + /** + * @brief Called when this view is opened (i.e. made visible). + */ + virtual void onOpen() {} + + /** + * @brief Called when this view is closed (i.e. made invisible). + */ + virtual void onClose() {} + public: class Window; class Special; diff --git a/lib/libimhex/source/ui/view.cpp b/lib/libimhex/source/ui/view.cpp index fee0ff5171597..8bdc3cb977de9 100644 --- a/lib/libimhex/source/ui/view.cpp +++ b/lib/libimhex/source/ui/view.cpp @@ -75,9 +75,13 @@ namespace hex { void View::trackViewState() { if (m_windowOpen && !m_prevWindowOpen) + { this->setWindowJustOpened(true); - else if (!m_windowOpen && m_prevWindowOpen) + this->onOpen(); + } else if (!m_windowOpen && m_prevWindowOpen) { this->setWindowJustClosed(true); + this->onClose(); + } m_prevWindowOpen = m_windowOpen; }