From ee7ca802f4839fab9efd1759a762a9839d931a9b Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 15 Jul 2009 21:21:26 +0900 Subject: [PATCH] comctl32: Do not redraw treeview in TVM_INSERTITEM handler if bRedraw is not set, trigger the redraw on WM_SETREDRAW/TRUE. --- dlls/comctl32/treeview.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c index 8bea9738a2b..fd20cef0941 100644 --- a/dlls/comctl32/treeview.c +++ b/dlls/comctl32/treeview.c @@ -1367,6 +1367,8 @@ TREEVIEW_InsertItemT(TREEVIEW_INFO *infoPtr, const TVINSERTSTRUCTW *ptdi, BOOL i TREEVIEW_VerifyTree(infoPtr); + if (!infoPtr->bRedraw) return (LRESULT)newItem; + if (parentItem == infoPtr->root || (ISVISIBLE(parentItem) && parentItem->state & TVIS_EXPANDED)) { @@ -1564,6 +1566,7 @@ TREEVIEW_DeleteItem(TREEVIEW_INFO *infoPtr, HTREEITEM wineItem) TREEVIEW_VerifyTree(infoPtr); + if (!infoPtr->bRedraw) return TRUE; if (visible) { @@ -1586,12 +1589,15 @@ TREEVIEW_DeleteItem(TREEVIEW_INFO *infoPtr, HTREEITEM wineItem) static LRESULT TREEVIEW_SetRedraw(TREEVIEW_INFO* infoPtr, WPARAM wParam) { - if(wParam) - infoPtr->bRedraw = TRUE; - else - infoPtr->bRedraw = FALSE; + infoPtr->bRedraw = wParam ? TRUE : FALSE; - return 0; + if (infoPtr->bRedraw) + { + TREEVIEW_UpdateSubTree(infoPtr, infoPtr->root); + TREEVIEW_UpdateScrollBars(infoPtr); + TREEVIEW_Invalidate(infoPtr, NULL); + } + return 0; } static LRESULT