ios stuff

This commit is contained in:
Vladislav Khorev 2013-08-08 21:09:35 +00:00
parent 554d35f27b
commit 144acdd633
5 changed files with 48 additions and 0 deletions

View File

@ -24,6 +24,7 @@ public:
virtual void OnTapDown(vec2 pos) { }
virtual void OnTapUp(vec2 pos) { }
virtual void OnTapUpAfterMove(vec2 pos) { }
virtual void OnMove(vec2 shift) { }
virtual void OnMoveOut() { }
virtual void OnKeyPress(int key) { }
@ -164,6 +165,7 @@ public:
virtual void OnTapDown(vec2 pos);
virtual void OnTapUp(vec2 pos);
virtual void OnTapUpAfterMove(vec2 pos);
virtual void OnMoveOut();
static TUniversalButton* CreateButton(vec2 posFrom, vec2 posTo);

View File

@ -168,6 +168,8 @@ public:
void OnMouseDown(vec2 pos);
void OnMouseUp(vec2 pos);
void OnMouseUpAfterMove(vec2 pos);
void OnMove(vec2 shift);

View File

@ -330,6 +330,11 @@ void TUniversalButton::OnTapUp(vec2 pos)
}
}
void TUniversalButton::OnTapUpAfterMove(vec2 pos)
{
OnTapUp(pos);
}
void TUniversalButton::OnMoveOut()
{

View File

@ -325,6 +325,44 @@ void TGUIManager::OnMouseUp(vec2 pos)
}
}
void TGUIManager::OnMouseUpAfterMove(vec2 pos)
{
//Xperimental - need to call widget methods and signals NOT IN "FOR" LOOP
boost::lock_guard<boost::mutex> guard(WidgetListMutex);
TWidgetArr::reverse_iterator i;
std::vector<std::shared_ptr<boost::signal<void (TSignalParam)>>> signalMap;
for (i = WidgetArr.rbegin(); i != WidgetArr.rend(); ++i)
{
if (i->Widget->CheckClick(pos))
{
bool isTransparentForInput = i->Widget->IsTransparentForInput();
i->Widget->OnTapUpAfterMove(pos);
i->IsMouseDown = false;
//signalMap.push_back((i->SignalMap[CONST_CLICK_SIGNAL_NAME]));
//Do not call signals here
if (! isTransparentForInput)
{
break;
}
}
}
//Keep this outside since signal may affect WidgetArr
BOOST_FOREACH(auto signalPtr, signalMap)
{
(*signalPtr)(TSignalParam(pos));
}
}
void TGUIManager::OnMove(vec2 shift)
{

View File

@ -133,6 +133,7 @@ void TApplicationAncestor::OuterOnTapUp(vec2 p)
void TApplicationAncestor::OuterOnTapUpAfterMove(vec2 p)
{
ResourceManager->GUIManager.OnMouseUpAfterMove(p);
InnerOnTapUpAfterMove(p);
}