diff --git a/reactos/subsys/system/explorer/doxy-footer.html b/reactos/subsys/system/explorer/doxy-footer.html index da80c841467..3c9901bd1b9 100644 --- a/reactos/subsys/system/explorer/doxy-footer.html +++ b/reactos/subsys/system/explorer/doxy-footer.html @@ -3,7 +3,7 @@
ROS Explorer Source Code Documentation -
generated on 22.02.2004 by +
generated on 23.02.2004 by
doxygen
diff --git a/reactos/subsys/system/explorer/taskbar/startmenu.cpp b/reactos/subsys/system/explorer/taskbar/startmenu.cpp index 76fbdbae1cc..26d3c658f87 100644 --- a/reactos/subsys/system/explorer/taskbar/startmenu.cpp +++ b/reactos/subsys/system/explorer/taskbar/startmenu.cpp @@ -542,6 +542,10 @@ void StartMenu::ProcessKey(int vk) case VK_ESCAPE: CloseStartMenu(); break; + + default: + if (vk>='0' && vk<='Z') + JumpToNextShortcut(vk); } } @@ -568,6 +572,56 @@ bool StartMenu::Navigate(int step) return false; } +bool StartMenu::JumpToNextShortcut(char c) +{ + int cur_idx = GetSelectionIndex(); + + if (cur_idx == -1) + cur_idx = 0; + + int first_found = 0; + int found_more = 0; + + SMBtnVector::const_iterator cur_it = _buttons.begin(); + cur_it += cur_idx + 1; + + // first search down from current item... + SMBtnVector::const_iterator it = cur_it; + for(; it!=_buttons.end(); ++it) { + const SMBtnInfo& btn = *it; + + if (!btn._title.empty() && toupper((TBYTE)btn._title.at(0)) == c) { + if (!first_found) + first_found = btn._id; + else + ++found_more; + } + } + + // ...now search from top to the current item + it = _buttons.begin(); + for(; it!=_buttons.end() && it!=cur_it; ++it) { + const SMBtnInfo& btn = *it; + + if (!btn._title.empty() && toupper((TBYTE)btn._title.at(0)) == c) { + if (!first_found) + first_found = btn._id; + else + ++found_more; + } + } + + if (first_found) { + SelectButton(first_found); + + if (!found_more) + Command(first_found, BN_CLICKED); + + return true; + } else + return false; +} + #endif // _LIGHT_STARTMENU diff --git a/reactos/subsys/system/explorer/taskbar/startmenu.h b/reactos/subsys/system/explorer/taskbar/startmenu.h index 550f35fb883..4cea212148e 100644 --- a/reactos/subsys/system/explorer/taskbar/startmenu.h +++ b/reactos/subsys/system/explorer/taskbar/startmenu.h @@ -258,6 +258,7 @@ protected: virtual void ProcessKey(int vk); bool Navigate(int step); bool OpenSubmenu(bool select_first=false); + bool JumpToNextShortcut(char c); #endif // member functions