dmuratshin 9 years ago
parent
commit
139b739d03
3 changed files with 10 additions and 8 deletions
  1. 4 3
      oxygine/src/Actor.cpp
  2. 2 1
      oxygine/src/TouchEvent.h
  3. 4 4
      oxygine/src/oxygine-forwards.h

+ 4 - 3
oxygine/src/Actor.cpp

@@ -289,7 +289,7 @@ namespace oxygine
         _pressedButton[b] = 0;
         if (_pressedOvered == _overred)//!_pressed[0] && !_pressed[1] && !_pressed[2])
         {
-            Stage *stage = _getStage();
+            Stage* stage = _getStage();
             if (stage)
                 stage->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onGlobalTouchUpEvent));
         }
@@ -366,11 +366,12 @@ namespace oxygine
 
         TouchEvent click(0);
 
-        if (event->type == TouchEvent::TOUCH_UP &&  event->target.get() == this)
+        if (event->type == TouchEvent::TOUCH_UP)
         {
             TouchEvent* te = safeCast<TouchEvent*>(event);
-            if (_pressedButton[te->mouseButton] == te->index)
+            if (_pressedButton[te->mouseButton] == te->index && !te->__clickDispatched)
             {
+                te->__clickDispatched = true;
                 click = *te;
                 click.type = TouchEvent::CLICK;
                 click.bubbles = true;

+ 2 - 1
oxygine/src/TouchEvent.h

@@ -24,7 +24,7 @@ namespace oxygine
         };
 
 
-        TouchEvent(eventType type, bool Bubbles = true, const Vector2& locPosition = Vector2(0, 0)) : Event(type, Bubbles), localPosition(locPosition), position(locPosition), mouseButton(MouseButton_Touch), pressure(1.0f), index(1) {}
+        TouchEvent(eventType type, bool Bubbles = true, const Vector2& locPosition = Vector2(0, 0)) : Event(type, Bubbles), localPosition(locPosition), position(locPosition), mouseButton(MouseButton_Touch), pressure(1.0f), index(1), __clickDispatched(false) {}
 
         /**
         position in local space for Event::currentTarget Actor
@@ -43,5 +43,6 @@ namespace oxygine
         const PointerState* getPointer() const;
 
         static bool isTouchEvent(int eventID) { return eventID > __FIRST && eventID < __LAST; }
+        bool __clickDispatched;
     };
 }

+ 4 - 4
oxygine/src/oxygine-forwards.h

@@ -4,7 +4,7 @@
 
 
 #ifdef OXYGINE_SDL
-    typedef struct SDL_Window SDL_Window;
+typedef struct SDL_Window SDL_Window;
 #endif
 
 #define DECLARE_SMART(class_name, spname) \
@@ -35,7 +35,7 @@ namespace oxygine
 
     template <class T>
     class intrusive_ptr;
-    
+
     DECLARE_SMART(Actor, spActor);
     DECLARE_SMART(AsyncTask, spAsyncTask);
     DECLARE_SMART(Box9Sprite, spBox9Sprite);
@@ -111,13 +111,13 @@ namespace oxygine
     class UberShaderProgram;
     class UpdateState;
     class VertexDeclaration;
-    class XmlWalker;    
+    class XmlWalker;
     struct deserializeLinkData;
     struct deserializedata;
     struct serializedata;
 
     const int cloneOptionsDoNotCloneClildren = 0x01;
-    const int cloneOptionsResetTransform = 0x02;  
+    const int cloneOptionsResetTransform = 0x02;
 
     typedef Closure<void(Event* ev)> EventCallback;
     typedef Closure<void(const RenderState& rs)> RenderCallback;