Skip to content

Commit 7ae9386

Browse files
Merge ebc9e05 into 4b26882
2 parents 4b26882 + ebc9e05 commit 7ae9386

22 files changed

+417
-100
lines changed

Src/ClassicExplorer/SettingsUI.cpp

+1-1
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/FileHelper.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,17 @@ bool IsFakeFolder( const wchar_t *fname )
6060
}
6161
return false;
6262
}
63+
64+
bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src )
65+
{
66+
Sprintf(dst,len,L"%s\\target.lnk",src);
67+
if (GetFileAttributes(dst)!=INVALID_FILE_ATTRIBUTES)
68+
{
69+
wchar_t path[_MAX_PATH];
70+
Sprintf(path,_countof(path),L"%s\\desktop.ini",src);
71+
DWORD attrib=GetFileAttributes(path);
72+
if (attrib!=INVALID_FILE_ATTRIBUTES && (attrib&FILE_ATTRIBUTE_SYSTEM))
73+
return true;
74+
}
75+
return false;
76+
}

Src/Lib/FileHelper.h

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
bool CreateFakeFolder( const wchar_t *source, const wchar_t *fname );
88
void DeleteFakeFolder( const wchar_t *fname );
99
bool IsFakeFolder( const wchar_t *fname );
10+
bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src );

Src/Lib/Settings.cpp

+23-10
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)
@@ -793,7 +793,10 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
793793
}
794794
string.push_back(0);
795795
pSetting->value=CComVariant(&string[0]);
796-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
796+
if (pSetting->value==pSetting->defValue)
797+
pSetting->flags|=CSetting::FLAG_DEFAULT;
798+
else
799+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
797800
}
798801
else
799802
{
@@ -806,7 +809,10 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
806809
if (pSetting->type>=CSetting::TYPE_STRING)
807810
{
808811
pSetting->value=value;
809-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
812+
if (pSetting->value==pSetting->defValue)
813+
pSetting->flags|=CSetting::FLAG_DEFAULT;
814+
else
815+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
810816
}
811817
else if (pSetting->type==CSetting::TYPE_BOOL || (pSetting->type==CSetting::TYPE_INT && pSetting[1].type!=CSetting::TYPE_RADIO) || pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY || pSetting->type==CSetting::TYPE_COLOR)
812818
{
@@ -815,7 +821,10 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
815821
pSetting->value=CComVariant(val?1:0);
816822
else
817823
pSetting->value=CComVariant(val);
818-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
824+
if (pSetting->value==pSetting->defValue)
825+
pSetting->flags|=CSetting::FLAG_DEFAULT;
826+
else
827+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
819828
}
820829
else if (pSetting->type==CSetting::TYPE_INT && pSetting[1].type==CSetting::TYPE_RADIO)
821830
{
@@ -825,7 +834,10 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
825834
if (_wcsicmp(pRadio->name,value.bstrVal)==0)
826835
{
827836
pSetting->value=CComVariant(val);
828-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
837+
if (pSetting->value==pSetting->defValue)
838+
pSetting->flags|=CSetting::FLAG_DEFAULT;
839+
else
840+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
829841
break;
830842
}
831843
}
@@ -1701,6 +1713,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
17011713
ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR;
17021714
if (GetOpenFileName(&ofn))
17031715
{
1716+
SetCurTab(m_Index,true); // reload tab once to force-close any active edit boxes
17041717
CString error=g_SettingsManager.LoadSettingsXml(path);
17051718
if (!error.IsEmpty())
17061719
{
@@ -1710,7 +1723,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
17101723
::MessageBox(m_hWnd,text,LoadStringEx(IDS_ERROR_TITLE),MB_OK|MB_ICONERROR);
17111724
}
17121725
SetSettingsDirty();
1713-
SetCurTab(m_Index,true);
1726+
SetCurTab(m_Index,true); // reload tab again to show the new settings
17141727
}
17151728
}
17161729
if (res==3)
@@ -2208,7 +2221,7 @@ bool GetSettingBool( const CSetting &setting )
22082221

22092222
CString GetSettingString( const CSetting &setting )
22102223
{
2211-
Assert(setting.type==CSetting::TYPE_STRING);
2224+
Assert(setting.type==CSetting::TYPE_STRING || setting.type==CSetting::TYPE_DIRECTORY);
22122225
if (setting.value.vt!=VT_BSTR)
22132226
return CString();
22142227
return setting.value.bstrVal;
@@ -2709,7 +2722,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
27092722
{
27102723
fprintf_s(fAdmx,"\t\t\t\t<decimal id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
27112724
}
2712-
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)
27132726
{
27142727
fprintf_s(fAdmx,"\t\t\t\t<text id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
27152728
}
@@ -2769,7 +2782,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
27692782
{
27702783
fprintf_s(fAdml,"\t\t\t\t<decimalTextBox refId=\"Value\" spin=\"false\">%s</decimalTextBox>\r\n",(const char*)name);
27712784
}
2772-
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)
27732786
{
27742787
fprintf_s(fAdml,"\t\t\t\t<textBox refId=\"Value\"><label>%s</label></textBox>\r\n",(const char*)name);
27752788
}

Src/Lib/Settings.h

+1
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

+91-20
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)
@@ -1822,7 +1828,10 @@ void CCustomTreeDlg::SerializeData( void )
18221828
if ((m_pSetting->flags&CSetting::FLAG_DEFAULT) || wcscmp(strNew,strOld)!=0)
18231829
SetSettingsDirty();
18241830
m_pSetting->value=CComVariant(strNew);
1825-
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
1831+
if (m_pSetting->value==m_pSetting->defValue)
1832+
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
1833+
else
1834+
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
18261835
ItemsChanged();
18271836
}
18281837

@@ -2271,6 +2280,7 @@ class CTreeSettingsDlg: public CResizeableDlg<CTreeSettingsDlg>
22712280
EDIT_HOTKEY_ANY,
22722281
EDIT_COLOR,
22732282
EDIT_FONT,
2283+
EDIT_DIRECTORY,
22742284
};
22752285

22762286
BEGIN_MSG_MAP( CTreeSettingsDlg )
@@ -2714,6 +2724,29 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO
27142724
m_EditBox.SetFocus();
27152725
m_bIgnoreFocus=false;
27162726
}
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+
}
27172750
return 0;
27182751
}
27192752

@@ -2778,7 +2811,10 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
27782811
{
27792812
CSettingsLockWrite lock;
27802813
pSetting->value=CComVariant(state?0:1);
2781-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
2814+
if (pSetting->value==pSetting->defValue)
2815+
pSetting->flags|=CSetting::FLAG_DEFAULT;
2816+
else
2817+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
27822818
SetSettingsDirty();
27832819
}
27842820
if (pSetting->flags&CSetting::FLAG_CALLBACK)
@@ -2802,7 +2838,10 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
28022838
{
28032839
CSettingsLockWrite lock;
28042840
pTarget->value=CComVariant(val);
2805-
pTarget->flags&=~CSetting::FLAG_DEFAULT;
2841+
if (pTarget->value==pTarget->defValue)
2842+
pTarget->flags|=CSetting::FLAG_DEFAULT;
2843+
else
2844+
pTarget->flags&=~CSetting::FLAG_DEFAULT;
28062845
SetSettingsDirty();
28072846
}
28082847
if (pParent->flags&CSetting::FLAG_CALLBACK)
@@ -3013,7 +3052,10 @@ void CTreeSettingsDlg::ApplyEditBox( void )
30133052
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
30143053
{
30153054
pSetting->value=CComVariant(val);
3016-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3055+
if (pSetting->value==pSetting->defValue)
3056+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3057+
else
3058+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30173059
}
30183060
}
30193061
else if (pSetting->type==CSetting::TYPE_COLOR)
@@ -3023,23 +3065,46 @@ void CTreeSettingsDlg::ApplyEditBox( void )
30233065
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
30243066
{
30253067
pSetting->value=CComVariant(val);
3026-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3068+
if (pSetting->value==pSetting->defValue)
3069+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3070+
else
3071+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30273072
}
30283073
}
30293074
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
30303075
{
30313076
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=g_HotKey)
30323077
{
30333078
pSetting->value=CComVariant(g_HotKey);
3034-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3079+
if (pSetting->value==pSetting->defValue)
3080+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3081+
else
3082+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3083+
}
3084+
}
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;
30353097
}
30363098
}
30373099
else
30383100
{
30393101
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
30403102
{
30413103
pSetting->value=CComVariant(str);
3042-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3104+
if (pSetting->value==pSetting->defValue)
3105+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3106+
else
3107+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30433108
}
30443109
}
30453110
SetSettingsDirty();
@@ -3074,7 +3139,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
30743139
val=valVar.intVal;
30753140
Sprintf(text,_countof(text),L"%d",val);
30763141
}
3077-
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)
30783143
{
30793144
if (valVar.vt==VT_BSTR)
30803145
Strcpy(text,_countof(text),valVar.bstrVal);
@@ -3090,8 +3155,10 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
30903155
mode=EDIT_BITMAP_JPG;
30913156
else if (pSetting->type==CSetting::TYPE_SOUND)
30923157
mode=EDIT_SOUND;
3093-
else
3158+
else if (pSetting->type==CSetting::TYPE_FONT)
30943159
mode=EDIT_FONT;
3160+
else
3161+
mode=EDIT_DIRECTORY;
30953162
}
30963163
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
30973164
{
@@ -3131,7 +3198,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
31313198
m_pEditSetting=pSetting;
31323199
}
31333200

3134-
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)
31353202
{
31363203
RECT rc2=rc;
31373204
int width=(rc2.bottom-rc2.top)*3/2;
@@ -3189,14 +3256,15 @@ void CTreeSettingsDlg::UpdateEditPosition( void )
31893256
DeleteDC(hdc);
31903257
DWORD margins=(DWORD)m_EditBox.SendMessage(EM_GETMARGINS);
31913258
size.cx+=HIWORD(margins)+LOWORD(margins)+12;
3192-
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)
31933261
size.cx+=width;
31943262
if (m_EditMode==EDIT_SOUND)
31953263
size.cx+=width*2;
31963264
if (size.cx<w)
31973265
rc.right=rc.left+size.cx;
31983266

3199-
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)
32003268
{
32013269
RECT rc2=rc;
32023270
rc2.left=rc2.right-width;
@@ -3376,6 +3444,9 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified )
33763444
bool bDefault=pSetting->IsDefault();
33773445
const CComVariant &valVar=pSetting->GetValue();
33783446

3447+
// check if modified items should be bold
3448+
bool bBoldSettings=GetSettingBool(L"BoldSettings");
3449+
33793450
// calculate text
33803451
if (pSetting!=m_pEditSetting)
33813452
{
@@ -3458,7 +3529,7 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified )
34583529
DeleteDC(hdc);
34593530
DeleteDC(hdcMask);
34603531
}
3461-
int state=bDefault?0:TVIS_BOLD;
3532+
int state=bDefault||!bBoldSettings?0:TVIS_BOLD; // check if item should be highlighted in bold
34623533
if (!bEnabled)
34633534
{
34643535
if (pSetting->type!=CSetting::TYPE_COLOR) image|=SETTING_STATE_DISABLED;

Src/Lib/SettingsUIHelper.h

+1-1
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 );

0 commit comments

Comments
 (0)