diff --git a/src/Window.cpp b/src/Window.cpp index 31cbb3ce..66035f42 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -265,6 +265,16 @@ void CWindow::onUnmap() { } void CWindow::onMap() { + + // JIC, reset the callbacks. If any are set, we'll make sure they are cleared so we don't accidentally unset them. (In case a window got remapped) + m_vRealPosition.resetAllCallbacks(); + m_vRealSize.resetAllCallbacks(); + m_cRealBorderColor.resetAllCallbacks(); + m_fActiveInactiveAlpha.resetAllCallbacks(); + m_fAlpha.resetAllCallbacks(); + m_cRealShadowColor.resetAllCallbacks(); + m_fDimPercent.resetAllCallbacks(); + m_vRealPosition.registerVar(); m_vRealSize.registerVar(); m_cRealBorderColor.registerVar(); diff --git a/src/helpers/AnimatedVariable.hpp b/src/helpers/AnimatedVariable.hpp index 2c2c3ccf..ab1dcf42 100644 --- a/src/helpers/AnimatedVariable.hpp +++ b/src/helpers/AnimatedVariable.hpp @@ -205,6 +205,14 @@ public: m_bRemoveBeginAfterRan = remove; } + /* resets all callbacks. Does not call any. */ + void resetAllCallbacks() { + m_fBeginCallback = nullptr; + m_fEndCallback = nullptr; + m_bRemoveBeginAfterRan = false; + m_bRemoveEndAfterRan = false; + } + private: Vector2D m_vValue = Vector2D(0,0);