Module: wine Branch: master Commit: 9e35dd15454be28c487b0f1bebefbbe530b2aca4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9e35dd15454be28c487b0f1beb...
Author: Jakub Bartmiński jakub.bartm@gmail.com Date: Mon Apr 3 21:39:46 2017 +0200
regedit: Fall back to tree root on invalid path.
Signed-off-by: Jakub Bartmiński jakub.bartm@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 378657d..4b5e1ca 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; } }