ref_event.patch 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. diff -r b08c7c8fbf4b oxygine/src/Actor.cpp
  2. --- a/oxygine/src/Actor.cpp Thu Apr 11 19:02:02 2013 +0600
  3. +++ b/oxygine/src/Actor.cpp Thu Apr 11 19:20:22 2013 +0600
  4. @@ -247,6 +247,8 @@
  5. switch(event->type)
  6. {
  7. case TouchEvent::TOUCH_DOWN:
  8. + setPressed(me->index);
  9. + /*
  10. if (isDescendant(act))
  11. {
  12. if (event->phase == Event::phase_target)
  13. @@ -255,6 +257,11 @@
  14. //_pressed = me->id;
  15. //setPressed(true);
  16. }
  17. + else
  18. + {
  19. + int q=0;
  20. + }
  21. + */
  22. break;
  23. case TouchEvent::TOUCH_UP:
  24. {
  25. @@ -264,15 +271,18 @@
  26. {
  27. setPressed(0);
  28. //it is event from ROOT, convert to local space
  29. - Vector2 lp = convert_global2local(this, RootActor::instance, me->localPosition);
  30. - if (isDescendant(act))
  31. +
  32. + //if (isDescendant(act))
  33. + if (me->currentTarget != RootActor::instance)
  34. {
  35. + Vector2 lp = convert_global2local(this, RootActor::instance, me->localPosition);
  36. TouchEvent e(TouchEvent::CLICK, true, lp);
  37. e.index = me->index;
  38. dispatchEvent(&e);
  39. }
  40. else
  41. {
  42. + //it is event from Root outside of this actor
  43. dispatchEvent(event);
  44. }
  45. }
  46. @@ -383,8 +393,8 @@
  47. event->target = this;
  48. - if (event->type == TouchEvent::TOUCH_DOWN || event->type == TouchEvent::MOVE)
  49. - _onMouseEvent(event);
  50. + //if (event->type == TouchEvent::TOUCH_DOWN || event->type == TouchEvent::MOVE)
  51. + _onMouseEvent(event);
  52. dispatchEvent(event);
  53. diff -r b08c7c8fbf4b oxygine/src/Draggable.cpp
  54. --- a/oxygine/src/Draggable.cpp Thu Apr 11 19:02:02 2013 +0600
  55. +++ b/oxygine/src/Draggable.cpp Thu Apr 11 19:20:22 2013 +0600
  56. @@ -111,6 +111,7 @@
  57. case TouchEvent::TOUCH_UP:
  58. {
  59. _pressed = false;
  60. + event->stopPropagation();
  61. RootActor::instance->removeEventListeners(this);
  62. }
  63. break;
  64. diff -r b08c7c8fbf4b oxygine/src/SlidingActor.cpp
  65. --- a/oxygine/src/SlidingActor.cpp Thu Apr 11 19:02:02 2013 +0600
  66. +++ b/oxygine/src/SlidingActor.cpp Thu Apr 11 19:20:22 2013 +0600
  67. @@ -14,14 +14,14 @@
  68. _clip = initActor(new ClipRectActor,
  69. arg_attachTo = this);
  70. - _clip->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &SlidingActor::_newEvent));
  71. - _clip->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &SlidingActor::_newEvent));
  72. - _clip->addEventListener(TouchEvent::MOVE, CLOSURE(this, &SlidingActor::_newEvent));
  73. +
  74. }
  75. void SlidingActor::destroy()
  76. {
  77. _clip->removeChildren();
  78. + if (_content)
  79. + _content->removeEventListeners(this);
  80. _drag.destroy();
  81. _content = 0;
  82. @@ -69,6 +69,10 @@
  83. _clip->addChild(_content);
  84. + _content->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &SlidingActor::_newEvent));
  85. + _content->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &SlidingActor::_newEvent));
  86. + _content->addEventListener(TouchEvent::MOVE, CLOSURE(this, &SlidingActor::_newEvent));
  87. +
  88. updateDragBounds();
  89. }
  90. @@ -198,7 +202,7 @@
  91. {
  92. case TouchEvent::TOUCH_DOWN:
  93. _holded = event->target;
  94. - _downPos = te->localPosition;
  95. + _downPos = _content->local2global(te->localPosition);
  96. _down = true;
  97. break;
  98. @@ -213,7 +217,7 @@
  99. case TouchEvent::MOVE:
  100. {
  101. - Vector2 offset = _downPos - te->localPosition;
  102. + Vector2 offset = _downPos - _content->local2global(te->localPosition);
  103. float d = offset.dot(offset);
  104. if (_holded && (d >= _rad * _rad))
  105. {