From 006d3f336519289b4d297f080728628c313a5e08 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Mon, 20 Aug 2018 22:49:20 +0000 Subject: [PATCH] regedit: Don't expand items on initial tree creation. The Message TVM_EXPAND is captured in treeview_notify, then passes g_pChildWnd->hTreeWnd on to OnTreeExpanding which hasn't been initialized yet. The function get_last_key is already called after the hTreeWnd has been assigned to select the previous selected item (if it exists). Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Alexandre Julliard --- programs/regedit/childwnd.c | 15 ++++++++++----- programs/regedit/treeview.c | 3 --- 2 files changed, 10 insertions(+), 8 deletions(-) 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; }