disable start menu entries for non-existing folders
authorMartin Fuchs <fuchs.martin@gmail.com>
Thu, 26 Feb 2004 21:52:34 +0000 (21:52 +0000)
committerMartin Fuchs <fuchs.martin@gmail.com>
Thu, 26 Feb 2004 21:52:34 +0000 (21:52 +0000)
svn path=/branches/lean-explorer/; revision=8417

reactos/subsys/system/explorer/taskbar/startmenu.cpp
reactos/subsys/system/explorer/taskbar/startmenu.h

index 8823dcb..0e4aed3 100644 (file)
@@ -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)
index a074171..676dc80 100644 (file)
@@ -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);