From e7050da80f4dbbc704b763b25bdd9601f2e81d8b Mon Sep 17 00:00:00 2001 From: hishitetsu <66369541+hishitetsu@users.noreply.github.com> Date: Thu, 27 Apr 2023 12:57:27 +0900 Subject: [PATCH] Fix: Refactored ContextMenu (#12217) --- src/Files.App/Shell/ContextMenu.cs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Files.App/Shell/ContextMenu.cs b/src/Files.App/Shell/ContextMenu.cs index ed561d0bdd05..f1e406b63ae9 100644 --- a/src/Files.App/Shell/ContextMenu.cs +++ b/src/Files.App/Shell/ContextMenu.cs @@ -254,18 +254,18 @@ public static async Task WarmUpQueryContextMenuAsync() if (loadSubenus) { - LoadSubMenu(hSubMenu); + LoadSubMenu(); } else { - loadSubMenuActions.Add(subItems, () => LoadSubMenu(hSubMenu)); + loadSubMenuActions.Add(subItems, LoadSubMenu); } menuItem.SubItems = subItems; Debug.WriteLine("Item {0}: done submenu", ii); - void LoadSubMenu(HMENU hSubMenu) + void LoadSubMenu() { try { @@ -292,24 +292,25 @@ void LoadSubMenu(HMENU hSubMenu) public async Task LoadSubMenu(List subItems) { - return await owningThread.PostMethod(() => + if (loadSubMenuActions.Remove(subItems, out var loadSubMenuAction)) { - var result = loadSubMenuActions.Remove(subItems, out var loadSubMenuAction); - - if (result) + return await owningThread.PostMethod(() => { try { loadSubMenuAction!(); + return true; } catch (COMException) { - result = false; + return false; } - } - - return result; - }); + }); + } + else + { + return false; + } } private static string? GetCommandString(Shell32.IContextMenu cMenu, uint offset, Shell32.GCS flags = Shell32.GCS.GCS_VERBW)