From 9e35dd15454be28c487b0f1bebefbbe530b2aca4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jakub=20Bartmi=C5=84ski?= Date: Mon, 3 Apr 2017 21:39:46 +0200 Subject: [PATCH] regedit: Fall back to tree root on invalid path. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakub BartmiĊ„ski Signed-off-by: Alexandre Julliard --- programs/regedit/treeview.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c index 378657d59ff..4b5e1ca2c58 100644 --- a/programs/regedit/treeview.c +++ b/programs/regedit/treeview.c @@ -132,13 +132,16 @@ static LPWSTR get_path_component(LPCWSTR *lplpKeyName) { HTREEITEM FindPathInTree(HWND hwndTV, LPCWSTR lpKeyName) { TVITEMEXW tvi; WCHAR buf[261]; /* tree view has 260 character limitation on item name */ - HTREEITEM hItem, hOldItem; + HTREEITEM hRoot, hItem, hOldItem; + BOOL valid_path; buf[260] = '\0'; - hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_ROOT, 0); + hRoot = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_ROOT, 0); + hItem = hRoot; SendMessageW(hwndTV, TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem ); hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); hOldItem = hItem; + valid_path = FALSE; while(1) { LPWSTR lpItemName = get_path_component(&lpKeyName); @@ -150,6 +153,7 @@ HTREEITEM FindPathInTree(HWND hwndTV, LPCWSTR lpKeyName) { tvi.cchTextMax = 260; SendMessageW(hwndTV, TVM_GETITEMW, 0, (LPARAM) &tvi); if (!lstrcmpiW(tvi.pszText, lpItemName)) { + valid_path = TRUE; SendMessageW(hwndTV, TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem ); if (!lpKeyName) { @@ -164,10 +168,10 @@ HTREEITEM FindPathInTree(HWND hwndTV, LPCWSTR lpKeyName) { } HeapFree(GetProcessHeap(), 0, lpItemName); if (!hItem) - return hOldItem; + return valid_path ? hOldItem : hRoot; } else - return hItem; + return valid_path ? hItem : hRoot; } } -- 2.11.4.GIT