Skip to content

Commit 1cc5d2e

Browse files
committed
Fix broken menu sorting
It was broken in bb26cec commit. Fixes #1111
1 parent 687e509 commit 1cc5d2e

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

Src/StartMenu/StartMenuDLL/DragDrop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf
903903
else if (i<before)
904904
skip++;
905905
}
906-
SortMenuItem ins(L"",FNV_HASH0,false,false,false,folderIndex*2,0);
906+
SortMenuItem ins(L"",FNV_HASH0,false,false,folderIndex*2,0);
907907
items.insert(items.begin()+(before-skip),ins);
908908
SaveItemOrder(items);
909909
}

Src/StartMenu/StartMenuDLL/MenuContainer.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -861,8 +861,7 @@ void CMenuContainer::AddFirstFolder( IShellItem *pFolder, std::vector<MenuItem>
861861

862862
if (bLibrary) flags&=~SFGAO_STREAM;
863863
item.bLink=(flags&SFGAO_LINK)!=0;
864-
item.bFolderLink=(flags&SFGAO_FOLDER && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
865-
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && item.bFolderLink);
864+
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && (flags&SFGAO_FOLDER) && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
866865
{
867866
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
868867
if (item.pItemInfo->IsMetroLink())

Src/StartMenu/StartMenuDLL/MenuContainer.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub
453453
drawType=MenuSkin::COLUMN1_ITEM;
454454
column=row=0;
455455
memset(&itemRect,0,sizeof(itemRect));
456-
bFolder=bLink=bFolderLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
456+
bFolder=bLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
457457
priority=0;
458458
pItem1=pItem2=NULL;
459459
mfuHash=0;
@@ -477,7 +477,6 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub
477477
RECT itemRect;
478478
bool bFolder:1; // this is a folder - draw arrow
479479
bool bLink:1; // this is a link (if a link to a folder is expanded it is always single-column)
480-
bool bFolderLink:1; // this is a folder that is not explicitly expandable - used for sorting the list-of-links style
481480
bool bPrograms:1; // this item is part of the Start Menu folder hierarchy
482481
bool bAlignBottom:1; // two-column menu: this item is aligned to the bottom
483482
bool bBreak:1; // two-column menu: this item starts the second column
@@ -513,8 +512,8 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub
513512
if (priority>item.priority) return false;
514513
if (row<item.row) return true;
515514
if (row>item.row) return false;
516-
if (((bFolder || bFolderLink) && !bHasJumpList) && !((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return true;
517-
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return false;
515+
if ((bFolder && !bHasJumpList) && !(item.bFolder && !item.bHasJumpList)) return true;
516+
if (!(bFolder && !bHasJumpList) && (item.bFolder && !item.bHasJumpList)) return false;
518517
if (drive && !item.drive) return true;
519518
if (!drive && item.drive) return false;
520519
if (drive && item.drive) return drive<item.drive;
@@ -579,19 +578,18 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub
579578
CString name;
580579
unsigned int nameHash;
581580
bool bFolder;
582-
bool bFolderLink;
583581
bool bHasJumpList;
584582
char priority;
585583
char drive;
586584

587-
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; }
588-
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; }
585+
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; }
586+
SortMenuItem( const MenuItem &item ) { name=item.name; nameHash=item.nameHash; bFolder=item.bFolder; bHasJumpList=item.bHasJumpList; priority=item.priority; drive=item.drive; }
589587
bool operator<( const SortMenuItem &x ) const
590588
{
591589
if (priority<x.priority) return true;
592590
if (priority>x.priority) return false;
593-
if (((bFolder || bFolderLink) && !bHasJumpList) && !((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return true;
594-
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return false;
591+
if ((bFolder && !bHasJumpList) && !(x.bFolder && !x.bHasJumpList)) return true;
592+
if (!(bFolder && !bHasJumpList) && (x.bFolder && !x.bHasJumpList)) return false;
595593
if (drive && !x.drive) return true;
596594
if (!drive && x.drive) return false;
597595
if (drive && x.drive) return drive<x.drive;

0 commit comments

Comments
 (0)