Module: wine Branch: refs/heads/master Commit: 64e5779c16aa364f1bc293874c00b81b11daf1dd URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=64e5779c16aa364f1bc29387...
Author: Mikołaj Zalewski mikolaj@zalewski.pl Date: Mon May 22 22:47:37 2006 +0200
comctl32: header: Make the column resizing smooth in full drag mode.
Make the column resizing smooth in full drag mode even for listview with lots of elements by redrawing only the resized column and calling UpdateWindow.
---
dlls/comctl32/header.c | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c index 38d752e..6696e25 100644 --- a/dlls/comctl32/header.c +++ b/dlls/comctl32/header.c @@ -1657,14 +1657,25 @@ HEADER_MouseMove (HWND hwnd, WPARAM wPar if (dwStyle & HDS_FULLDRAG) { if (!HEADER_SendHeaderNotifyT (hwnd, HDN_ITEMCHANGINGW, infoPtr->iMoveItem, HDI_WIDTH, NULL)) { - nWidth = pt.x - infoPtr->items[infoPtr->iMoveItem].rect.left + infoPtr->xTrackOffset; - if (nWidth < 0) - nWidth = 0; - infoPtr->items[infoPtr->iMoveItem].cxy = nWidth; - HEADER_SendHeaderNotifyT(hwnd, HDN_ITEMCHANGEDW, infoPtr->iMoveItem, HDI_WIDTH, NULL); + HEADER_ITEM *lpItem = &infoPtr->items[infoPtr->iMoveItem]; + INT nOldWidth = lpItem->rect.right - lpItem->rect.left; + RECT rcClient; + RECT rcScroll; + + nWidth = pt.x - lpItem->rect.left + infoPtr->xTrackOffset; + if (nWidth < 0) nWidth = 0; + infoPtr->items[infoPtr->iMoveItem].cxy = nWidth; + HEADER_SetItemBounds(hwnd); + + GetClientRect(hwnd, &rcClient); + rcScroll = rcClient; + rcScroll.left = lpItem->rect.left + nOldWidth; + ScrollWindowEx(hwnd, nWidth - nOldWidth, 0, &rcScroll, &rcClient, NULL, NULL, 0); + InvalidateRect(hwnd, &lpItem->rect, FALSE); + UpdateWindow(hwnd); + + HEADER_SendHeaderNotifyT(hwnd, HDN_ITEMCHANGEDW, infoPtr->iMoveItem, HDI_WIDTH, NULL); } - HEADER_SetItemBounds (hwnd); - InvalidateRect(hwnd, NULL, FALSE); } else { hdc = GetDC (hwnd);