summaryrefslogtreecommitdiffstats
path: root/gui/gui.cpp
diff options
context:
space:
mode:
authorVojtech Bocek <vbocek@gmail.com>2014-01-29 18:37:19 +0100
committerEthan Yonker <dees_troy@teamw.in>2014-02-07 19:37:13 +0100
commit1fc30fc77b5588c4b651085c21003aceb4ec5083 (patch)
treee8f522b1aa1150095bc0e440039c1a5b8205ab0c /gui/gui.cpp
parentExpansion of vibrate options (diff)
downloadandroid_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar.gz
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar.bz2
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar.lz
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar.xz
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.tar.zst
android_bootable_recovery-1fc30fc77b5588c4b651085c21003aceb4ec5083.zip
Diffstat (limited to 'gui/gui.cpp')
-rw-r--r--gui/gui.cpp63
1 files changed, 62 insertions, 1 deletions
diff --git a/gui/gui.cpp b/gui/gui.cpp
index e9efc1db9..2098342b0 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -186,6 +186,7 @@ static void * input_thread(void *cookie)
static struct timeval touchStart;
HardwareKeyboard kb;
string seconds;
+ MouseCursor *cursor = PageManager::GetMouseCursor();
#ifndef TW_NO_SCREEN_TIMEOUT
//start screen timeout threads
@@ -329,7 +330,47 @@ static void * input_thread(void *cookie)
#ifdef _EVENT_LOGGING
LOGERR("TOUCH_KEY: %d\n", ev.code);
#endif
- if (ev.value != 0)
+ // Left mouse button
+ if(ev.code == BTN_LEFT)
+ {
+ if(ev.value == 1)
+ {
+ cursor->GetPos(x, y);
+
+ if (PageManager::NotifyTouch(TOUCH_START, x, y) > 0)
+ state = 1;
+ drag = 1;
+ touch_and_hold = 1;
+ dontwait = 1;
+ key_repeat = 0;
+ gettimeofday(&touchStart, NULL);
+ }
+ else if(drag == 1)
+ {
+ if (state == 0)
+ {
+ cursor->GetPos(x, y);
+
+ PageManager::NotifyTouch(TOUCH_RELEASE, x, y);
+
+ touch_and_hold = 0;
+ touch_repeat = 0;
+ if (!key_repeat)
+ dontwait = 0;
+ }
+ state = 0;
+ drag = 0;
+ }
+ }
+ // side mouse button, often used for "back" function
+ else if(ev.code == BTN_SIDE)
+ {
+ if(ev.value == 1)
+ kb.KeyDown(KEY_BACK);
+ else
+ kb.KeyUp(KEY_BACK);
+ }
+ else if (ev.value != 0)
{
// This is a key press
if (kb.KeyDown(ev.code))
@@ -367,6 +408,26 @@ static void * input_thread(void *cookie)
#endif
}
}
+ else if(ev.type == EV_REL)
+ {
+#ifdef _EVENT_LOGGING
+ LOGERR("EV_REL %d %d\n", ev.code, ev.value);
+#endif
+ if(ev.code == REL_X)
+ cursor->Move(ev.value, 0);
+ else if(ev.code == REL_Y)
+ cursor->Move(0, ev.value);
+
+ if(drag == 1) {
+ cursor->GetPos(x, y);
+#ifdef _EVENT_LOGGING
+ LOGERR("TOUCH_DRAG: %d, %d\n", x, y);
+#endif
+ if (PageManager::NotifyTouch(TOUCH_DRAG, x, y) > 0)
+ state = 1;
+ key_repeat = 0;
+ }
+ }
}
return NULL;
}