forked from Mirrorlandia_minetest/minetest
Fix touch input on Linux
The code relied on touch IDs being consecutive. This is true on Android, but not on Linux. Therefore, touch input on Linux was broken since 53886dcdb52de80d862539e22950c84fbf88df88.
This commit is contained in:
parent
0d61598d8a
commit
3b346fd3c9
@ -273,7 +273,7 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event)
|
|||||||
irr_ptr<GUIModalMenu> holder;
|
irr_ptr<GUIModalMenu> holder;
|
||||||
holder.grab(this); // keep this alive until return (it might be dropped downstream [?])
|
holder.grab(this); // keep this alive until return (it might be dropped downstream [?])
|
||||||
|
|
||||||
if (event.TouchInput.ID == 0) {
|
if (event.TouchInput.touchedCount == 1) {
|
||||||
if (event.TouchInput.Event == ETIE_PRESSED_DOWN || event.TouchInput.Event == ETIE_MOVED)
|
if (event.TouchInput.Event == ETIE_PRESSED_DOWN || event.TouchInput.Event == ETIE_MOVED)
|
||||||
m_pointer = v2s32(event.TouchInput.X, event.TouchInput.Y);
|
m_pointer = v2s32(event.TouchInput.X, event.TouchInput.Y);
|
||||||
gui::IGUIElement *hovered = Environment->getRootGUIElement()->getElementFromPoint(core::position2d<s32>(m_pointer));
|
gui::IGUIElement *hovered = Environment->getRootGUIElement()->getElementFromPoint(core::position2d<s32>(m_pointer));
|
||||||
@ -290,7 +290,7 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event)
|
|||||||
if (event.TouchInput.Event == ETIE_LEFT_UP)
|
if (event.TouchInput.Event == ETIE_LEFT_UP)
|
||||||
leave();
|
leave();
|
||||||
return ret;
|
return ret;
|
||||||
} else if (event.TouchInput.ID == 1) {
|
} else if (event.TouchInput.touchedCount == 2) {
|
||||||
if (event.TouchInput.Event != ETIE_LEFT_UP)
|
if (event.TouchInput.Event != ETIE_LEFT_UP)
|
||||||
return true; // ignore
|
return true; // ignore
|
||||||
auto focused = Environment->getFocus();
|
auto focused = Environment->getFocus();
|
||||||
|
Loading…
Reference in New Issue
Block a user