disable start menu entries for non-existing folders

svn path=/trunk/; revision=8416
This commit is contained in:
Martin Fuchs 2004-02-26 21:52:26 +00:00
parent 9bcc74655c
commit 11562074f2
2 changed files with 16 additions and 5 deletions

View file

@ -1009,7 +1009,7 @@ void StartMenu::CreateSubmenu(int id, LPCTSTR title, CREATORFUNC_INFO creator)
CreateSubmenu(id, StartMenuFolders(), title, 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 { try {
SpecialFolderPath folder(folder_id, _hwnd); SpecialFolderPath folder(folder_id, _hwnd);
@ -1018,12 +1018,17 @@ void StartMenu::CreateSubmenu(int id, int folder_id, LPCTSTR title, CREATORFUNC_
new_folders.push_back(folder); new_folders.push_back(folder);
CreateSubmenu(id, new_folders, title, creator); CreateSubmenu(id, new_folders, title, creator);
return true;
} catch(COMException&) { } catch(COMException&) {
// ignore Exception and don't display anything // 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; StartMenuFolders new_folders;
@ -1037,8 +1042,14 @@ void StartMenu::CreateSubmenu(int id, int folder_id1, int folder_id2, LPCTSTR ti
} catch(COMException&) { } catch(COMException&) {
} }
if (!new_folders.empty()) if (!new_folders.empty()) {
CreateSubmenu(id, new_folders, title, creator); 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) void StartMenu::CreateSubmenu(int id, const StartMenuFolders& new_folders, LPCTSTR title, CREATORFUNC_INFO creator)

View file

@ -279,8 +279,8 @@ protected:
bool CloseSubmenus() {return CloseOtherSubmenus();} bool CloseSubmenus() {return CloseOtherSubmenus();}
bool CloseOtherSubmenus(int id=0); bool CloseOtherSubmenus(int id=0);
void CreateSubmenu(int id, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator); 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); bool 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 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 CreateSubmenu(int id, const StartMenuFolders& new_folders, LPCTSTR title, CREATORFUNC_INFO creator=s_def_creator);
void ActivateEntry(int id, const ShellEntrySet& entries); void ActivateEntry(int id, const ShellEntrySet& entries);
virtual void CloseStartMenu(int id=0); virtual void CloseStartMenu(int id=0);