From c233696e9bbaf0db48c1a4758cf55e892fcedd29 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Wed, 5 Oct 2022 11:00:25 +0200 Subject: [PATCH] [0.4.11][SHELL32] Bypass OpenWith for Delete and F2 (Rename) Keys (#4032) CORE-17810 Logspam started during 0.4.9-dev'ing when zipfldr got committed, logspam became much worse by 0.4.10-dev-599-g 932df378bf35146a56c796bec36c5c689109fbd6 But the actual bug of 'calling those functions when not needed' is much older than that. Fix picked from 0.4.15-dev-3275-g cee171f5d20c0d3c268372085ca4f32bc44d6740 --- dll/win32/shell32/CDefView.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/dll/win32/shell32/CDefView.cpp b/dll/win32/shell32/CDefView.cpp index 640bb143ffc..13b05c8beb2 100644 --- a/dll/win32/shell32/CDefView.cpp +++ b/dll/win32/shell32/CDefView.cpp @@ -1377,19 +1377,21 @@ cleanup: LRESULT CDefView::OnExplorerCommand(UINT uCommand, BOOL bUseSelection) { HRESULT hResult; - HMENU hMenu; - - hMenu = CreatePopupMenu(); - if (!hMenu) - return 0; + HMENU hMenu = NULL; hResult = GetItemObject( bUseSelection ? SVGIO_SELECTION : SVGIO_BACKGROUND, IID_PPV_ARG(IContextMenu, &m_pCM)); if (FAILED_UNEXPECTEDLY( hResult)) goto cleanup; + if ((uCommand != FCIDM_SHVIEW_DELETE) && (uCommand != FCIDM_SHVIEW_RENAME)) + { + hMenu = CreatePopupMenu(); + if (!hMenu) + return 0; - hResult = m_pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL); - if (FAILED_UNEXPECTEDLY( hResult)) - goto cleanup; + hResult = m_pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL); + if (FAILED_UNEXPECTEDLY(hResult)) + goto cleanup; + } InvokeContextMenuCommand(uCommand);