diff options
Diffstat (limited to 'apps/gui/quickscreen.c')
-rw-r--r-- | apps/gui/quickscreen.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index 639233b3b1..402b1e2585 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -286,24 +286,28 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) | |||
286 | return true; | 286 | return true; |
287 | } | 287 | } |
288 | #ifdef HAVE_TOUCHSCREEN | 288 | #ifdef HAVE_TOUCHSCREEN |
289 | /* figure out which button was pressed... | 289 | /* figure out which button was pressed... */ |
290 | * top is exit, left/right/botton are the respective actions | 290 | static bool xy_is_within_viewport(int x, int y, const struct viewport *vp) |
291 | */ | 291 | { |
292 | bool is_x = (x > vp->x && x < (vp->x + vp->width)); | ||
293 | bool is_y = (y > vp->y && y < (vp->y + vp->height)); | ||
294 | return (is_x && is_y); | ||
295 | } | ||
296 | |||
292 | static int quickscreen_touchscreen_button(const struct viewport | 297 | static int quickscreen_touchscreen_button(const struct viewport |
293 | vps[QUICKSCREEN_ITEM_COUNT]) | 298 | vps[QUICKSCREEN_ITEM_COUNT]) |
294 | { | 299 | { |
295 | short x,y; | 300 | short x,y; |
301 | /* only hitting the text counts, everything else is exit */ | ||
296 | if (action_get_touchscreen_press(&x, &y) != BUTTON_REL) | 302 | if (action_get_touchscreen_press(&x, &y) != BUTTON_REL) |
297 | return ACTION_NONE; | 303 | return ACTION_NONE; |
298 | if (y < vps[QUICKSCREEN_LEFT].y) | 304 | else if (xy_is_within_viewport(x,y,&vps[QUICKSCREEN_TOP])) |
299 | return ACTION_STD_CANCEL; | 305 | return ACTION_QS_TOP; |
300 | else if (y > vps[QUICKSCREEN_LEFT].y + | 306 | else if (xy_is_within_viewport(x,y,&vps[QUICKSCREEN_BOTTOM])) |
301 | vps[QUICKSCREEN_LEFT].height) | ||
302 | return ACTION_QS_DOWN; | 307 | return ACTION_QS_DOWN; |
303 | else if (x < vps[QUICKSCREEN_LEFT].x + | 308 | else if (xy_is_within_viewport(x,y,&vps[QUICKSCREEN_LEFT])) |
304 | vps[QUICKSCREEN_LEFT].width) | ||
305 | return ACTION_QS_LEFT; | 309 | return ACTION_QS_LEFT; |
306 | else if (x >= vps[QUICKSCREEN_RIGHT].x) | 310 | else if (xy_is_within_viewport(x,y,&vps[QUICKSCREEN_RIGHT])) |
307 | return ACTION_QS_RIGHT; | 311 | return ACTION_QS_RIGHT; |
308 | return ACTION_STD_CANCEL; | 312 | return ACTION_STD_CANCEL; |
309 | } | 313 | } |