From a9bae9629c7496724fa5ed7fac222441df082024 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Fri, 17 Feb 2017 18:09:53 +0300 Subject: [PATCH] regedit: Sort each of top level branches separately. Signed-off-by: Nikolay Sivov Signed-off-by: Hugh McMaster Signed-off-by: Alexandre Julliard --- programs/regedit/treeview.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c index d07399debc0..378657d59ff 100644 --- a/programs/regedit/treeview.c +++ b/programs/regedit/treeview.c @@ -461,6 +461,17 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem) return TRUE; } +static void treeview_sort_item(HWND hWnd, HTREEITEM item) +{ + HTREEITEM child = (HTREEITEM)SendMessageW(hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)item); + + while (child != NULL) { + treeview_sort_item(hWnd, child); + child = (HTREEITEM)SendMessageW(hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)child); + } + SendMessageW(hWnd, TVM_SORTCHILDREN, 0, (LPARAM)item); +} + BOOL RefreshTreeView(HWND hwndTV) { HTREEITEM hItem; @@ -477,12 +488,12 @@ BOOL RefreshTreeView(HWND hwndTV) hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hRoot); while (hItem) { RefreshTreeItem(hwndTV, hItem); + treeview_sort_item(hwndTV, hItem); hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); } SendMessageW(hwndTV, WM_SETREDRAW, TRUE, 0); InvalidateRect(hwndTV, NULL, FALSE); - SendMessageW(hwndTV, TVM_SORTCHILDREN, TRUE, (LPARAM)hSelectedItem); SetCursor(hcursorOld); /* We reselect the currently selected node, this will prompt a refresh of the listview. */ -- 2.11.4.GIT