From 144acdd633dd1010f567785a41b8f5e420d67d4e Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Thu, 8 Aug 2013 21:09:35 +0000 Subject: [PATCH] ios stuff --- include/GUIManager/ButtonWidget.h | 2 ++ include/GUIManager/GUIManager.h | 2 ++ src/GUIManager/ButtonWidget.cpp | 5 ++++ src/GUIManager/GUIManager.cpp | 38 +++++++++++++++++++++++++++++++ src/SalmonEngineInterface.cpp | 1 + 5 files changed, 48 insertions(+) diff --git a/include/GUIManager/ButtonWidget.h b/include/GUIManager/ButtonWidget.h index 586c216..25e50c4 100644 --- a/include/GUIManager/ButtonWidget.h +++ b/include/GUIManager/ButtonWidget.h @@ -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); diff --git a/include/GUIManager/GUIManager.h b/include/GUIManager/GUIManager.h index 8a6ab52..8212cf9 100644 --- a/include/GUIManager/GUIManager.h +++ b/include/GUIManager/GUIManager.h @@ -168,6 +168,8 @@ public: void OnMouseDown(vec2 pos); void OnMouseUp(vec2 pos); + + void OnMouseUpAfterMove(vec2 pos); void OnMove(vec2 shift); diff --git a/src/GUIManager/ButtonWidget.cpp b/src/GUIManager/ButtonWidget.cpp index cf9585a..3ac2de9 100644 --- a/src/GUIManager/ButtonWidget.cpp +++ b/src/GUIManager/ButtonWidget.cpp @@ -330,6 +330,11 @@ void TUniversalButton::OnTapUp(vec2 pos) } } + +void TUniversalButton::OnTapUpAfterMove(vec2 pos) +{ + OnTapUp(pos); +} void TUniversalButton::OnMoveOut() { diff --git a/src/GUIManager/GUIManager.cpp b/src/GUIManager/GUIManager.cpp index 384318c..403d4af 100644 --- a/src/GUIManager/GUIManager.cpp +++ b/src/GUIManager/GUIManager.cpp @@ -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 guard(WidgetListMutex); + + TWidgetArr::reverse_iterator i; + + std::vector>> 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) { diff --git a/src/SalmonEngineInterface.cpp b/src/SalmonEngineInterface.cpp index f57aa5c..0091169 100644 --- a/src/SalmonEngineInterface.cpp +++ b/src/SalmonEngineInterface.cpp @@ -133,6 +133,7 @@ void TApplicationAncestor::OuterOnTapUp(vec2 p) void TApplicationAncestor::OuterOnTapUpAfterMove(vec2 p) { + ResourceManager->GUIManager.OnMouseUpAfterMove(p); InnerOnTapUpAfterMove(p); }