diff options
author | Thomas Martitz <kugel@rockbox.org> | 2009-09-05 23:32:16 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2009-09-05 23:32:16 +0000 |
commit | a17d06ccc3b589cfc5eb92edbea3c09494b1ed48 (patch) | |
tree | c21e62003915ab6ce65c9e9df0595fe59baac150 /apps/gui/quickscreen.c | |
parent | 9c938a23b93902c3d38204df68677d7455a313c3 (diff) | |
download | rockbox-a17d06ccc3b589cfc5eb92edbea3c09494b1ed48.tar.gz rockbox-a17d06ccc3b589cfc5eb92edbea3c09494b1ed48.zip |
Improve and simplify touchscreen handling of the quickscreen in absolut mode - and implement handling for the top item.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22637 a1c6a512-1295-4272-9138-f99709370657
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 | } |