Skip to content

Commit 998d83c

Browse files
thisismy-githubIbuprophen
authored andcommitted
Auto-detect when setting is back to default value
Intercepts *most* instances of FLAG_DEFAULT getting set, including when XML files are loaded and when Open-Shell starts, adding if-statements to those spots to check if a new value is actually different from the setting's default value. Ensures more consistency behind the scenes and gets rid of inaccurate bold highlights.
1 parent 0cb43dd commit 998d83c

File tree

3 files changed

+96
-24
lines changed

3 files changed

+96
-24
lines changed

Src/Lib/Settings.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

Src/Lib/SettingsUIHelper.cpp

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1822,7 +1822,10 @@ void CCustomTreeDlg::SerializeData( void )
18221822
if ((m_pSetting->flags&CSetting::FLAG_DEFAULT) || wcscmp(strNew,strOld)!=0)
18231823
SetSettingsDirty();
18241824
m_pSetting->value=CComVariant(strNew);
1825-
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
1825+
if (m_pSetting->value==m_pSetting->defValue)
1826+
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
1827+
else
1828+
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
18261829
ItemsChanged();
18271830
}
18281831

@@ -2778,7 +2781,10 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
27782781
{
27792782
CSettingsLockWrite lock;
27802783
pSetting->value=CComVariant(state?0:1);
2781-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
2784+
if (pSetting->value==pSetting->defValue)
2785+
pSetting->flags|=CSetting::FLAG_DEFAULT;
2786+
else
2787+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
27822788
SetSettingsDirty();
27832789
}
27842790
if (pSetting->flags&CSetting::FLAG_CALLBACK)
@@ -2802,7 +2808,10 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
28022808
{
28032809
CSettingsLockWrite lock;
28042810
pTarget->value=CComVariant(val);
2805-
pTarget->flags&=~CSetting::FLAG_DEFAULT;
2811+
if (pTarget->value==pTarget->defValue)
2812+
pTarget->flags|=CSetting::FLAG_DEFAULT;
2813+
else
2814+
pTarget->flags&=~CSetting::FLAG_DEFAULT;
28062815
SetSettingsDirty();
28072816
}
28082817
if (pParent->flags&CSetting::FLAG_CALLBACK)
@@ -3013,7 +3022,10 @@ void CTreeSettingsDlg::ApplyEditBox( void )
30133022
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
30143023
{
30153024
pSetting->value=CComVariant(val);
3016-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3025+
if (pSetting->value==pSetting->defValue)
3026+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3027+
else
3028+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30173029
}
30183030
}
30193031
else if (pSetting->type==CSetting::TYPE_COLOR)
@@ -3023,23 +3035,32 @@ void CTreeSettingsDlg::ApplyEditBox( void )
30233035
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
30243036
{
30253037
pSetting->value=CComVariant(val);
3026-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3038+
if (pSetting->value==pSetting->defValue)
3039+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3040+
else
3041+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30273042
}
30283043
}
30293044
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
30303045
{
30313046
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=g_HotKey)
30323047
{
30333048
pSetting->value=CComVariant(g_HotKey);
3034-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3049+
if (pSetting->value==pSetting->defValue)
3050+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3051+
else
3052+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30353053
}
30363054
}
30373055
else
30383056
{
30393057
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
30403058
{
30413059
pSetting->value=CComVariant(str);
3042-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3060+
if (pSetting->value==pSetting->defValue)
3061+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3062+
else
3063+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
30433064
}
30443065
}
30453066
SetSettingsDirty();

Src/StartMenu/StartMenuDLL/SettingsUI.cpp

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3616,7 +3616,10 @@ void CCustomMenuDlg7::SerializeData( void )
36163616
stringBuilder.push_back(0);
36173617
CSettingsLockWrite lock;
36183618
m_pSetting->value=CComVariant(&stringBuilder[0]);
3619-
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
3619+
if (m_pSetting->value==m_pSetting->defValue)
3620+
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
3621+
else
3622+
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
36203623
SetSettingsDirty();
36213624
}
36223625

@@ -3843,7 +3846,10 @@ LRESULT CMenuStyleDlg::OnClick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
38433846
CheckDlgButton(IDC_RADIO_CLASSIC,pSetting->value.intVal==MENU_CLASSIC1?BST_CHECKED:BST_UNCHECKED);
38443847
CheckDlgButton(IDC_RADIO_TWO_COLUMNS,pSetting->value.intVal==MENU_CLASSIC2?BST_CHECKED:BST_UNCHECKED);
38453848
CheckDlgButton(IDC_RADIO_WIN7,pSetting->value.intVal==MENU_WIN7?BST_CHECKED:BST_UNCHECKED);
3846-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3849+
if (pSetting->value==pSetting->defValue)
3850+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3851+
else
3852+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
38473853
SetSettingsDirty();
38483854

38493855
SetSettingsStyle(styleFlag,CSetting::FLAG_MENU_MASK);
@@ -3861,7 +3867,10 @@ LRESULT CMenuStyleDlg::OnEnabled( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL
38613867
CSettingsLockWrite lock;
38623868
CSetting *pSetting=FindSetting(L"EnableStartButton");
38633869
pSetting->value=CComVariant(bEnabled);
3864-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3870+
if (pSetting->value==pSetting->defValue)
3871+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3872+
else
3873+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
38653874
SetSettingsDirty();
38663875
}
38673876
Update(false);
@@ -3900,7 +3909,10 @@ LRESULT CMenuStyleDlg::OnButtonStyle( WORD wNotifyCode, WORD wID, HWND hWndCtl,
39003909
CSettingsLockWrite lock;
39013910
CSetting *pSetting=FindSetting(L"StartButtonType");
39023911
pSetting->value=CComVariant(style);
3903-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3912+
if (pSetting->value==pSetting->defValue)
3913+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3914+
else
3915+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
39043916
SetSettingsDirty();
39053917
}
39063918
Update(false);
@@ -3924,7 +3936,10 @@ LRESULT CMenuStyleDlg::OnPick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& b
39243936
CSettingsLockWrite lock;
39253937
CSetting *pSetting=FindSetting(L"StartButtonPath");
39263938
pSetting->value=CComVariant(path);
3927-
pSetting->flags&=~CSetting::FLAG_DEFAULT;
3939+
if (pSetting->value==pSetting->defValue)
3940+
pSetting->flags|=CSetting::FLAG_DEFAULT;
3941+
else
3942+
pSetting->flags&=~CSetting::FLAG_DEFAULT;
39283943
SetSettingsDirty();
39293944
}
39303945
Update(true);
@@ -4545,15 +4560,21 @@ void UpgradeSettings( bool bShared )
45454560
items.Replace(L"Command=recent_items\n",L"Command=recent_programs\n");
45464561
items.Replace(L"Command=control_panel_categories\n",L"Command=control_panel\n");
45474562
pSettingItems->value=items;
4548-
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
4563+
if (pSettingItems->value==pSettingItems->defValue)
4564+
pSettingItems->flags|=CSetting::FLAG_DEFAULT;
4565+
else
4566+
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
45494567
}
45504568

45514569
// set initial menu style
45524570
CSetting *pSettingStyle=FindSetting(L"MenuStyle");
45534571
if (!pSettingStyle->IsLocked())
45544572
{
45554573
pSettingStyle->value=(bTwoColumns?1:0);
4556-
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
4574+
if (pSettingStyle->value==pSettingStyle->defValue)
4575+
pSettingStyle->flags|=CSetting::FLAG_DEFAULT;
4576+
else
4577+
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
45574578
SetSettingsStyle(bTwoColumns?CSetting::FLAG_MENU_CLASSIC2:CSetting::FLAG_MENU_CLASSIC1,CSetting::FLAG_MENU_MASK);
45584579
}
45594580

@@ -4565,7 +4586,10 @@ void UpgradeSettings( bool bShared )
45654586
if (!pSetting->IsDefault())
45664587
{
45674588
pSettingSkin->value=pSetting->value;
4568-
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
4589+
if (pSettingSkin->value==pSettingSkin->defValue)
4590+
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
4591+
else
4592+
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
45694593
}
45704594
}
45714595
CSetting *pSettingOpt=FindSetting(bTwoColumns?L"SkinOptionsC2":L"SkinOptionsC1");
@@ -4575,7 +4599,10 @@ void UpgradeSettings( bool bShared )
45754599
if (!pSetting->IsDefault())
45764600
{
45774601
pSettingOpt->value=pSetting->value;
4578-
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
4602+
if (pSettingOpt->value==pSettingOpt->defValue)
4603+
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
4604+
else
4605+
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
45794606
}
45804607
}
45814608
CSetting *pSettingVar=FindSetting(bTwoColumns?L"SkinVariationC2":L"SkinVariationC1");
@@ -4585,7 +4612,10 @@ void UpgradeSettings( bool bShared )
45854612
if (!pSetting->IsDefault())
45864613
{
45874614
pSettingVar->value=pSetting->value;
4588-
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
4615+
if (pSettingVar->value==pSettingVar->defValue)
4616+
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
4617+
else
4618+
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
45894619
}
45904620
}
45914621

@@ -4597,7 +4627,10 @@ void UpgradeSettings( bool bShared )
45974627
if (!pSetting->IsDefault())
45984628
{
45994629
pSettingSkin->value=pSetting->value;
4600-
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
4630+
if (pSettingSkin->value==pSettingSkin->defValue)
4631+
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
4632+
else
4633+
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
46014634
}
46024635
}
46034636
pSettingOpt=FindSetting(L"SkinOptionsA");
@@ -4607,7 +4640,10 @@ void UpgradeSettings( bool bShared )
46074640
if (!pSetting->IsDefault())
46084641
{
46094642
pSettingOpt->value=pSetting->value;
4610-
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
4643+
if (pSettingOpt->value==pSettingOpt->defValue)
4644+
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
4645+
else
4646+
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
46114647
}
46124648
}
46134649
pSettingVar=FindSetting(L"SkinVariationA");
@@ -4617,7 +4653,10 @@ void UpgradeSettings( bool bShared )
46174653
if (!pSetting->IsDefault())
46184654
{
46194655
pSettingVar->value=pSetting->value;
4620-
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
4656+
if (pSettingVar->value==pSettingVar->defValue)
4657+
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
4658+
else
4659+
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
46214660
}
46224661
}
46234662
}

0 commit comments

Comments
 (0)