[SHELL32] Fix CDefaultContextMenu DFM_MERGECONTEXTMENU handling
authorMark Jansen <mark.jansen@reactos.org>
Thu, 1 Sep 2022 19:54:31 +0000 (21:54 +0200)
committerMark Jansen <mark.jansen@reactos.org>
Fri, 14 Oct 2022 19:04:19 +0000 (21:04 +0200)
dll/win32/shell32/CDefaultContextMenu.cpp

index 55aa802..10cffcf 100644 (file)
@@ -433,7 +433,7 @@ CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UIN
         if (SUCCEEDED(hr))
         {
             info.iIdCmdFirst = cIds;
-            info.NumIds = LOWORD(hr);
+            info.NumIds = HRESULT_CODE(hr);
             (*pIndexMenu) += info.NumIds;
 
             cIds += info.NumIds;
@@ -646,8 +646,9 @@ CDefaultContextMenu::QueryContextMenu(
     QCMINFO qcminfo = {hMenu, IndexMenu, idCmdNext, idCmdLast, NULL};
     if (SUCCEEDED(_DoCallback(DFM_MERGECONTEXTMENU, uFlags, &qcminfo)))
     {
-        cIds += qcminfo.idCmdFirst;
-        IndexMenu += qcminfo.idCmdFirst;
+        UINT added = idCmdNext - (idCmdFirst + cIds);
+        cIds += added;
+        IndexMenu += added;
         m_iIdCBFirst = m_iIdSHELast;
         m_iIdCBLast = cIds;
         idCmdNext = idCmdFirst + cIds;