From 1cc5d2eb53df74c2d08304b09c3e50e76d7dac81 Mon Sep 17 00:00:00 2001 From: ge0rdi Date: Fri, 9 Sep 2022 09:13:54 +0200 Subject: [PATCH] Fix broken menu sorting It was broken in bb26cec commit. Fixes #1111 --- Src/StartMenu/StartMenuDLL/DragDrop.cpp | 2 +- Src/StartMenu/StartMenuDLL/MenuContainer.cpp | 3 +-- Src/StartMenu/StartMenuDLL/MenuContainer.h | 16 +++++++--------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Src/StartMenu/StartMenuDLL/DragDrop.cpp b/Src/StartMenu/StartMenuDLL/DragDrop.cpp index b59865e..7b3262d 100644 --- a/Src/StartMenu/StartMenuDLL/DragDrop.cpp +++ b/Src/StartMenu/StartMenuDLL/DragDrop.cpp @@ -903,7 +903,7 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf else if (i 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()) diff --git a/Src/StartMenu/StartMenuDLL/MenuContainer.h b/Src/StartMenu/StartMenuDLL/MenuContainer.h index d982109..84e3693 100644 --- a/Src/StartMenu/StartMenuDLL/MenuContainer.h +++ b/Src/StartMenu/StartMenuDLL/MenuContainer.h @@ -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 (rowitem.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 drivex.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