mirror of https://github.com/axmolengine/axmol.git
issue #4129: Adds test case for issue 4119.
This commit is contained in:
parent
d33017f27a
commit
7dd75ea2cb
|
@ -24,6 +24,7 @@ std::function<Layer*()> createFunctions[] =
|
||||||
CL(DirectorEventTest),
|
CL(DirectorEventTest),
|
||||||
CL(GlobalZTouchTest),
|
CL(GlobalZTouchTest),
|
||||||
CL(StopPropagationTest),
|
CL(StopPropagationTest),
|
||||||
|
CL(Issue4129),
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int TEST_CASE_COUNT = sizeof(createFunctions) / sizeof(createFunctions[0]);
|
unsigned int TEST_CASE_COUNT = sizeof(createFunctions) / sizeof(createFunctions[0]);
|
||||||
|
@ -1088,3 +1089,66 @@ std::string StopPropagationTest::subtitle() const
|
||||||
{
|
{
|
||||||
return "Shouldn't crash and only blue block could be clicked";
|
return "Shouldn't crash and only blue block could be clicked";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Issue4129::Issue4129()
|
||||||
|
: _bugFixed(false)
|
||||||
|
{
|
||||||
|
_customlistener = _eventDispatcher->addCustomEventListener(EVENT_COME_TO_BACKGROUND, [this](EventCustom* event){
|
||||||
|
|
||||||
|
auto label = LabelTTF::create("Yeah, this issue was fixed.", "", 20);
|
||||||
|
label->setAnchorPoint(Point(0, 0.5f));
|
||||||
|
label->setPosition(Point(VisibleRect::left()));
|
||||||
|
this->addChild(label);
|
||||||
|
|
||||||
|
// After test, remove it.
|
||||||
|
_eventDispatcher->removeEventListener(_customlistener);
|
||||||
|
|
||||||
|
_bugFixed = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
auto removeAllTouchItem = MenuItemFont::create("Remove All Listeners", [this](Ref* sender){
|
||||||
|
auto senderItem = static_cast<MenuItemFont*>(sender);
|
||||||
|
senderItem->setString("Only 'Reset' item could be clicked");
|
||||||
|
|
||||||
|
_eventDispatcher->removeAllEventListeners();
|
||||||
|
|
||||||
|
auto nextItem = MenuItemFont::create("Reset", [=](Ref* sender){
|
||||||
|
CCASSERT(_bugFixed, "This issue was not fixed!");
|
||||||
|
this->restartCallback(nullptr);
|
||||||
|
});
|
||||||
|
|
||||||
|
nextItem->setFontSizeObj(16);
|
||||||
|
nextItem->setPosition(VisibleRect::right() + Point(-100, -30));
|
||||||
|
|
||||||
|
auto menu2 = Menu::create(nextItem, NULL);
|
||||||
|
menu2->setPosition(Point(0, 0));
|
||||||
|
menu2->setAnchorPoint(Point(0, 0));
|
||||||
|
this->addChild(menu2);
|
||||||
|
|
||||||
|
// Simulate to dispatch 'come to background' event
|
||||||
|
_eventDispatcher->dispatchCustomEvent(EVENT_COME_TO_BACKGROUND);
|
||||||
|
});
|
||||||
|
|
||||||
|
removeAllTouchItem->setFontSizeObj(16);
|
||||||
|
removeAllTouchItem->setPosition(VisibleRect::right() + Point(-100, 0));
|
||||||
|
|
||||||
|
auto menu = Menu::create(removeAllTouchItem, nullptr);
|
||||||
|
menu->setPosition(Point(0, 0));
|
||||||
|
menu->setAnchorPoint(Point(0, 0));
|
||||||
|
addChild(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
Issue4129::~Issue4129()
|
||||||
|
{
|
||||||
|
_eventDispatcher->removeEventListener(_customlistener);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Issue4129::title() const
|
||||||
|
{
|
||||||
|
return "Issue 4129: Remove All Listeners";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Issue4129::subtitle() const
|
||||||
|
{
|
||||||
|
return "Should see 'Yeah, this issue was fixed.'";
|
||||||
|
}
|
||||||
|
|
|
@ -165,4 +165,20 @@ protected:
|
||||||
bool isPointInTopHalfAreaOfScreen(Point pt);
|
bool isPointInTopHalfAreaOfScreen(Point pt);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Issue4129 : public EventDispatcherTestDemo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CREATE_FUNC(Issue4129);
|
||||||
|
Issue4129();
|
||||||
|
virtual ~Issue4129();
|
||||||
|
|
||||||
|
virtual std::string title() const override;
|
||||||
|
virtual std::string subtitle() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventListenerCustom* _customlistener;
|
||||||
|
bool _bugFixed;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* defined(__samples__NewEventDispatcherTest__) */
|
#endif /* defined(__samples__NewEventDispatcherTest__) */
|
||||||
|
|
Loading…
Reference in New Issue