mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
2 finger rclick block adwmap scrolling and disable for iOS
This commit is contained in:
@@ -206,9 +206,6 @@ void CGuiHandler::handleEvents()
|
||||
}
|
||||
}
|
||||
|
||||
bool multifinger = false;
|
||||
int lastFingerCount;
|
||||
|
||||
void convertTouch(SDL_Event * current)
|
||||
{
|
||||
int rLogicalWidth, rLogicalHeight;
|
||||
@@ -358,7 +355,7 @@ void CGuiHandler::handleCurrentEvent()
|
||||
}
|
||||
else if(current->type == SDL_MOUSEBUTTONUP)
|
||||
{
|
||||
if(!multifinger || lastFingerCount < 1)
|
||||
if(!multifinger)
|
||||
{
|
||||
switch(current->button.button)
|
||||
{
|
||||
@@ -374,13 +371,14 @@ void CGuiHandler::handleCurrentEvent()
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifndef VCMI_IOS
|
||||
else if(current->type == SDL_FINGERDOWN)
|
||||
{
|
||||
lastFingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId);
|
||||
auto fingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId);
|
||||
|
||||
multifinger = lastFingerCount > 1;
|
||||
multifinger = fingerCount > 1;
|
||||
|
||||
if(lastFingerCount == 2)
|
||||
if(fingerCount == 2)
|
||||
{
|
||||
convertTouch(current);
|
||||
handleMouseMotion();
|
||||
@@ -389,16 +387,17 @@ void CGuiHandler::handleCurrentEvent()
|
||||
}
|
||||
else if(current->type == SDL_FINGERUP)
|
||||
{
|
||||
lastFingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId);
|
||||
auto fingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId);
|
||||
|
||||
if(multifinger)
|
||||
{
|
||||
multifinger = false;
|
||||
convertTouch(current);
|
||||
handleMouseMotion();
|
||||
handleMouseButtonClick(rclickable, EIntObjMouseBtnType::RIGHT, false);
|
||||
multifinger = fingerCount != 0;
|
||||
}
|
||||
}
|
||||
#endif //VCMI_IOS
|
||||
|
||||
current = nullptr;
|
||||
} //event end
|
||||
@@ -527,7 +526,8 @@ void CGuiHandler::renderFrame()
|
||||
|
||||
|
||||
CGuiHandler::CGuiHandler()
|
||||
: lastClick(-500, -500),lastClickTime(0), defActionsDef(0), captureChildren(false)
|
||||
: lastClick(-500, -500),lastClickTime(0), defActionsDef(0), captureChildren(false),
|
||||
multifinger(false)
|
||||
{
|
||||
continueEventHandling = true;
|
||||
curInt = nullptr;
|
||||
|
@@ -101,6 +101,7 @@ public:
|
||||
|
||||
Point lastClick;
|
||||
unsigned lastClickTime;
|
||||
bool multifinger;
|
||||
|
||||
ui8 defActionsDef; //default auto actions
|
||||
bool captureChildren; //all newly created objects will get their parents from stack and will be added to parents children list
|
||||
|
@@ -180,7 +180,7 @@ void CTerrainRect::mouseMoved(const SDL_MouseMotionEvent & sEvent)
|
||||
void CTerrainRect::handleSwipeMove(const SDL_MouseMotionEvent & sEvent)
|
||||
{
|
||||
#if defined(VCMI_ANDROID) || defined(VCMI_IOS)
|
||||
if(sEvent.state == 0) // any "button" is enough on mobile
|
||||
if(sEvent.state == 0 || GH.multifinger) // any "button" is enough on mobile
|
||||
#else
|
||||
if((sEvent.state & SDL_BUTTON_MMASK) == 0) // swipe only works with middle mouse on other platforms
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user