[PATCH 3/4] regedit: Only show the 'Modify' menu items when the listview has focus

Hugh McMaster hugh.mcmaster at outlook.com
Sun Jun 4 19:58:14 CDT 2017


Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
 programs/regedit/framewnd.c | 22 +++++++++++++++++++++-
 programs/regedit/regedit.rc |  6 +++---
 programs/regedit/resource.h |  2 ++
 3 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/programs/regedit/framewnd.c b/programs/regedit/framewnd.c
index 7e48513..d3dffdc 100644
--- a/programs/regedit/framewnd.c
+++ b/programs/regedit/framewnd.c
@@ -49,6 +49,7 @@ static WCHAR FileNameBuffer[_MAX_PATH];
 static WCHAR FileTitleBuffer[_MAX_PATH];
 static WCHAR FilterBuffer[_MAX_PATH];
 static WCHAR expandW[32], collapseW[32];
+static WCHAR modifyW[32], modify_binaryW[64];
 
 /*******************************************************************************
  * Local module support methods
@@ -198,6 +199,21 @@ static void UpdateMenuItems(HMENU hMenu) {
     HeapFree(GetProcessHeap(), 0, keyName);
 }
 
+static void add_remove_modify_menu_items(HMENU hMenu)
+{
+    if (!g_pChildWnd->nFocusPanel)
+    {
+        while (GetMenuItemCount(hMenu) > 9)
+            DeleteMenu(hMenu, 0, MF_BYPOSITION);
+    }
+    else if (GetMenuItemCount(hMenu) < 10)
+    {
+        InsertMenuW(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0);
+        InsertMenuW(hMenu, 0, MF_BYPOSITION | MF_STRING, ID_EDIT_MODIFY_BIN, modify_binaryW);
+        InsertMenuW(hMenu, 0, MF_BYPOSITION | MF_STRING, ID_EDIT_MODIFY, modifyW);
+    }
+}
+
 static void add_favourite_key_menu_items(HMENU hMenu)
 {
     HKEY hkey;
@@ -239,7 +255,9 @@ exit:
 
 static void OnInitMenuPopup(HWND hWnd, HMENU hMenu)
 {
-    if (hMenu == GetSubMenu(hMenuFrame, ID_FAVORITES_MENU))
+    if (hMenu == GetSubMenu(hMenuFrame, ID_EDIT_MENU))
+        add_remove_modify_menu_items(hMenu);
+    else if (hMenu == GetSubMenu(hMenuFrame, ID_FAVORITES_MENU))
     {
         while (GetMenuItemCount(hMenu) > 2)
             DeleteMenu(hMenu, 2, MF_BYPOSITION);
@@ -1057,6 +1075,8 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
                         hWnd, NULL, hInst, 0);
         LoadStringW(hInst, IDS_EXPAND, expandW, COUNT_OF(expandW));
         LoadStringW(hInst, IDS_COLLAPSE, collapseW, COUNT_OF(collapseW));
+        LoadStringW(hInst, IDS_EDIT_MODIFY, modifyW, COUNT_OF(modifyW));
+        LoadStringW(hInst, IDS_EDIT_MODIFY_BIN, modify_binaryW, COUNT_OF(modify_binaryW));
         break;
     case WM_COMMAND:
         if (!_CmdWndProc(hWnd, message, wParam, lParam))
diff --git a/programs/regedit/regedit.rc b/programs/regedit/regedit.rc
index f1c8f9d..2e4d146 100644
--- a/programs/regedit/regedit.rc
+++ b/programs/regedit/regedit.rc
@@ -41,8 +41,6 @@ BEGIN
     END
     POPUP "&Edit"
     BEGIN
-        MENUITEM "&Modify...",                  ID_EDIT_MODIFY
-        MENUITEM SEPARATOR
         POPUP "&New"
         BEGIN
             MENUITEM "&Key",                        ID_EDIT_NEW_KEY
@@ -132,7 +130,7 @@ BEGIN
   POPUP ""
   BEGIN
 	MENUITEM "&Modify...",                  ID_EDIT_MODIFY
-	MENUITEM "Modify Binary Data...",       ID_EDIT_MODIFY_BIN
+	MENUITEM "Modify &Binary Data...",      ID_EDIT_MODIFY_BIN
 	MENUITEM SEPARATOR
 	MENUITEM "&Delete\tDel",                ID_EDIT_DELETE
 	MENUITEM "&Rename\tF2",                 ID_EDIT_RENAME
@@ -229,6 +227,8 @@ STRINGTABLE
 BEGIN
     IDS_EXPAND                    "Expand"
     IDS_COLLAPSE                  "Collapse"
+    IDS_EDIT_MODIFY               "&Modify..."
+    IDS_EDIT_MODIFY_BIN           "Modify &Binary Data..."
 END
 
 STRINGTABLE
diff --git a/programs/regedit/resource.h b/programs/regedit/resource.h
index 88ba12d..02f9360 100644
--- a/programs/regedit/resource.h
+++ b/programs/regedit/resource.h
@@ -144,6 +144,8 @@
 #define ID_TREE_EXPAND_COLLAPSE         33105
 #define IDS_EXPAND                      33106
 #define IDS_COLLAPSE                    33107
+#define IDS_EDIT_MODIFY                 33108
+#define IDS_EDIT_MODIFY_BIN             33109
 
 #define IDD_EDIT_STRING			2000
 #define IDC_VALUE_NAME			2001
-- 
2.7.4




More information about the wine-patches mailing list