From 1f3fa7df38daf8e883233e344ebc72fe8936ca66 Mon Sep 17 00:00:00 2001 From: Martin Fuchs Date: Thu, 26 Feb 2004 21:52:34 +0000 Subject: [PATCH] disable start menu entries for non-existing folders svn path=/branches/lean-explorer/; revision=8417 --- .../system/explorer/taskbar/startmenu.cpp | 17 ++++++++++++++--- .../subsys/system/explorer/taskbar/startmenu.h | 4 ++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/reactos/subsys/system/explorer/taskbar/startmenu.cpp b/reactos/subsys/system/explorer/taskbar/startmenu.cpp index 8823dcb512d..0e4aed394fa 100644 --- a/reactos/subsys/system/explorer/taskbar/startmenu.cpp +++ b/reactos/subsys/system/explorer/taskbar/startmenu.cpp @@ -1008,7 +1008,7 @@ void StartMenu::CreateSubmenu(int id, LPCTSTR title, CREATORFUNC_INFO creator) CreateSubmenu(id, StartMenuFolders(), title, creator); } -void StartMenu::CreateSubmenu(int id, int folder_id, LPCTSTR title, CREATORFUNC_INFO creator) +bool StartMenu::CreateSubmenu(int id, int folder_id, LPCTSTR title, CREATORFUNC_INFO creator) { try { SpecialFolderPath folder(folder_id, _hwnd); @@ -1017,12 +1017,17 @@ void StartMenu::CreateSubmenu(int id, int folder_id, LPCTSTR title, CREATORFUNC_ new_folders.push_back(folder); CreateSubmenu(id, new_folders, title, creator); + + return true; } catch(COMException&) { // ignore Exception and don't display anything + CloseOtherSubmenus(id); + _buttons[GetSelectionIndex()]._enabled = false; // disable entries for non-existing folders + return false; } } -void StartMenu::CreateSubmenu(int id, int folder_id1, int folder_id2, LPCTSTR title, CREATORFUNC_INFO creator) +bool StartMenu::CreateSubmenu(int id, int folder_id1, int folder_id2, LPCTSTR title, CREATORFUNC_INFO creator) { StartMenuFolders new_folders; @@ -1036,8 +1041,14 @@ void StartMenu::CreateSubmenu(int id, int folder_id1, int folder_id2, LPCTSTR ti } catch(COMException&) { } - if (!new_folders.empty()) + if (!new_folders.empty()) { CreateSubmenu(id, new_folders, title, creator); + return true; + } else { + CloseOtherSubmenus(id); + _buttons[GetSelectionIndex()]._enabled = false; // disable entries for non-existing folders + return false; + } } void StartMenu::CreateSubmenu(int id, const StartMenuFolders& new_folders, LPCTSTR title, CREATORFUNC_INFO creator) diff --git a/reactos/subsys/system/explorer/taskbar/startmenu.h b/reactos/subsys/system/explorer/taskbar/startmenu.h index a074171c7dc..676dc80000d 100644 --- a/reactos/subsys/system/explorer/taskbar/startmenu.h +++ b/reactos/subsys/system/explorer/taskbar/startmenu.h @@ -279,8 +279,8 @@ protected: bool CloseSubmenus() {return CloseOtherSubmenus();} bool CloseOtherSubmenus(int id=0); void CreateSubmenu(int id, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); - void CreateSubmenu(int id, int folder, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); - void CreateSubmenu(int id, int folder1, int folder2, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); + bool CreateSubmenu(int id, int folder, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); + bool CreateSubmenu(int id, int folder1, int folder2, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); void CreateSubmenu(int id, const StartMenuFolders& new_folders, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); void ActivateEntry(int id, const ShellEntrySet& entries); virtual void CloseStartMenu(int id=0);