Browse Source

Refix issue #256.[ci skip]

Aster Jian 11 years ago
parent
commit
270a49d09f
1 changed files with 5 additions and 3 deletions
  1. 5 3
      Source/Engine/LuaScript/LuaScript.cpp

+ 5 - 3
Source/Engine/LuaScript/LuaScript.cpp

@@ -223,11 +223,13 @@ void LuaScript::ScriptSubscribeToEvent(void* sender, const String& eventName, co
     {
     {
         LuaFunctionVector& functions = objectHandleFunctions_[object][eventType];
         LuaFunctionVector& functions = objectHandleFunctions_[object][eventType];
 
 
-        SubscribeToEvent(object, eventType, HANDLER(LuaScript, HandleObjectEvent));
-
-        if (!functions.Empty())
+        // Fix issue #256
+        HashSet<Object*>* receivers = context_->GetEventReceivers(object, eventType);
+        if ((!receivers || !receivers->Contains(this)) && !functions.Empty())
             functions.Clear();
             functions.Clear();
 
 
+        SubscribeToEvent(object, eventType, HANDLER(LuaScript, HandleObjectEvent));
+
         if (!functions.Contains(function))
         if (!functions.Contains(function))
             functions.Push(function);
             functions.Push(function);
     }
     }