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
|
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