Browse Source

why i didn't add it before?

dm 7 years ago
parent
commit
c7bd2b64f3
2 changed files with 22 additions and 0 deletions
  1. 19 0
      oxygine/src/oxygine/EventDispatcher.cpp
  2. 3 0
      oxygine/src/oxygine/EventDispatcher.h

+ 19 - 0
oxygine/src/oxygine/EventDispatcher.cpp

@@ -138,6 +138,25 @@ namespace oxygine
         }
     }
 
+    void EventDispatcher::removeEventListenersByType(eventType et)
+    {
+        __doCheck();
+        if (!_listeners)
+            return;
+
+        for (size_t i = 0; i < _listeners->size(); ++i)
+        {
+            const listener& ls = _listeners->at(i);
+            if (ls.type == et)
+            {
+                _listeners->erase(_listeners->begin() + i);
+                //OX_ASSERT(hasEventListeners(CallbackThis) == false);
+                --i;
+            }
+        }
+
+    }
+
     void EventDispatcher::removeAllEventListeners()
     {
         delete _listeners;

+ 3 - 0
oxygine/src/oxygine/EventDispatcher.h

@@ -49,6 +49,9 @@ namespace oxygine
         /**removes all added event listeners by THIS used in CLOSURE(this, ...)*/
         void removeEventListeners(void* CallbackThis);
 
+        /**removes all added event listeners by THIS used in CLOSURE(this, ...)*/
+        void removeEventListenersByType(eventType);
+
         /**removes all added event listeners*/
         void removeAllEventListeners();