Skip to content

Commit 8031739

Browse files
thisismy-githubIbuprophen
authored andcommitted
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.
1 parent 27e5c2b commit 8031739

File tree

15 files changed

+99
-29
lines changed

15 files changed

+99
-29
lines changed

Src/ClassicExplorer/SettingsUI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ LRESULT CEditToolbarDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl,
380380
{
381381
wchar_t text[_MAX_PATH];
382382
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
383-
if (BrowseLinkHelper(m_hWnd,text))
383+
if (BrowseLinkHelper(m_hWnd,text,false))
384384
{
385385
SetDlgItemText(IDC_COMBOLINK,text);
386386
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));

Src/Lib/Settings.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ bool CSetting::IsEnabled( void ) const
125125
if (operation=='>' && pSetting->GetValue().intVal<=val)
126126
return false;
127127
}
128-
if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG) && pSetting->GetValue().vt==VT_BSTR)
128+
if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_DIRECTORY) && pSetting->GetValue().vt==VT_BSTR)
129129
{
130130
if (operation=='~' && *pSetting->GetValue().bstrVal==0)
131131
return false;
@@ -202,7 +202,7 @@ bool CSetting::ReadValue( CRegKey &regKey, const wchar_t *valName )
202202
}
203203

204204
// string
205-
if (type>=CSetting::TYPE_STRING && type<CSetting::TYPE_MULTISTRING)
205+
if (type>=CSetting::TYPE_STRING && type!=CSetting::TYPE_MULTISTRING)
206206
{
207207
ULONG len;
208208
if (regKey.QueryStringValue(valName,NULL,&len)==ERROR_SUCCESS)
@@ -2221,7 +2221,7 @@ bool GetSettingBool( const CSetting &setting )
22212221

22222222
CString GetSettingString( const CSetting &setting )
22232223
{
2224-
Assert(setting.type==CSetting::TYPE_STRING);
2224+
Assert(setting.type==CSetting::TYPE_STRING || setting.type==CSetting::TYPE_DIRECTORY);
22252225
if (setting.value.vt!=VT_BSTR)
22262226
return CString();
22272227
return setting.value.bstrVal;
@@ -2722,7 +2722,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
27222722
{
27232723
fprintf_s(fAdmx,"\t\t\t\t<decimal id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
27242724
}
2725-
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
2725+
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
27262726
{
27272727
fprintf_s(fAdmx,"\t\t\t\t<text id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
27282728
}
@@ -2782,7 +2782,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
27822782
{
27832783
fprintf_s(fAdml,"\t\t\t\t<decimalTextBox refId=\"Value\" spin=\"false\">%s</decimalTextBox>\r\n",(const char*)name);
27842784
}
2785-
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
2785+
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
27862786
{
27872787
fprintf_s(fAdml,"\t\t\t\t<textBox refId=\"Value\"><label>%s</label></textBox>\r\n",(const char*)name);
27882788
}

Src/Lib/Settings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ struct CSetting
3232
TYPE_SOUND,
3333
TYPE_FONT,
3434
TYPE_MULTISTRING,
35+
TYPE_DIRECTORY,
3536
};
3637

3738
enum

Src/Lib/SettingsUIHelper.cpp

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@ bool BrowseCommandHelper( HWND parent, wchar_t *text )
12161216
return false;
12171217
}
12181218

1219-
bool BrowseLinkHelper( HWND parent, wchar_t *text )
1219+
bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly )
12201220
{
12211221
DoEnvironmentSubst(text,_MAX_PATH);
12221222

@@ -1227,16 +1227,22 @@ bool BrowseLinkHelper( HWND parent, wchar_t *text )
12271227
if (!pCustomize)
12281228
return false;
12291229

1230-
pDialog->SetTitle(LoadStringEx(IDS_PICK_LINK_TITLE));
1231-
pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE));
1232-
wchar_t button[256];
1233-
Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER));
1234-
pCustomize->AddPushButton(101,button);
1230+
pDialog->SetTitle(LoadStringEx(bFoldersOnly?IDS_PICK_LINK_FOLDER:IDS_PICK_LINK_TITLE));
1231+
if (!bFoldersOnly) // add separate buttons for selecting files/folders to the dialog
1232+
{
1233+
pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE));
1234+
wchar_t button[256];
1235+
Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER));
1236+
pCustomize->AddPushButton(101,button);
1237+
}
12351238

12361239
CBrowseLinkEvents events;
12371240
DWORD cookie;
12381241
pDialog->Advise(&events,&cookie);
1239-
pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS);
1242+
if (bFoldersOnly) // set FOS_PICKFOLDERS option to use dialog in folder-only mode
1243+
pDialog->SetOptions(FOS_PICKFOLDERS|FOS_ALLNONSTORAGEITEMS|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE);
1244+
else
1245+
pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS);
12401246
{
12411247
const wchar_t *c=wcschr(text,'|');
12421248
if (c)
@@ -2274,6 +2280,7 @@ class CTreeSettingsDlg: public CResizeableDlg<CTreeSettingsDlg>
22742280
EDIT_HOTKEY_ANY,
22752281
EDIT_COLOR,
22762282
EDIT_FONT,
2283+
EDIT_DIRECTORY,
22772284
};
22782285

22792286
BEGIN_MSG_MAP( CTreeSettingsDlg )
@@ -2717,6 +2724,29 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO
27172724
m_EditBox.SetFocus();
27182725
m_bIgnoreFocus=false;
27192726
}
2727+
else if (m_EditMode==EDIT_DIRECTORY)
2728+
{
2729+
m_bIgnoreFocus=true;
2730+
CString str;
2731+
m_EditBox.GetWindowText(str);
2732+
str.TrimLeft(); str.TrimRight();
2733+
wchar_t text[1024];
2734+
DWORD dwAttrs=GetFileAttributes(str); // ensure directory exists before passing it to dialog
2735+
if (dwAttrs!=INVALID_FILE_ATTRIBUTES && dwAttrs&FILE_ATTRIBUTE_DIRECTORY)
2736+
{
2737+
Strcpy(text,_countof(text),str);
2738+
DoEnvironmentSubst(text,_countof(text));
2739+
}
2740+
else
2741+
text[0]=0;
2742+
Strcpy(text,_countof(text),str);
2743+
DoEnvironmentSubst(text,_countof(text));
2744+
if (BrowseLinkHelper(m_hWnd,text,true))
2745+
m_EditBox.SetWindowText(text);
2746+
SendMessage(WM_NEXTDLGCTL,(LPARAM)m_EditBox.m_hWnd,TRUE);
2747+
m_EditBox.SetFocus();
2748+
m_bIgnoreFocus=false;
2749+
}
27202750
return 0;
27212751
}
27222752

@@ -3052,6 +3082,20 @@ void CTreeSettingsDlg::ApplyEditBox( void )
30523082
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30533083
}
30543084
}
3085+
else if (pSetting->type==CSetting::TYPE_DIRECTORY)
3086+
{
3087+
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
3088+
{
3089+
if (str.IsEmpty()) // empty directory strings cause unexpected behavior, so we reset to avoid this
3090+
pSetting->value=pSetting->defValue;
3091+
else // otherwise we are very lenient about what users can input as a path
3092+
pSetting->value=CComVariant(str);
3093+
if (pSetting->value==pSetting->defValue)
3094+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3095+
else
3096+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3097+
}
3098+
}
30553099
else
30563100
{
30573101
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
@@ -3095,7 +3139,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
30953139
val=valVar.intVal;
30963140
Sprintf(text,_countof(text),L"%d",val);
30973141
}
3098-
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
3142+
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
30993143
{
31003144
if (valVar.vt==VT_BSTR)
31013145
Strcpy(text,_countof(text),valVar.bstrVal);
@@ -3111,8 +3155,10 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
31113155
mode=EDIT_BITMAP_JPG;
31123156
else if (pSetting->type==CSetting::TYPE_SOUND)
31133157
mode=EDIT_SOUND;
3114-
else
3158+
else if (pSetting->type==CSetting::TYPE_FONT)
31153159
mode=EDIT_FONT;
3160+
else
3161+
mode=EDIT_DIRECTORY;
31163162
}
31173163
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
31183164
{
@@ -3152,7 +3198,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
31523198
m_pEditSetting=pSetting;
31533199
}
31543200

3155-
if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR)
3201+
if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR || mode==EDIT_DIRECTORY)
31563202
{
31573203
RECT rc2=rc;
31583204
int width=(rc2.bottom-rc2.top)*3/2;
@@ -3210,14 +3256,15 @@ void CTreeSettingsDlg::UpdateEditPosition( void )
32103256
DeleteDC(hdc);
32113257
DWORD margins=(DWORD)m_EditBox.SendMessage(EM_GETMARGINS);
32123258
size.cx+=HIWORD(margins)+LOWORD(margins)+12;
3213-
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR)
3259+
// adjust size and position of edit boxes for settings that use browse/play buttons
3260+
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR || m_EditMode==EDIT_DIRECTORY)
32143261
size.cx+=width;
32153262
if (m_EditMode==EDIT_SOUND)
32163263
size.cx+=width*2;
32173264
if (size.cx<w)
32183265
rc.right=rc.left+size.cx;
32193266

3220-
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_SOUND || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR)
3267+
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_SOUND || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR || m_EditMode==EDIT_DIRECTORY)
32213268
{
32223269
RECT rc2=rc;
32233270
rc2.left=rc2.right-width;

Src/Lib/SettingsUIHelper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,5 +385,5 @@ const wchar_t *GetSettingsRegPath( void );
385385
extern const GUID FOLDERID_DesktopRoot;
386386

387387
bool BrowseCommandHelper( HWND parent, wchar_t *text );
388-
bool BrowseLinkHelper( HWND parent, wchar_t *text );
388+
bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly );
389389
bool BrowseIconHelper( HWND parent, wchar_t *text );

Src/StartMenu/StartMenuDLL/ItemManager.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ void CItemManager::Init( void )
589589

590590
m_RootGames=L"::{ED228FDF-9EA8-4870-83B1-96B02CFE0D52}\\";
591591
wchar_t text[_MAX_PATH];
592-
Strcpy(text,_countof(text),START_MENU_PINNED_ROOT L"\\");
592+
Sprintf(text,_countof(text),L"%s\\",GetSettingString(L"PinnedItemsPath"));
593593
DoEnvironmentSubst(text,_countof(text));
594594
m_RootStartMenu3=text;
595595
StringUpper(m_RootStartMenu3);
@@ -2867,7 +2867,8 @@ void CItemManager::PreloadItemsThread( void )
28672867
else if (g_CacheFolders[i].folder==FOLDERID_ClassicPinned)
28682868
{
28692869
if (GetSettingInt(L"PinnedPrograms")!=PINNED_PROGRAMS_PINNED) continue;
2870-
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
2870+
wchar_t path[_MAX_PATH];
2871+
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
28712872
DoEnvironmentSubst(path,_countof(path));
28722873
if (FAILED(SHParseDisplayName(path,NULL,&pidl,0,NULL)) || !pidl) continue;
28732874
if (FAILED(SHCreateItemFromIDList(pidl,IID_IShellItem,(void**)&pFolder)) || !pFolder) continue;

Src/StartMenu/StartMenuDLL/ItemManager.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,6 @@ STDAPI ShGetKnownFolderItem(REFKNOWNFOLDERID rfid, IShellItem **ppItem );
470470
HBITMAP ColorizeMonochromeImage(HBITMAP bitmap, DWORD color);
471471

472472
#define TASKBAR_PINNED_ROOT L"%APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"
473-
#define START_MENU_PINNED_ROOT L"%APPDATA%\\OpenShell\\Pinned"
474473
#define STARTSCREEN_COMMAND L"startscreen.lnk"
475474
#define USERASSIST_LINKS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\\Count"
476475
#define USERASSIST_APPIDS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\\Count"

Src/StartMenu/StartMenuDLL/MenuContainer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8068,7 +8068,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
80688068
}
80698069
else
80708070
{
8071-
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
8071+
wchar_t path[_MAX_PATH];
8072+
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
80728073
DoEnvironmentSubst(path,_countof(path));
80738074
SHCreateDirectory(NULL,path);
80748075
s_PinFolder=path;
@@ -8080,7 +8081,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
80808081
{
80818082
bool bPinned=GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED;
80828083
bool bShortcut=GetSettingBool(L"StartScreenShortcut");
8083-
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT L"\\" STARTSCREEN_COMMAND;
8084+
wchar_t path[_MAX_PATH];
8085+
Sprintf(path,_countof(path),L"%s\\%s",GetSettingString(L"PinnedItemsPath"),STARTSCREEN_COMMAND);
80848086
DoEnvironmentSubst(path,_countof(path));
80858087
if (bPinned)
80868088
{

Src/StartMenu/StartMenuDLL/SearchManager.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,8 @@ void CSearchManager::SearchThread( void )
639639
// pinned folder
640640
if (searchRequest.bPinnedFolder)
641641
{
642-
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
642+
wchar_t path[_MAX_PATH];
643+
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
643644
DoEnvironmentSubst(path,_MAX_PATH);
644645
CComPtr<IShellItem> pFolder;
645646
if (SUCCEEDED(SHCreateItemFromParsingName(path,NULL,IID_IShellItem,(void**)&pFolder)))

Src/StartMenu/StartMenuDLL/SettingsUI.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ LRESULT CEditMenuDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO
17421742
{
17431743
wchar_t text[_MAX_PATH];
17441744
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
1745-
if (BrowseLinkHelper(m_hWnd,text))
1745+
if (BrowseLinkHelper(m_hWnd,text,false))
17461746
{
17471747
SetDlgItemText(IDC_COMBOLINK,text);
17481748
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
@@ -2437,7 +2437,7 @@ LRESULT CEditMenuDlg7::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, B
24372437
{
24382438
wchar_t text[_MAX_PATH];
24392439
GetDlgItemText(IDC_EDITLINK2,text,_countof(text));
2440-
if (BrowseLinkHelper(m_hWnd,text))
2440+
if (BrowseLinkHelper(m_hWnd,text,false))
24412441
{
24422442
SetDlgItemText(IDC_EDITLINK2,text);
24432443
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_EDITLINK2,EN_KILLFOCUS));
@@ -4280,6 +4280,7 @@ CSetting g_Settings[]={
42804280
{L"PinnedPrograms",CSetting::TYPE_INT,IDS_PINNED_PROGRAMS,IDS_PINNED_PROGRAMS_TIP,PINNED_PROGRAMS_PINNED},
42814281
{L"FastItems",CSetting::TYPE_RADIO,IDS_FAST_ITEMS,IDS_FAST_ITEMS_TIP},
42824282
{L"PinnedItems",CSetting::TYPE_RADIO,IDS_PINNED_ITEMS,IDS_PINNED_ITEMS_TIP},
4283+
{L"PinnedItemsPath",CSetting::TYPE_DIRECTORY,IDS_PINNED_PATH,IDS_PINNED_PATH_TIP,L"%APPDATA%\\OpenShell\\Pinned",0,L"PinnedPrograms=1",L"PinnedItems"},
42834284
{L"RecentPrograms",CSetting::TYPE_INT,IDS_RECENT_PROGRAMS,IDS_RECENT_PROGRAMS_TIP,RECENT_PROGRAMS_RECENT,CSetting::FLAG_BASIC},
42844285
{L"None",CSetting::TYPE_RADIO,IDS_NO_RECENT,IDS_NO_RECENT_TIP},
42854286
{L"Recent",CSetting::TYPE_RADIO,IDS_SHOW_RECENT,IDS_SHOW_RECENT_TIP},

0 commit comments

Comments
 (0)