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);
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;
} 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)
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);