Fix touchscreen scrollbar behaviour when it's on the right.
authormcuelenaere <mcuelenaere@a1c6a512-1295-4272-9138-f99709370657>
Thu, 24 Jun 2010 14:22:36 +0000 (24 14:22 +0000)
committermcuelenaere <mcuelenaere@a1c6a512-1295-4272-9138-f99709370657>
Thu, 24 Jun 2010 14:22:36 +0000 (24 14:22 +0000)
This was broken since r26922.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27107 a1c6a512-1295-4272-9138-f99709370657

apps/gui/bitmap/list.c

index b5e253d..09c8961 100644 (file)
@@ -347,24 +347,16 @@ unsigned gui_synclist_do_touchscreen(struct gui_synclist * gui_list)
     short x, y;
     const int button = action_get_touchscreen_press(&x, &y);
     int line;
-    const int screen = SCREEN_MAIN;
+    const struct screen *display = &screens[SCREEN_MAIN];
+    const int screen = display->screen_type;
     const int list_start_item = gui_list->start_item[screen];
     const struct viewport *list_text_vp = &list_text[screen];
-    int list_width = list_text_vp->width;
-
-    if (global_settings.scrollbar == SCROLLBAR_RIGHT)
-        list_width += SCROLLBAR_WIDTH;
 
     if (button == BUTTON_NONE)
         return ACTION_NONE;
 
-    /* make sure it is inside the UI viewport */
-    if (list_display_title(gui_list, screen) &&
-        viewport_point_within_vp(&title_text[screen], x, y) && 
-        button == BUTTON_REL)
-        return ACTION_STD_CANCEL;
-        
-    if (!viewport_point_within_vp(list_text_vp, x, y))
+    if (global_settings.scrollbar == SCROLLBAR_RIGHT &&
+        x > list_text_vp->x + list_text_vp->width + SCROLLBAR_WIDTH)
         /* wider than the list's viewport, ignore it */
         return ACTION_NONE;
 
@@ -471,6 +463,9 @@ unsigned gui_synclist_do_touchscreen(struct gui_synclist * gui_list)
             else
                 return ACTION_NONE;
         }
+        /* Everything above the items is cancel */
+        else if (y < list_text_vp->y && button == BUTTON_REL)
+            return ACTION_STD_CANCEL;
     }
     return ACTION_NONE;
 }