5 Commits

Author SHA1 Message Date
ge0rdi
e6b33a70e4 Add -reloadsettings command line switch
It will force Open-Shell to reload settings from registry.

Fixes #1157.
2022-10-08 07:48:50 +02:00
ge0rdi
179a59ac1b Revert "Auto-detect when setting is back to default value"
This reverts commit 998d83c15c.

This change was wrong and it shouldn't get merged in first place.
See https://github.com/Open-Shell/Open-Shell-Menu/pull/829#issuecomment-907667829 for further explanation.

Fixes #1135.
2022-09-12 16:17:06 +02:00
ge0rdi
2a5ed14599 Fix 'Highlight modified settings' option tooltip 2022-09-12 16:17:06 +02:00
ge0rdi
1cc5d2eb53 Fix broken menu sorting
It was broken in bb26cec commit.

Fixes #1111
2022-09-09 17:07:29 +02:00
coddec
687e50914f Update appveyor.yml
Change secure,hashed auth token as suggested by @ge0rdi
2022-09-08 13:31:28 +10:00
9 changed files with 36 additions and 110 deletions

View File

@@ -793,10 +793,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
}
string.push_back(0);
pSetting->value=CComVariant(&string[0]);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
else
{
@@ -809,10 +806,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
if (pSetting->type>=CSetting::TYPE_STRING)
{
pSetting->value=value;
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
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)
{
@@ -821,10 +815,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
pSetting->value=CComVariant(val?1:0);
else
pSetting->value=CComVariant(val);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
else if (pSetting->type==CSetting::TYPE_INT && pSetting[1].type==CSetting::TYPE_RADIO)
{
@@ -834,10 +825,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
if (_wcsicmp(pRadio->name,value.bstrVal)==0)
{
pSetting->value=CComVariant(val);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
break;
}
}

View File

@@ -1828,10 +1828,7 @@ void CCustomTreeDlg::SerializeData( void )
if ((m_pSetting->flags&CSetting::FLAG_DEFAULT) || wcscmp(strNew,strOld)!=0)
SetSettingsDirty();
m_pSetting->value=CComVariant(strNew);
if (m_pSetting->value==m_pSetting->defValue)
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
else
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
ItemsChanged();
}
@@ -2811,10 +2808,7 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
{
CSettingsLockWrite lock;
pSetting->value=CComVariant(state?0:1);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
if (pSetting->flags&CSetting::FLAG_CALLBACK)
@@ -2838,10 +2832,7 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
{
CSettingsLockWrite lock;
pTarget->value=CComVariant(val);
if (pTarget->value==pTarget->defValue)
pTarget->flags|=CSetting::FLAG_DEFAULT;
else
pTarget->flags&=~CSetting::FLAG_DEFAULT;
pTarget->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
if (pParent->flags&CSetting::FLAG_CALLBACK)
@@ -3052,10 +3043,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
{
pSetting->value=CComVariant(val);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
}
else if (pSetting->type==CSetting::TYPE_COLOR)
@@ -3065,10 +3053,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
{
pSetting->value=CComVariant(val);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
}
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
@@ -3076,10 +3061,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=g_HotKey)
{
pSetting->value=CComVariant(g_HotKey);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
}
else if (pSetting->type==CSetting::TYPE_DIRECTORY)
@@ -3101,10 +3083,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
{
pSetting->value=CComVariant(str);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
}
}
SetSettingsDirty();

View File

@@ -561,6 +561,7 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
else if (wcsstr(lpstrCmdLine,L"-toggle")!=NULL) open=MSG_TOGGLE;
else if (wcsstr(lpstrCmdLine,L"-open")!=NULL) open=MSG_OPEN;
else if (wcsstr(lpstrCmdLine,L"-settings")!=NULL) open=MSG_SETTINGS;
else if (wcsstr(lpstrCmdLine,L"-reloadsettings")!=NULL) open=MSG_RELOADSETTINGS;
else if (wcsstr(lpstrCmdLine,L"-exit")!=NULL) open=MSG_EXIT;
{

View File

@@ -903,7 +903,7 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf
else if (i<before)
skip++;
}
SortMenuItem ins(L"",FNV_HASH0,false,false,false,folderIndex*2,0);
SortMenuItem ins(L"",FNV_HASH0,false,false,folderIndex*2,0);
items.insert(items.begin()+(before-skip),ins);
SaveItemOrder(items);
}

View File

@@ -861,8 +861,7 @@ void CMenuContainer::AddFirstFolder( IShellItem *pFolder, std::vector<MenuItem>
if (bLibrary) flags&=~SFGAO_STREAM;
item.bLink=(flags&SFGAO_LINK)!=0;
item.bFolderLink=(flags&SFGAO_FOLDER && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && item.bFolderLink);
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && (flags&SFGAO_FOLDER) && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
{
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
if (item.pItemInfo->IsMetroLink())

View File

@@ -453,7 +453,7 @@ private:
drawType=MenuSkin::COLUMN1_ITEM;
column=row=0;
memset(&itemRect,0,sizeof(itemRect));
bFolder=bLink=bFolderLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
bFolder=bLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
priority=0;
pItem1=pItem2=NULL;
mfuHash=0;
@@ -477,7 +477,6 @@ private:
RECT itemRect;
bool bFolder:1; // this is a folder - draw arrow
bool bLink:1; // this is a link (if a link to a folder is expanded it is always single-column)
bool bFolderLink:1; // this is a folder that is not explicitly expandable - used for sorting the list-of-links style
bool bPrograms:1; // this item is part of the Start Menu folder hierarchy
bool bAlignBottom:1; // two-column menu: this item is aligned to the bottom
bool bBreak:1; // two-column menu: this item starts the second column
@@ -513,8 +512,8 @@ private:
if (priority>item.priority) return false;
if (row<item.row) return true;
if (row>item.row) return false;
if (((bFolder || bFolderLink) && !bHasJumpList) && !((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return true;
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return false;
if ((bFolder && !bHasJumpList) && !(item.bFolder && !item.bHasJumpList)) return true;
if (!(bFolder && !bHasJumpList) && (item.bFolder && !item.bHasJumpList)) return false;
if (drive && !item.drive) return true;
if (!drive && item.drive) return false;
if (drive && item.drive) return drive<item.drive;
@@ -579,19 +578,18 @@ private:
CString name;
unsigned int nameHash;
bool bFolder;
bool bFolderLink;
bool bHasJumpList;
char priority;
char drive;
SortMenuItem( const CString &_name, unsigned _nameHash, bool _bFolder, bool _bFolderLink, bool _bHasJumpList, char _priority ,char _drive) { name=_name; nameHash=_nameHash; bFolder=_bFolder; bFolderLink=_bFolderLink; bHasJumpList=_bHasJumpList; priority=_priority; drive=_drive; }
SortMenuItem( const MenuItem &item ) { name=item.name; nameHash=item.nameHash; bFolder=item.bFolder; bFolderLink=item.bFolderLink; bHasJumpList=item.bHasJumpList; priority=item.priority; drive=item.drive; }
SortMenuItem( const CString &_name, unsigned _nameHash, bool _bFolder, bool _bHasJumpList, char _priority ,char _drive) { name=_name; nameHash=_nameHash; bFolder=_bFolder; bHasJumpList=_bHasJumpList; priority=_priority; drive=_drive; }
SortMenuItem( const MenuItem &item ) { name=item.name; nameHash=item.nameHash; bFolder=item.bFolder; bHasJumpList=item.bHasJumpList; priority=item.priority; drive=item.drive; }
bool operator<( const SortMenuItem &x ) const
{
if (priority<x.priority) return true;
if (priority>x.priority) return false;
if (((bFolder || bFolderLink) && !bHasJumpList) && !((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return true;
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return false;
if ((bFolder && !bHasJumpList) && !(x.bFolder && !x.bHasJumpList)) return true;
if (!(bFolder && !bHasJumpList) && (x.bFolder && !x.bHasJumpList)) return false;
if (drive && !x.drive) return true;
if (!drive && x.drive) return false;
if (drive && x.drive) return drive<x.drive;

View File

@@ -3624,10 +3624,7 @@ void CCustomMenuDlg7::SerializeData( void )
stringBuilder.push_back(0);
CSettingsLockWrite lock;
m_pSetting->value=CComVariant(&stringBuilder[0]);
if (m_pSetting->value==m_pSetting->defValue)
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
else
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
@@ -3854,10 +3851,7 @@ LRESULT CMenuStyleDlg::OnClick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
CheckDlgButton(IDC_RADIO_CLASSIC,pSetting->value.intVal==MENU_CLASSIC1?BST_CHECKED:BST_UNCHECKED);
CheckDlgButton(IDC_RADIO_TWO_COLUMNS,pSetting->value.intVal==MENU_CLASSIC2?BST_CHECKED:BST_UNCHECKED);
CheckDlgButton(IDC_RADIO_WIN7,pSetting->value.intVal==MENU_WIN7?BST_CHECKED:BST_UNCHECKED);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
SetSettingsStyle(styleFlag,CSetting::FLAG_MENU_MASK);
@@ -3875,10 +3869,7 @@ LRESULT CMenuStyleDlg::OnEnabled( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL
CSettingsLockWrite lock;
CSetting *pSetting=FindSetting(L"EnableStartButton");
pSetting->value=CComVariant(bEnabled);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
Update(false);
@@ -3917,10 +3908,7 @@ LRESULT CMenuStyleDlg::OnButtonStyle( WORD wNotifyCode, WORD wID, HWND hWndCtl,
CSettingsLockWrite lock;
CSetting *pSetting=FindSetting(L"StartButtonType");
pSetting->value=CComVariant(style);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
Update(false);
@@ -3944,10 +3932,7 @@ LRESULT CMenuStyleDlg::OnPick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& b
CSettingsLockWrite lock;
CSetting *pSetting=FindSetting(L"StartButtonPath");
pSetting->value=CComVariant(path);
if (pSetting->value==pSetting->defValue)
pSetting->flags|=CSetting::FLAG_DEFAULT;
else
pSetting->flags&=~CSetting::FLAG_DEFAULT;
pSetting->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsDirty();
}
Update(true);
@@ -4586,10 +4571,7 @@ void UpgradeSettings( bool bShared )
items.Replace(L"Command=recent_items\n",L"Command=recent_programs\n");
items.Replace(L"Command=control_panel_categories\n",L"Command=control_panel\n");
pSettingItems->value=items;
if (pSettingItems->value==pSettingItems->defValue)
pSettingItems->flags|=CSetting::FLAG_DEFAULT;
else
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
}
// set initial menu style
@@ -4597,10 +4579,7 @@ void UpgradeSettings( bool bShared )
if (!pSettingStyle->IsLocked())
{
pSettingStyle->value=(bTwoColumns?1:0);
if (pSettingStyle->value==pSettingStyle->defValue)
pSettingStyle->flags|=CSetting::FLAG_DEFAULT;
else
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
SetSettingsStyle(bTwoColumns?CSetting::FLAG_MENU_CLASSIC2:CSetting::FLAG_MENU_CLASSIC1,CSetting::FLAG_MENU_MASK);
}
@@ -4612,10 +4591,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingSkin->value=pSetting->value;
if (pSettingSkin->value==pSettingSkin->defValue)
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
else
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
}
}
CSetting *pSettingOpt=FindSetting(bTwoColumns?L"SkinOptionsC2":L"SkinOptionsC1");
@@ -4625,10 +4601,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingOpt->value=pSetting->value;
if (pSettingOpt->value==pSettingOpt->defValue)
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
else
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
}
}
CSetting *pSettingVar=FindSetting(bTwoColumns?L"SkinVariationC2":L"SkinVariationC1");
@@ -4638,10 +4611,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingVar->value=pSetting->value;
if (pSettingVar->value==pSettingVar->defValue)
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
else
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
}
}
@@ -4653,10 +4623,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingSkin->value=pSetting->value;
if (pSettingSkin->value==pSettingSkin->defValue)
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
else
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
}
}
pSettingOpt=FindSetting(L"SkinOptionsA");
@@ -4666,10 +4633,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingOpt->value=pSetting->value;
if (pSettingOpt->value==pSettingOpt->defValue)
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
else
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
}
}
pSettingVar=FindSetting(L"SkinVariationA");
@@ -4679,10 +4643,7 @@ void UpgradeSettings( bool bShared )
if (!pSetting->IsDefault())
{
pSettingVar->value=pSetting->value;
if (pSettingVar->value==pSettingVar->defValue)
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
else
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
}
}
}

View File

@@ -1300,7 +1300,7 @@ BEGIN
IDS_NO_DBLCLICK "Single-click to open folder shortcuts"
IDS_NO_DBLCLICK_TIP "When this is checked, single-clicking shortcuts (links) to folders will open them in explorer. Hovering over the shortcut will still expand sub-menus"
IDS_BOLD_SETTINGS "Highlight modified settings"
IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified from their defaults will be highlighted in bold"
IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified will be highlighted in bold"
IDS_SEARCH_HINT "Custom search hint"
IDS_SEARCH_HINT_TIP "When this is checked, the hint text in the search box will be replaced"
IDS_NEW_SEARCH_HINT "Custom search hint text"

View File

@@ -21,5 +21,5 @@ deploy:
on:
APPVEYOR_ACCOUNT_NAME: passionate-coder
auth_token:
secure: 01CsOFRdj9KFb1hp/RlFK/F1UzGhzwGQfok6OoqcL1ipbOwRF//Phbdm7iaFVWIx
secure: D0QZnRZfea3qJlWOwrxE6M2jrbiSrOfz/6U7RzdeeG8N0qNDFKI7LFjYyw2I/PcR
prerelease: true