mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Fix scrolling left button inadvertently cancels listtree
Depending on the actual keymap, canceling a listtree with the "scroll left" button may not be intended, especially if the list is entered from a completely different focus (think of leaving a plugin with "long left") Note: initializing "scrolling_left" with true without anything actually scrolling sounds odd to me... maybe this variable should be renamed? "pgleft_allow_cancel" comes to my mind (with opposite boolean states) Change-Id: I58a747fc90e91ae96e75932febb462f1f1a1b4ca
This commit is contained in:
parent
ce26212138
commit
a8758c953d
1 changed files with 8 additions and 6 deletions
|
@ -625,7 +625,7 @@ bool gui_synclist_do_button(struct gui_synclist * lists,
|
||||||
{
|
{
|
||||||
int action = *actionptr;
|
int action = *actionptr;
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
static bool scrolling_left = false;
|
static bool pgleft_allow_cancel = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_WHEEL_ACCELERATION
|
#ifdef HAVE_WHEEL_ACCELERATION
|
||||||
|
@ -735,24 +735,26 @@ bool gui_synclist_do_button(struct gui_synclist * lists,
|
||||||
to skip to root. ACTION_TREE_ROOT_INIT must be defined in the
|
to skip to root. ACTION_TREE_ROOT_INIT must be defined in the
|
||||||
keymaps as a repeated button press (the same as the repeated
|
keymaps as a repeated button press (the same as the repeated
|
||||||
ACTION_TREE_PGLEFT) with the pre condition being the non-repeated
|
ACTION_TREE_PGLEFT) with the pre condition being the non-repeated
|
||||||
button press */
|
button press. Leave out ACTION_TREE_ROOT_INIT in your keymaps to
|
||||||
|
disable cancel action by PGLEFT key (e.g. if PGLEFT and CANCEL
|
||||||
|
are mapped to different keys) */
|
||||||
if (lists->offset_position[0] == 0)
|
if (lists->offset_position[0] == 0)
|
||||||
{
|
{
|
||||||
scrolling_left = false;
|
pgleft_allow_cancel = true;
|
||||||
*actionptr = ACTION_STD_CANCEL;
|
*actionptr = ACTION_STD_CANCEL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
*actionptr = ACTION_TREE_PGLEFT;
|
*actionptr = ACTION_TREE_PGLEFT;
|
||||||
case ACTION_TREE_PGLEFT:
|
case ACTION_TREE_PGLEFT:
|
||||||
if(!scrolling_left && (lists->offset_position[0] == 0))
|
if(pgleft_allow_cancel && (lists->offset_position[0] == 0))
|
||||||
{
|
{
|
||||||
*actionptr = ACTION_STD_CANCEL;
|
*actionptr = ACTION_STD_CANCEL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
gui_synclist_scroll_left(lists);
|
gui_synclist_scroll_left(lists);
|
||||||
gui_synclist_draw(lists);
|
gui_synclist_draw(lists);
|
||||||
scrolling_left = true; /* stop ACTION_TREE_PAGE_LEFT
|
pgleft_allow_cancel = false; /* stop ACTION_TREE_PAGE_LEFT
|
||||||
skipping to root */
|
skipping to root */
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
/* for pgup / pgdown, we are obliged to have a different behaviour depending
|
/* for pgup / pgdown, we are obliged to have a different behaviour depending
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue