diff --git a/programs/regedit/childwnd.c b/programs/regedit/childwnd.c index d8431f10ec1..aa690f976ce 100644 --- a/programs/regedit/childwnd.c +++ b/programs/regedit/childwnd.c @@ -240,16 +240,21 @@ static void get_last_key(HWND hwndTV) if (RegCreateKeyExW(HKEY_CURRENT_USER, wszKeyName, 0, NULL, 0, KEY_READ, NULL, &hkey, NULL) == ERROR_SUCCESS) { + HTREEITEM selection = NULL; if (RegQueryValueExW(hkey, wszLastKey, NULL, NULL, (LPBYTE)wszVal, &dwSize) == ERROR_SUCCESS) { - HTREEITEM selection; - if (!strcmpW(wszVal, g_pChildWnd->szPath)) - selection = (HTREEITEM)SendMessageW(g_pChildWnd->hTreeWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); - else + if (strcmpW(wszVal, g_pChildWnd->szPath)) selection = FindPathInTree(hwndTV, wszVal); - SendMessageW(hwndTV, TVM_SELECTITEM, TVGN_CARET, (LPARAM)selection); } + if(!selection) + { + selection = (HTREEITEM)SendMessageW(g_pChildWnd->hTreeWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); + SendMessageW(hwndTV, TVM_EXPAND, TVE_EXPAND, (LPARAM)selection ); + } + else + SendMessageW(hwndTV, TVM_SELECTITEM, TVGN_CARET, (LPARAM)selection); + RegCloseKey(hkey); } } diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c index d5a67677547..15a51360a30 100644 --- a/programs/regedit/treeview.c +++ b/programs/regedit/treeview.c @@ -572,9 +572,6 @@ static BOOL InitTreeViewItems(HWND hwndTV, LPWSTR pHostName) if (!AddEntryToTree(hwndTV, hRoot, hkcc, HKEY_CURRENT_CONFIG, 1)) return FALSE; if (!AddEntryToTree(hwndTV, hRoot, hkdd, HKEY_DYN_DATA, 1)) return FALSE; - /* expand and select host name */ - SendMessageW(hwndTV, TVM_EXPAND, TVE_EXPAND, (LPARAM)hRoot ); - SendMessageW(hwndTV, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hRoot); return TRUE; }