Hugh McMaster : regedit: Use shared code to add favourite key items to the 'Remove' listbox.

Alexandre Julliard julliard at winehq.org
Tue Jun 6 15:23:30 CDT 2017


Module: wine
Branch: master
Commit: 75fed2d5a1360d7769f42122b95c8d4087cd0889
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=75fed2d5a1360d7769f42122b95c8d4087cd0889

Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date:   Tue Jun  6 08:01:07 2017 +0000

regedit: Use shared code to add favourite key items to the 'Remove' listbox.

Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/regedit/framewnd.c | 46 ++++++++++++++-------------------------------
 1 file changed, 14 insertions(+), 32 deletions(-)

diff --git a/programs/regedit/framewnd.c b/programs/regedit/framewnd.c
index 9853810..0503dc8 100644
--- a/programs/regedit/framewnd.c
+++ b/programs/regedit/framewnd.c
@@ -215,15 +215,15 @@ static void add_remove_modify_menu_items(HMENU hMenu)
     }
 }
 
-static void add_favourite_key_menu_items(HMENU hMenu)
+static int add_favourite_key_items(HMENU hMenu, HWND hList)
 {
     HKEY hkey;
     LONG rc;
-    DWORD num_values, max_value_len, value_len, type, i;
+    DWORD num_values, max_value_len, value_len, type, i = 0;
     WCHAR *value_name;
 
     rc = RegOpenKeyExW(HKEY_CURRENT_USER, favoritesKey, 0, KEY_READ, &hkey);
-    if (rc != ERROR_SUCCESS) return;
+    if (rc != ERROR_SUCCESS) return 0;
 
     rc = RegQueryInfoKeyW(hkey, NULL, NULL, NULL, NULL, NULL, NULL, &num_values,
                           &max_value_len, NULL, NULL, NULL);
@@ -239,19 +239,25 @@ static void add_favourite_key_menu_items(HMENU hMenu)
     value_name = HeapAlloc(GetProcessHeap(), 0, max_value_len * sizeof(WCHAR));
     CHECK_ENOUGH_MEMORY(value_name);
 
-    AppendMenuW(hMenu, MF_SEPARATOR, 0, 0);
+    if (hMenu) AppendMenuW(hMenu, MF_SEPARATOR, 0, 0);
 
     for (i = 0; i < num_values; i++)
     {
         value_len = max_value_len;
         rc = RegEnumValueW(hkey, i, value_name, &value_len, NULL, &type, NULL, NULL);
         if (rc == ERROR_SUCCESS && type == REG_SZ)
-            AppendMenuW(hMenu, MF_ENABLED | MF_STRING, ID_FAVORITE_FIRST + i, value_name);
+        {
+            if (hMenu)
+                AppendMenuW(hMenu, MF_ENABLED | MF_STRING, ID_FAVORITE_FIRST + i, value_name);
+            else if (hList)
+                SendMessageW(hList, LB_ADDSTRING, 0, (LPARAM)value_name);
+        }
     }
 
     HeapFree(GetProcessHeap(), 0, value_name);
 exit:
     RegCloseKey(hkey);
+    return i;
 }
 
 static void OnInitMenuPopup(HWND hWnd, HMENU hMenu)
@@ -263,7 +269,7 @@ static void OnInitMenuPopup(HWND hWnd, HMENU hMenu)
         while (GetMenuItemCount(hMenu) > 2)
             DeleteMenu(hMenu, 2, MF_BYPOSITION);
 
-        add_favourite_key_menu_items(hMenu);
+        add_favourite_key_items(hMenu, NULL);
     }
 
     UpdateMenuItems(hMenu);
@@ -710,35 +716,11 @@ static INT_PTR CALLBACK removefavorite_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM w
     HWND hwndList = GetDlgItem(hwndDlg, IDC_NAME_LIST);
             
     switch(uMsg) {
-        case WM_INITDIALOG: {
-            HKEY hKey;
-            int i = 0;
-            EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE);
-            if (RegOpenKeyExW(HKEY_CURRENT_USER, favoritesKey,
-                0, KEY_READ, &hKey) == ERROR_SUCCESS) {
-                WCHAR namebuf[KEY_MAX_LEN];
-                BYTE valuebuf[4096];
-                DWORD ksize, vsize, type;
-                LONG error;
-                do {
-                    ksize = KEY_MAX_LEN;
-                    vsize = sizeof(valuebuf);
-                    error = RegEnumValueW(hKey, i, namebuf, &ksize, NULL, &type, valuebuf, &vsize);
-                    if (error != ERROR_SUCCESS)
-                        break;
-                    if (type == REG_SZ) {
-                        SendMessageW(hwndList, LB_ADDSTRING, 0, (LPARAM)namebuf);
-                    }
-                    i++;
-                } while(error == ERROR_SUCCESS);
-                RegCloseKey(hKey);
-            }
-            else
+        case WM_INITDIALOG:
+            if (!add_favourite_key_items(NULL, hwndList))
                 return FALSE;
-            EnableWindow(GetDlgItem(hwndDlg, IDOK), i != 0);
             SendMessageW(hwndList, LB_SETCURSEL, 0, 0);
             return TRUE;
-        }
         case WM_COMMAND:
             switch(LOWORD(wParam)) {
             case IDC_NAME_LIST:




More information about the wine-cvs mailing list