1
0
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:
Andrii Danylchenko
2023-01-17 12:04:57 +02:00
parent 2b1511df99
commit c24b89fe06
3 changed files with 12 additions and 11 deletions

View File

@@ -206,9 +206,6 @@ void CGuiHandler::handleEvents()
} }
} }
bool multifinger = false;
int lastFingerCount;
void convertTouch(SDL_Event * current) void convertTouch(SDL_Event * current)
{ {
int rLogicalWidth, rLogicalHeight; int rLogicalWidth, rLogicalHeight;
@@ -358,7 +355,7 @@ void CGuiHandler::handleCurrentEvent()
} }
else if(current->type == SDL_MOUSEBUTTONUP) else if(current->type == SDL_MOUSEBUTTONUP)
{ {
if(!multifinger || lastFingerCount < 1) if(!multifinger)
{ {
switch(current->button.button) switch(current->button.button)
{ {
@@ -374,13 +371,14 @@ void CGuiHandler::handleCurrentEvent()
} }
} }
} }
#ifndef VCMI_IOS
else if(current->type == SDL_FINGERDOWN) 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); convertTouch(current);
handleMouseMotion(); handleMouseMotion();
@@ -389,16 +387,17 @@ void CGuiHandler::handleCurrentEvent()
} }
else if(current->type == SDL_FINGERUP) else if(current->type == SDL_FINGERUP)
{ {
lastFingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId); auto fingerCount = SDL_GetNumTouchFingers(current->tfinger.touchId);
if(multifinger) if(multifinger)
{ {
multifinger = false;
convertTouch(current); convertTouch(current);
handleMouseMotion(); handleMouseMotion();
handleMouseButtonClick(rclickable, EIntObjMouseBtnType::RIGHT, false); handleMouseButtonClick(rclickable, EIntObjMouseBtnType::RIGHT, false);
multifinger = fingerCount != 0;
} }
} }
#endif //VCMI_IOS
current = nullptr; current = nullptr;
} //event end } //event end
@@ -527,7 +526,8 @@ void CGuiHandler::renderFrame()
CGuiHandler::CGuiHandler() CGuiHandler::CGuiHandler()
: lastClick(-500, -500),lastClickTime(0), defActionsDef(0), captureChildren(false) : lastClick(-500, -500),lastClickTime(0), defActionsDef(0), captureChildren(false),
multifinger(false)
{ {
continueEventHandling = true; continueEventHandling = true;
curInt = nullptr; curInt = nullptr;

View File

@@ -101,6 +101,7 @@ public:
Point lastClick; Point lastClick;
unsigned lastClickTime; unsigned lastClickTime;
bool multifinger;
ui8 defActionsDef; //default auto actions 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 bool captureChildren; //all newly created objects will get their parents from stack and will be added to parents children list

View File

@@ -180,7 +180,7 @@ void CTerrainRect::mouseMoved(const SDL_MouseMotionEvent & sEvent)
void CTerrainRect::handleSwipeMove(const SDL_MouseMotionEvent & sEvent) void CTerrainRect::handleSwipeMove(const SDL_MouseMotionEvent & sEvent)
{ {
#if defined(VCMI_ANDROID) || defined(VCMI_IOS) #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 #else
if((sEvent.state & SDL_BUTTON_MMASK) == 0) // swipe only works with middle mouse on other platforms if((sEvent.state & SDL_BUTTON_MMASK) == 0) // swipe only works with middle mouse on other platforms
#endif #endif