summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2021-10-26 03:05:50 +0200
committerChristian Soffke <christian.soffke@gmail.com>2022-10-25 03:26:51 +0200
commit193ebb5a36374acbe379fe573317f9b668e65e4f (patch)
treec5163b68d97de8d3da4a4ddbf932dd933250c628
parent498988d34a50bb5fe32cf1092f11e3c10a0ac821 (diff)
downloadrockbox-193ebb5a36374acbe379fe573317f9b668e65e4f.tar.gz
rockbox-193ebb5a36374acbe379fe573317f9b668e65e4f.zip
Enable access to Shortcuts Menu from QuickScreen
Offers a quick way of switching to the Shortcuts Menu by pressing the 'context menu' button while QuickScreen is active (e.g. long press Select on iPods and some other players) Change-Id: I38292c7070cf093a81e1db688809b1f0d6a8764a
-rw-r--r--apps/gui/quickscreen.c25
-rw-r--r--apps/gui/quickscreen.h7
-rw-r--r--apps/gui/wps.c20
-rw-r--r--apps/keymaps/keymap-agptekrocker.c19
-rw-r--r--apps/keymaps/keymap-clip.c2
-rw-r--r--apps/keymaps/keymap-erosq.c1
-rw-r--r--apps/keymaps/keymap-fiiom3k.c3
-rw-r--r--apps/keymaps/keymap-fuzeplus.c3
-rw-r--r--apps/keymaps/keymap-ipod.c2
-rw-r--r--apps/keymaps/keymap-nwz.c3
-rw-r--r--apps/keymaps/keymap-nwza860.c3
-rw-r--r--apps/keymaps/keymap-zen.c3
-rw-r--r--apps/menu.c7
-rw-r--r--apps/tree.c28
-rw-r--r--manual/main_menu/main.tex3
15 files changed, 86 insertions, 43 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index e403e13e6c..141eb1a16b 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -320,13 +320,13 @@ static int quickscreen_touchscreen_button(void)
320} 320}
321#endif 321#endif
322 322
323static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter, bool *usb) 323static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter, bool *usb)
324{ 324{
325 int button; 325 int button;
326 struct viewport parent[NB_SCREENS]; 326 struct viewport parent[NB_SCREENS];
327 struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; 327 struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT];
328 struct viewport vp_icons[NB_SCREENS]; 328 struct viewport vp_icons[NB_SCREENS];
329 bool changed = false; 329 int ret = QUICKSCREEN_OK;
330 /* To quit we need either : 330 /* To quit we need either :
331 * - a second press on the button that made us enter 331 * - a second press on the button that made us enter
332 * - an action taken while pressing the enter button, 332 * - an action taken while pressing the enter button,
@@ -367,7 +367,7 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
367 } 367 }
368 if (gui_quickscreen_do_button(qs, button)) 368 if (gui_quickscreen_do_button(qs, button))
369 { 369 {
370 changed = true; 370 ret |= QUICKSCREEN_CHANGED;
371 can_quit = true; 371 can_quit = true;
372 FOR_NB_SCREENS(i) 372 FOR_NB_SCREENS(i)
373 gui_quickscreen_draw(qs, &screens[i], &parent[i], 373 gui_quickscreen_draw(qs, &screens[i], &parent[i],
@@ -389,6 +389,11 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
389 FOR_NB_SCREENS(i) 389 FOR_NB_SCREENS(i)
390 skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_NON_STATIC); 390 skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_NON_STATIC);
391 } 391 }
392 else if (button == ACTION_STD_CONTEXT)
393 {
394 ret |= QUICKSCREEN_GOTO_SHORTCUTS_MENU;
395 break;
396 }
392 if ((button == button_enter) && can_quit) 397 if ((button == button_enter) && can_quit)
393 break; 398 break;
394 399
@@ -405,7 +410,8 @@ static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_ente
405 } 410 }
406 411
407 pop_current_activity(); 412 pop_current_activity();
408 return changed; 413
414 return ret;
409} 415}
410 416
411static const struct settings_list *get_setting(int gs_value, 417static const struct settings_list *get_setting(int gs_value,
@@ -427,9 +433,6 @@ int quick_screen_quick(int button_enter)
427#endif 433#endif
428 bool usb = false; 434 bool usb = false;
429 435
430 if (global_settings.shortcuts_replaces_qs)
431 return do_shortcut_menu(NULL);
432
433 qs.items[QUICKSCREEN_TOP] = 436 qs.items[QUICKSCREEN_TOP] =
434 get_setting(global_settings.qs_items[QUICKSCREEN_TOP], NULL); 437 get_setting(global_settings.qs_items[QUICKSCREEN_TOP], NULL);
435 qs.items[QUICKSCREEN_LEFT] = 438 qs.items[QUICKSCREEN_LEFT] =
@@ -442,7 +445,8 @@ int quick_screen_quick(int button_enter)
442 get_setting(global_settings.qs_items[QUICKSCREEN_BOTTOM], NULL); 445 get_setting(global_settings.qs_items[QUICKSCREEN_BOTTOM], NULL);
443 446
444 qs.callback = NULL; 447 qs.callback = NULL;
445 if (gui_syncquickscreen_run(&qs, button_enter, &usb)) 448 int ret = gui_syncquickscreen_run(&qs, button_enter, &usb);
449 if (ret & QUICKSCREEN_CHANGED)
446 { 450 {
447 settings_save(); 451 settings_save();
448 /* make sure repeat/shuffle/any other nasty ones get updated */ 452 /* make sure repeat/shuffle/any other nasty ones get updated */
@@ -465,7 +469,10 @@ int quick_screen_quick(int button_enter)
465 set_albumart_mode(global_settings.album_art); 469 set_albumart_mode(global_settings.album_art);
466#endif 470#endif
467 } 471 }
468 return (usb ? 1:0); 472 if (usb)
473 return QUICKSCREEN_IN_USB;
474 return ret & QUICKSCREEN_GOTO_SHORTCUTS_MENU ? QUICKSCREEN_GOTO_SHORTCUTS_MENU :
475 QUICKSCREEN_OK;
469} 476}
470 477
471/* stuff to make the quickscreen configurable */ 478/* stuff to make the quickscreen configurable */
diff --git a/apps/gui/quickscreen.h b/apps/gui/quickscreen.h
index 015928ee8a..6082b5a883 100644
--- a/apps/gui/quickscreen.h
+++ b/apps/gui/quickscreen.h
@@ -36,6 +36,13 @@ enum quickscreen_item {
36 QUICKSCREEN_ITEM_COUNT, 36 QUICKSCREEN_ITEM_COUNT,
37}; 37};
38 38
39enum quickscreen_return {
40 QUICKSCREEN_OK = 0,
41 QUICKSCREEN_IN_USB = 0x1,
42 QUICKSCREEN_GOTO_SHORTCUTS_MENU = 0x2,
43 QUICKSCREEN_CHANGED = 0x4,
44};
45
39struct gui_quickscreen 46struct gui_quickscreen
40{ 47{
41 const struct settings_list *items[QUICKSCREEN_ITEM_COUNT]; 48 const struct settings_list *items[QUICKSCREEN_ITEM_COUNT];
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index 2587542b00..5b973a2199 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -53,6 +53,7 @@
53#include "root_menu.h" 53#include "root_menu.h"
54#include "backdrop.h" 54#include "backdrop.h"
55#include "quickscreen.h" 55#include "quickscreen.h"
56#include "shortcuts.h"
56#include "pitchscreen.h" 57#include "pitchscreen.h"
57#include "appevents.h" 58#include "appevents.h"
58#include "viewport.h" 59#include "viewport.h"
@@ -839,15 +840,24 @@ long gui_wps_show(void)
839 case ACTION_WPS_QUICKSCREEN: 840 case ACTION_WPS_QUICKSCREEN:
840 { 841 {
841 gwps_leave_wps(); 842 gwps_leave_wps();
842 if (global_settings.shortcuts_replaces_qs) 843 bool enter_shortcuts_menu = global_settings.shortcuts_replaces_qs;
844 if (!enter_shortcuts_menu)
843 { 845 {
844 global_status.last_screen = GO_TO_SHORTCUTMENU;
845 int ret = quick_screen_quick(button); 846 int ret = quick_screen_quick(button);
847 if (ret == QUICKSCREEN_IN_USB)
848 return GO_TO_ROOT;
849 else if (ret == QUICKSCREEN_GOTO_SHORTCUTS_MENU)
850 enter_shortcuts_menu = true;
851 else
852 restore = true;
853 }
854
855 if (enter_shortcuts_menu)
856 {
857 global_status.last_screen = GO_TO_SHORTCUTMENU;
858 int ret = do_shortcut_menu(NULL);
846 return (ret == GO_TO_PREVIOUS ? GO_TO_WPS : ret); 859 return (ret == GO_TO_PREVIOUS ? GO_TO_WPS : ret);
847 } 860 }
848 else if (quick_screen_quick(button) > 0)
849 return GO_TO_ROOT;
850 restore = true;
851 } 861 }
852 break; 862 break;
853#endif /* HAVE_QUICKSCREEN */ 863#endif /* HAVE_QUICKSCREEN */
diff --git a/apps/keymaps/keymap-agptekrocker.c b/apps/keymaps/keymap-agptekrocker.c
index 1fb8465b0a..d016b3b323 100644
--- a/apps/keymaps/keymap-agptekrocker.c
+++ b/apps/keymaps/keymap-agptekrocker.c
@@ -139,15 +139,16 @@ static const struct button_mapping button_context_yesno[] = {
139}; /* button_context_settings_yesno */ 139}; /* button_context_settings_yesno */
140 140
141static const struct button_mapping button_context_quickscreen[] = { 141static const struct button_mapping button_context_quickscreen[] = {
142 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 142 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
143 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 143 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 144 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
145 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 145 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
146 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 146 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
147 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 147 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
148 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, 148 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
149 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 149 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE }, 150 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
151 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
151 152
152 LAST_ITEM_IN_LIST 153 LAST_ITEM_IN_LIST
153}; /* button_context_quickscreen */ 154}; /* button_context_quickscreen */
diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c
index 3c92f03a07..917f769890 100644
--- a/apps/keymaps/keymap-clip.c
+++ b/apps/keymaps/keymap-clip.c
@@ -179,7 +179,7 @@ static const struct button_mapping button_context_quickscreen[] = {
179 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 179 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
180 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 180 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
181 { ACTION_STD_CANCEL, BUTTON_HOME, BUTTON_NONE }, 181 { ACTION_STD_CANCEL, BUTTON_HOME, BUTTON_NONE },
182 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE }, 182 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
183 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 183 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
184 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 184 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
185 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 185 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-erosq.c b/apps/keymaps/keymap-erosq.c
index d486423a53..c69e4babdb 100644
--- a/apps/keymaps/keymap-erosq.c
+++ b/apps/keymaps/keymap-erosq.c
@@ -130,6 +130,7 @@ static const struct button_mapping button_context_quickscreen[] = {
130 { ACTION_QS_DOWN, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE }, 130 { ACTION_QS_DOWN, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
131 { ACTION_QS_DOWN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 131 { ACTION_QS_DOWN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
132 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 132 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
133 { ACTION_STD_CONTEXT,BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
133 134
134 LAST_ITEM_IN_LIST 135 LAST_ITEM_IN_LIST
135}; /* button_context_quickscreen */ 136}; /* button_context_quickscreen */
diff --git a/apps/keymaps/keymap-fiiom3k.c b/apps/keymaps/keymap-fiiom3k.c
index d0fbbb2e98..a9744b908b 100644
--- a/apps/keymaps/keymap-fiiom3k.c
+++ b/apps/keymaps/keymap-fiiom3k.c
@@ -175,7 +175,8 @@ static const struct button_mapping button_context_quickscreen[] = {
175 {ACTION_QS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 175 {ACTION_QS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
176 {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE}, 176 {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE},
177 {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 177 {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
178 {ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE}, 178 {ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT},
179 {ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
179 {ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE}, 180 {ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE},
180 {ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE}, 181 {ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE},
181 {ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE}, 182 {ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE},
diff --git a/apps/keymaps/keymap-fuzeplus.c b/apps/keymaps/keymap-fuzeplus.c
index 6601316469..9ce5a79fc2 100644
--- a/apps/keymaps/keymap-fuzeplus.c
+++ b/apps/keymaps/keymap-fuzeplus.c
@@ -128,7 +128,8 @@ static const struct button_mapping button_context_keyboard[] = {
128}; /* button_context_keyboard */ 128}; /* button_context_keyboard */
129 129
130static const struct button_mapping button_context_quickscreen[] = { 130static const struct button_mapping button_context_quickscreen[] = {
131 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE }, 131 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
132 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
132 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 133 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
133 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE, BUTTON_NONE }, 134 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE, BUTTON_NONE },
134 { ACTION_STD_CANCEL, BUTTON_BOTTOMRIGHT, BUTTON_NONE }, 135 { ACTION_STD_CANCEL, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c
index e3a17fffba..6d06bd0244 100644
--- a/apps/keymaps/keymap-ipod.c
+++ b/apps/keymaps/keymap-ipod.c
@@ -132,7 +132,7 @@ static const struct button_mapping button_context_quickscreen[] = {
132 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 132 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
133 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 133 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
134 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 134 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
135 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE }, 135 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
136 { ACTION_QS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE }, 136 { ACTION_QS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
137 { ACTION_QS_VOLDOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE }, 137 { ACTION_QS_VOLDOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_QS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE }, 138 { ACTION_QS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-nwz.c b/apps/keymaps/keymap-nwz.c
index 028fbf1bfd..1fae8d3594 100644
--- a/apps/keymaps/keymap-nwz.c
+++ b/apps/keymaps/keymap-nwz.c
@@ -112,7 +112,8 @@ static const struct button_mapping button_context_keyboard[] = {
112}; /* button_context_keyboard */ 112}; /* button_context_keyboard */
113 113
114static const struct button_mapping button_context_quickscreen[] = { 114static const struct button_mapping button_context_quickscreen[] = {
115 { ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE }, 115 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
116 { ACTION_STD_CANCEL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
116 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 117 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
117 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, 118 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
118 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE }, 119 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-nwza860.c b/apps/keymaps/keymap-nwza860.c
index d455e23b62..899796552e 100644
--- a/apps/keymaps/keymap-nwza860.c
+++ b/apps/keymaps/keymap-nwza860.c
@@ -74,7 +74,8 @@ static const struct button_mapping button_context_keyboard[] = {
74}; /* button_context_keyboard */ 74}; /* button_context_keyboard */
75 75
76static const struct button_mapping button_context_quickscreen[] = { 76static const struct button_mapping button_context_quickscreen[] = {
77 { ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE }, 77 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
78 { ACTION_STD_CANCEL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
78 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 79 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
79 80
80 LAST_ITEM_IN_LIST 81 LAST_ITEM_IN_LIST
diff --git a/apps/keymaps/keymap-zen.c b/apps/keymaps/keymap-zen.c
index b0f24af459..04b65b3980 100644
--- a/apps/keymaps/keymap-zen.c
+++ b/apps/keymaps/keymap-zen.c
@@ -145,7 +145,8 @@ static const struct button_mapping button_context_keyboard[] = {
145}; /* button_context_keyboard */ 145}; /* button_context_keyboard */
146 146
147static const struct button_mapping button_context_quickscreen[] = { 147static const struct button_mapping button_context_quickscreen[] = {
148 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE }, 148 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
149 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
149 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 150 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
150 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE, BUTTON_NONE }, 151 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE, BUTTON_NONE },
151 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE }, 152 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
diff --git a/apps/menu.c b/apps/menu.c
index 85dac8a214..c86ada1986 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -455,14 +455,13 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
455#ifdef HAVE_QUICKSCREEN 455#ifdef HAVE_QUICKSCREEN
456 else if (action == ACTION_STD_QUICKSCREEN) 456 else if (action == ACTION_STD_QUICKSCREEN)
457 { 457 {
458 if (global_settings.shortcuts_replaces_qs) 458 if (global_settings.shortcuts_replaces_qs ||
459 quick_screen_quick(action) == QUICKSCREEN_GOTO_SHORTCUTS_MENU)
459 { 460 {
460 global_status.last_screen = GO_TO_SHORTCUTMENU; 461 global_status.last_screen = GO_TO_SHORTCUTMENU;
461 ret = quick_screen_quick(action); 462 ret = do_shortcut_menu(NULL);
462 done = true; 463 done = true;
463 } 464 }
464 else
465 quick_screen_quick(action);
466 redraw_lists = true; 465 redraw_lists = true;
467 } 466 }
468#endif 467#endif
diff --git a/apps/tree.c b/apps/tree.c
index 6622e1c4c2..2bccefa7a1 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -72,6 +72,7 @@
72#include "list.h" 72#include "list.h"
73#include "splash.h" 73#include "splash.h"
74#include "quickscreen.h" 74#include "quickscreen.h"
75#include "shortcuts.h"
75#include "appevents.h" 76#include "appevents.h"
76 77
77#include "root_menu.h" 78#include "root_menu.h"
@@ -751,19 +752,28 @@ static int dirbrowse(void)
751 break; 752 break;
752#ifdef HAVE_QUICKSCREEN 753#ifdef HAVE_QUICKSCREEN
753 case ACTION_STD_QUICKSCREEN: 754 case ACTION_STD_QUICKSCREEN:
754 if (global_settings.shortcuts_replaces_qs) 755 {
755 { 756 bool enter_shortcuts_menu = global_settings.shortcuts_replaces_qs;
756 if (*tc.dirfilter < NUM_FILTER_MODES) 757 if (enter_shortcuts_menu && *tc.dirfilter >= NUM_FILTER_MODES)
757 {
758 global_status.last_screen = GO_TO_SHORTCUTMENU;
759 return quick_screen_quick(button);
760 }
761 break; 758 break;
759 else if (!enter_shortcuts_menu)
760 {
761 int ret = quick_screen_quick(button);
762 if (ret == QUICKSCREEN_IN_USB)
763 reload_dir = true;
764 else if (ret == QUICKSCREEN_GOTO_SHORTCUTS_MENU)
765 enter_shortcuts_menu = true;
762 } 766 }
763 else if (quick_screen_quick(button)) 767
764 reload_dir = true; 768 if (enter_shortcuts_menu && *tc.dirfilter < NUM_FILTER_MODES)
769 {
770 global_status.last_screen = GO_TO_SHORTCUTMENU;
771 return do_shortcut_menu(NULL);
772 }
773
765 restore = true; 774 restore = true;
766 break; 775 break;
776 }
767#endif 777#endif
768 778
769#ifdef HAVE_HOTKEY 779#ifdef HAVE_HOTKEY
diff --git a/manual/main_menu/main.tex b/manual/main_menu/main.tex
index f6f70b1084..0f5a3d26c5 100644
--- a/manual/main_menu/main.tex
+++ b/manual/main_menu/main.tex
@@ -270,6 +270,9 @@ utilities. A detailed description of the different plugins is to be found in
270 To do so, slide your finger around the click wheel as you would on the 270 To do so, slide your finger around the click wheel as you would on the
271 While Playing Screen.} 271 While Playing Screen.}
272 } 272 }
273
274 Press \ActionStdContext{} to access the \setting{Shortcuts Menu} directly from the
275 \setting{Quick Screen}.
273} 276}
274 277
275\section{\label{ref:MainMenuShortcuts}Shortcuts} 278\section{\label{ref:MainMenuShortcuts}Shortcuts}