summaryrefslogtreecommitdiff
path: root/apps/gui/quickscreen.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-09-05 23:32:16 +0000
committerThomas Martitz <kugel@rockbox.org>2009-09-05 23:32:16 +0000
commita17d06ccc3b589cfc5eb92edbea3c09494b1ed48 (patch)
treec21e62003915ab6ce65c9e9df0595fe59baac150 /apps/gui/quickscreen.c
parent9c938a23b93902c3d38204df68677d7455a313c3 (diff)
downloadrockbox-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.c24
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 290static 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
292static int quickscreen_touchscreen_button(const struct viewport 297static 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}