mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-06-14 03:16:38 +10:00
Added option to customize Pinned folder location
Items can be pinned to directories that require administative privileges (such as Open-Shell's default installation directory), so long as users take ownership of the pinned folder. Also adds a command to Open-Shell's context menu that opens the current pinned folder. Adds general support for directory-based settings by creating a new setting type called TYPE_DIRECTORY which uses a new bool added to BrowseLinkHelper, called bFoldersOnly. START_MENU_PINNED_ROOT has been removed, and all instances of both it and BrowseLinkHelper have been adjusted accordingly. To create your own directory-based settings, use CSetting::TYPE_DIRECTORY. Empty directory paths are reset to their default value as they can cause unexpected behavior.
This commit is contained in:
committed by
Ibuprophen
parent
27e5c2bc74
commit
8031739110
@@ -3856,6 +3856,7 @@ if (!g_bTrimHooks)
|
||||
CMD_OPEN,
|
||||
CMD_OPEN_ALL,
|
||||
CMD_EXPLORER,
|
||||
CMD_OPEN_PINNED,
|
||||
};
|
||||
|
||||
// right-click on the start button - open the context menu (Settings, Help, Exit)
|
||||
@@ -3876,6 +3877,8 @@ if (!g_bTrimHooks)
|
||||
AppendMenu(menu,MF_STRING,CMD_OPEN,FindTranslation(L"Menu.Open",L"&Open"));
|
||||
if (!SHRestricted(REST_NOCOMMONGROUPS))
|
||||
AppendMenu(menu,MF_STRING,CMD_OPEN_ALL,FindTranslation(L"Menu.OpenAll",L"O&pen All Users"));
|
||||
if (GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED)
|
||||
AppendMenu(menu,MF_STRING,CMD_OPEN_PINNED,FindTranslation(L"Menu.OpenPinned",L"O&pen Pinned"));
|
||||
AppendMenu(menu,MF_SEPARATOR,0,0);
|
||||
}
|
||||
if (GetSettingBool(L"EnableSettings"))
|
||||
@@ -3922,6 +3925,16 @@ if (!g_bTrimHooks)
|
||||
if (SUCCEEDED(ShGetKnownFolderPath((res==CMD_OPEN)?FOLDERID_StartMenu:FOLDERID_CommonStartMenu,&pPath)))
|
||||
ShellExecute(NULL,L"open",pPath,NULL,NULL,SW_SHOWNORMAL);
|
||||
}
|
||||
if (res==CMD_OPEN_PINNED) // open pinned folder
|
||||
{
|
||||
SHELLEXECUTEINFO execute={sizeof(execute)};
|
||||
CString path=GetSettingString(L"PinnedItemsPath");
|
||||
execute.lpVerb=L"open";
|
||||
execute.lpFile=path;
|
||||
execute.nShow=SW_SHOWNORMAL;
|
||||
execute.fMask=SEE_MASK_DOENVSUBST;
|
||||
ShellExecuteEx(&execute);
|
||||
}
|
||||
if (res==CMD_EXPLORER)
|
||||
{
|
||||
CString path=GetSettingString(L"ExplorerPath");
|
||||
|
||||
Reference in New Issue
Block a user