From: Amine Khaldi Date: Tue, 22 Nov 2016 12:10:28 +0000 (+0000) Subject: [COMCTL32] Sync with Wine Staging 1.9.23. CORE-12409 X-Git-Tag: ReactOS-0.4.4-FOSDEM2017~200 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=fe25cf50e93cffa2a791df13862741225901ef35 [COMCTL32] Sync with Wine Staging 1.9.23. CORE-12409 svn path=/trunk/; revision=73335 --- diff --git a/reactos/dll/win32/comctl32/comctl32_ros.diff b/reactos/dll/win32/comctl32/comctl32_ros.diff index 07de47e1933..05f4aa61425 100644 --- a/reactos/dll/win32/comctl32/comctl32_ros.diff +++ b/reactos/dll/win32/comctl32/comctl32_ros.diff @@ -1,5 +1,5 @@ diff -pudN e:\wine\dlls\comctl32/comctl32.h e:\reactos\dll\win32\comctl32/comctl32.h ---- e:\wine\dlls\comctl32/comctl32.h 2016-08-14 19:11:25 +0100 +--- e:\wine\dlls\comctl32/comctl32.h 2016-11-16 17:28:41 +0100 +++ e:\reactos\dll\win32\comctl32/comctl32.h 2014-03-05 11:47:40 +0100 @@ -53,67 +53,6 @@ extern HMODULE COMCTL32_hModule DECLSPEC_HIDDEN; @@ -79,8 +79,8 @@ diff -pudN e:\wine\dlls\comctl32/comctl32.h e:\reactos\dll\win32\comctl32/comctl typedef struct _SUBCLASSPROCS { SUBCLASSPROC subproc; diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commctrl.c ---- e:\wine\dlls\comctl32/commctrl.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/commctrl.c 2016-03-01 20:00:53 +0100 +--- e:\wine\dlls\comctl32/commctrl.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/commctrl.c 2016-02-26 11:19:35 +0100 @@ -60,6 +60,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(commctrl); @@ -333,8 +333,8 @@ diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commct + return TRUE; +} diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/imagelist.c ---- e:\wine\dlls\comctl32/imagelist.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-08-18 12:03:13 +0100 +--- e:\wine\dlls\comctl32/imagelist.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-08-15 16:07:59 +0100 @@ -33,7 +33,7 @@ * * TODO: @@ -504,8 +504,8 @@ diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/image Common subdirectories: e:\wine\dlls\comctl32/lang and e:\reactos\dll\win32\comctl32/lang diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listview.c ---- e:\wine\dlls\comctl32/listview.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/listview.c 2016-08-18 12:03:13 +0100 +--- e:\wine\dlls\comctl32/listview.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/listview.c 2016-08-15 16:09:30 +0100 @@ -287,6 +287,9 @@ typedef struct tagLISTVIEW_INFO COLORREF clrBk; COLORREF clrText; @@ -623,8 +623,8 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi /* case WM_TIMER: */ diff -pudN e:\wine\dlls\comctl32/monthcal.c e:\reactos\dll\win32\comctl32/monthcal.c ---- e:\wine\dlls\comctl32/monthcal.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/monthcal.c 2016-08-18 12:03:13 +0100 +--- e:\wine\dlls\comctl32/monthcal.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/monthcal.c 2016-08-17 13:29:31 +0100 @@ -43,6 +43,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(monthcal); @@ -636,8 +636,8 @@ diff -pudN e:\wine\dlls\comctl32/monthcal.c e:\reactos\dll\win32\comctl32/monthc #define MC_SEL_LBUTDOWN 2 /* Left button pressed in calendar */ #define MC_PREVPRESSED 4 /* Prev month button pressed */ diff -pudN e:\wine\dlls\comctl32/propsheet.c e:\reactos\dll\win32\comctl32/propsheet.c ---- e:\wine\dlls\comctl32/propsheet.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-08-18 12:03:14 +0100 +--- e:\wine\dlls\comctl32/propsheet.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-08-15 16:10:02 +0100 @@ -2355,12 +2355,19 @@ static void PROPSHEET_SetWizButtons(HWND HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON); BOOL enable_finish = ((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH); @@ -693,8 +693,8 @@ diff -pudN e:\wine\dlls\comctl32/propsheet.c e:\reactos\dll\win32\comctl32/props /****************************************************************************** diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c ---- e:\wine\dlls\comctl32/rebar.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/rebar.c 2016-08-18 12:03:14 +0100 +--- e:\wine\dlls\comctl32/rebar.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/rebar.c 2016-08-15 16:11:05 +0100 @@ -50,7 +50,6 @@ * - WM_QUERYNEWPALETTE * - WM_RBUTTONDOWN @@ -908,8 +908,8 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c /* case WM_VKEYTOITEM: supported according to ControlSpy */ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar.c ---- e:\wine\dlls\comctl32/toolbar.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-08-18 12:03:14 +0100 +--- e:\wine\dlls\comctl32/toolbar.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-08-15 16:13:17 +0100 @@ -33,11 +33,9 @@ * - TBSTYLE_REGISTERDROP * - TBSTYLE_EX_DOUBLEBUFFER @@ -1301,8 +1301,8 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* case WM_WININICHANGE: */ diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/tooltips.c ---- e:\wine\dlls\comctl32/tooltips.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-08-18 12:03:14 +0100 +--- e:\wine\dlls\comctl32/tooltips.c 2016-11-16 17:28:41 +0100 ++++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-08-15 16:13:43 +0100 @@ -2009,7 +2009,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO static LRESULT TOOLTIPS_NotifyFormat (TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam) @@ -1341,9 +1341,9 @@ diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/toolti return 0; } diff -pudN e:\wine\dlls\comctl32/treeview.c e:\reactos\dll\win32\comctl32/treeview.c ---- e:\wine\dlls\comctl32/treeview.c 2016-08-14 19:11:25 +0100 -+++ e:\reactos\dll\win32\comctl32/treeview.c 2016-08-18 12:03:14 +0100 -@@ -2888,7 +2888,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, +--- e:\wine\dlls\comctl32/treeview.c 2016-11-16 17:28:42 +0100 ++++ e:\reactos\dll\win32\comctl32/treeview.c 2016-11-16 18:29:47 +0100 +@@ -2909,7 +2909,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, } } diff --git a/reactos/dll/win32/comctl32/header.c b/reactos/dll/win32/comctl32/header.c index c60a005b5d5..797cc91f465 100644 --- a/reactos/dll/win32/comctl32/header.c +++ b/reactos/dll/win32/comctl32/header.c @@ -312,6 +312,48 @@ HEADER_DrawItemFrame(HEADER_INFO *infoPtr, HDC hdc, RECT *r, const HEADER_ITEM * } } +/* Create a region for the sort arrow with its bounding rect's top-left + co-ord x,y and its height h. */ +static HRGN create_sort_arrow( INT x, INT y, INT h, BOOL is_up ) +{ + char buffer[256]; + RGNDATA *data = (RGNDATA *)buffer; + DWORD size = FIELD_OFFSET(RGNDATA, Buffer[h * sizeof(RECT)]); + INT i, yinc = 1; + HRGN rgn; + + if (size > sizeof(buffer)) + { + data = HeapAlloc( GetProcessHeap(), 0, size ); + if (!data) return NULL; + } + data->rdh.dwSize = sizeof(data->rdh); + data->rdh.iType = RDH_RECTANGLES; + data->rdh.nCount = 0; + data->rdh.nRgnSize = h * sizeof(RECT); + + if (!is_up) + { + y += h - 1; + yinc = -1; + } + + x += h - 1; /* set x to the centre */ + + for (i = 0; i < h; i++, y += yinc) + { + RECT *rect = (RECT *)data->Buffer + data->rdh.nCount; + rect->left = x - i; + rect->top = y; + rect->right = x + i + 1; + rect->bottom = y + 1; + data->rdh.nCount++; + } + rgn = ExtCreateRegion( NULL, size, data ); + if (data != (RGNDATA *)buffer) HeapFree( GetProcessHeap(), 0, data ); + return rgn; +} + static INT HEADER_DrawItem (HEADER_INFO *infoPtr, HDC hdc, INT iItem, BOOL bHotTrack, LRESULT lCDFlags) { @@ -392,16 +434,18 @@ HEADER_DrawItem (HEADER_INFO *infoPtr, HDC hdc, INT iItem, BOOL bHotTrack, LRESU /* Now text and image */ { - UINT rw, rh, /* width and height of r */ - *x = NULL, *w = NULL; /* x and width of the pic (bmp or img) which is part of cnt */ + INT rw, rh; /* width and height of r */ + INT *x = NULL; /* x and ... */ + UINT *w = NULL; /* ... width of the pic (bmp or img) which is part of cnt */ /* cnt,txt,img,bmp */ - UINT cx, tx, ix, bx, - cw, tw, iw, bw; + INT cx, tx, ix, bx; + UINT cw, tw, iw, bw; INT img_cx, img_cy; + INT sort_w, sort_x, sort_h; BITMAP bmp; HEADER_PrepareCallbackItems(infoPtr, iItem, HDI_TEXT|HDI_IMAGE); - cw = iw = bw = 0; + cw = iw = bw = sort_w = sort_h = 0; rw = r.right - r.left; rh = r.bottom - r.top; @@ -420,23 +464,28 @@ HEADER_DrawItem (HEADER_INFO *infoPtr, HDC hdc, INT iItem, BOOL bHotTrack, LRESU cw = textRect.right - textRect.left + 2 * infoPtr->iMargin; } - if ((phdi->fmt & HDF_IMAGE) && ImageList_GetIconSize( infoPtr->himl, &img_cx, &img_cy )) { - iw = img_cx + 2 * infoPtr->iMargin; - x = &ix; - w = &iw; - } - - if ((phdi->fmt & HDF_BITMAP) && (phdi->hbm)) { - GetObjectW (phdi->hbm, sizeof(BITMAP), &bmp); - bw = bmp.bmWidth + 2 * infoPtr->iMargin; - if (!iw) { - x = &bx; - w = &bw; - } - } + if (phdi->fmt & (HDF_SORTUP | HDF_SORTDOWN)) { + sort_h = MulDiv( infoPtr->nHeight - VERT_BORDER, 4, 13 ); + sort_w = 2 * sort_h - 1 + infoPtr->iMargin * 2; + cw += sort_w; + } else { /* sort arrows take precedent over images/bitmaps */ + if ((phdi->fmt & HDF_IMAGE) && ImageList_GetIconSize( infoPtr->himl, &img_cx, &img_cy )) { + iw = img_cx + 2 * infoPtr->iMargin; + x = &ix; + w = &iw; + } - if (bw || iw) - cw += *w; + if ((phdi->fmt & HDF_BITMAP) && (phdi->hbm)) { + GetObjectW (phdi->hbm, sizeof(BITMAP), &bmp); + bw = bmp.bmWidth + 2 * infoPtr->iMargin; + if (!iw) { + x = &bx; + w = &bw; + } + } + if (bw || iw) + cw += *w; + } /* align cx using the unclipped cw */ if ((phdi->fmt & HDF_JUSTIFYMASK) == HDF_LEFT) @@ -455,7 +504,10 @@ HEADER_DrawItem (HEADER_INFO *infoPtr, HDC hdc, INT iItem, BOOL bHotTrack, LRESU tx = cx + infoPtr->iMargin; /* since cw might have changed we have to recalculate tw */ tw = cw - infoPtr->iMargin * 2; - + + tw -= sort_w; + sort_x = cx + tw + infoPtr->iMargin * 3; + if (iw || bw) { tw -= *w; if (phdi->fmt & HDF_BITMAP_ON_RIGHT) { @@ -479,22 +531,31 @@ HEADER_DrawItem (HEADER_INFO *infoPtr, HDC hdc, INT iItem, BOOL bHotTrack, LRESU bx = cx + cw + infoPtr->iMargin; } - if (iw || bw) { + if (sort_w || iw || bw) { HDC hClipDC = GetDC(infoPtr->hwndSelf); HRGN hClipRgn = CreateRectRgn(r.left, r.top, r.right, r.bottom); SelectClipRgn(hClipDC, hClipRgn); + if (sort_w) { + HRGN arrow = create_sort_arrow( sort_x, r.top + (rh - sort_h) / 2, + sort_h, phdi->fmt & HDF_SORTUP ); + if (arrow) { + FillRgn( hClipDC, arrow, GetSysColorBrush( COLOR_GRAYTEXT ) ); + DeleteObject( arrow ); + } + } + if (bw) { HDC hdcBitmap = CreateCompatibleDC (hClipDC); SelectObject (hdcBitmap, phdi->hbm); - BitBlt (hClipDC, bx, r.top + ((INT)rh - bmp.bmHeight) / 2, + BitBlt (hClipDC, bx, r.top + (rh - bmp.bmHeight) / 2, bmp.bmWidth, bmp.bmHeight, hdcBitmap, 0, 0, SRCCOPY); DeleteDC (hdcBitmap); } if (iw) { ImageList_DrawEx (infoPtr->himl, phdi->iImage, hClipDC, - ix, r.top + ((INT)rh - img_cy) / 2, + ix, r.top + (rh - img_cy) / 2, img_cx, img_cy, CLR_DEFAULT, CLR_DEFAULT, 0); } diff --git a/reactos/dll/win32/comctl32/hotkey.c b/reactos/dll/win32/comctl32/hotkey.c index e436c4cfaa7..6a35a3ae927 100644 --- a/reactos/dll/win32/comctl32/hotkey.c +++ b/reactos/dll/win32/comctl32/hotkey.c @@ -131,7 +131,7 @@ HOTKEY_Refresh(HOTKEY_INFO *infoPtr, HDC hdc) TRACE("(infoPtr=%p hdc=%p)\n", infoPtr, hdc); if(!infoPtr->CurrMod && !infoPtr->HotKey) { - HOTKEY_DrawHotKey (infoPtr, hdc, infoPtr->strNone, 4); + HOTKEY_DrawHotKey (infoPtr, hdc, infoPtr->strNone, lstrlenW(infoPtr->strNone)); return; } diff --git a/reactos/dll/win32/comctl32/treeview.c b/reactos/dll/win32/comctl32/treeview.c index bbb0c16d894..e605723d994 100644 --- a/reactos/dll/win32/comctl32/treeview.c +++ b/reactos/dll/win32/comctl32/treeview.c @@ -31,7 +31,7 @@ * missing notifications: TVN_GETINFOTIP, TVN_KEYDOWN, * TVN_SETDISPINFO * - * missing styles: TVS_FULLROWSELECT, TVS_INFOTIP, TVS_RTLREADING, + * missing styles: TVS_INFOTIP, TVS_RTLREADING, * * missing item styles: TVIS_EXPANDPARTIAL, TVIS_EX_FLAT, * TVIS_EX_DISABLED @@ -332,6 +332,20 @@ TREEVIEW_IsChildOf(const TREEVIEW_ITEM *parent, const TREEVIEW_ITEM *child) return FALSE; } +static BOOL +TREEVIEW_IsFullRowSelect(const TREEVIEW_INFO *infoPtr) +{ + return !(infoPtr->dwStyle & TVS_HASLINES) && (infoPtr->dwStyle & TVS_FULLROWSELECT); +} + +static BOOL +TREEVIEW_IsItemHit(const TREEVIEW_INFO *infoPtr, const TVHITTESTINFO *ht) +{ + if (TREEVIEW_IsFullRowSelect(infoPtr)) + return ht->flags & (TVHT_ONITEMINDENT | TVHT_ONITEMBUTTON | TVHT_ONITEM | TVHT_ONITEMRIGHT); + else + return ht->flags & TVHT_ONITEM; +} /* Tree Traversal *******************************************************/ @@ -2542,6 +2556,13 @@ TREEVIEW_DrawItem(const TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item) if (cditem & CDRF_NEWFONT) TREEVIEW_ComputeTextWidth(infoPtr, item, hdc); + if (TREEVIEW_IsFullRowSelect(infoPtr)) + { + HBRUSH brush = CreateSolidBrush(nmcdhdr.clrTextBk); + FillRect(hdc, &item->rect, brush); + DeleteObject(brush); + } + TREEVIEW_DrawItemLines(infoPtr, hdc, item); /* Set colors. Custom draw handler can change these so we do this after it. */ @@ -4169,9 +4190,9 @@ TREEVIEW_LButtonDoubleClick(TREEVIEW_INFO *infoPtr, LPARAM lParam) static LRESULT TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) { + BOOL do_track, do_select, bDoLabelEdit; HWND hwnd = infoPtr->hwnd; TVHITTESTINFO ht; - BOOL bTrack, bDoLabelEdit; /* If Edit control is active - kill it and return. * The best way to do it is to set focus to itself. @@ -4191,15 +4212,32 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) TRACE("item %d\n", TREEVIEW_GetItemIndex(infoPtr, ht.hItem)); /* update focusedItem and redraw both items */ - if(ht.hItem && (ht.flags & TVHT_ONITEM)) + if (ht.hItem) { - infoPtr->focusedItem = ht.hItem; - TREEVIEW_InvalidateItem(infoPtr, infoPtr->focusedItem); - TREEVIEW_InvalidateItem(infoPtr, infoPtr->selectedItem); + BOOL do_focus; + + if (TREEVIEW_IsFullRowSelect(infoPtr)) + do_focus = ht.flags & (TVHT_ONITEMINDENT | TVHT_ONITEM | TVHT_ONITEMRIGHT); + else + do_focus = ht.flags & TVHT_ONITEM; + + if (do_focus) + { + infoPtr->focusedItem = ht.hItem; + TREEVIEW_InvalidateItem(infoPtr, infoPtr->focusedItem); + TREEVIEW_InvalidateItem(infoPtr, infoPtr->selectedItem); + } } - bTrack = (ht.flags & TVHT_ONITEM) - && !(infoPtr->dwStyle & TVS_DISABLEDRAGDROP); + if (!(infoPtr->dwStyle & TVS_DISABLEDRAGDROP)) + { + if (TREEVIEW_IsFullRowSelect(infoPtr)) + do_track = ht.flags & (TVHT_ONITEMINDENT | TVHT_ONITEM | TVHT_ONITEMRIGHT); + else + do_track = ht.flags & TVHT_ONITEM; + } + else + do_track = FALSE; /* * If the style allows editing and the node is already selected @@ -4209,16 +4247,15 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) (ht.flags & TVHT_ONITEMLABEL) && (infoPtr->selectedItem == ht.hItem); /* Send NM_CLICK right away */ - if (!bTrack) - if (TREEVIEW_SendSimpleNotify(infoPtr, NM_CLICK)) - goto setfocus; + if (!do_track && TREEVIEW_SendSimpleNotify(infoPtr, NM_CLICK)) + goto setfocus; if (ht.flags & TVHT_ONITEMBUTTON) { TREEVIEW_Toggle(infoPtr, ht.hItem, TRUE); goto setfocus; } - else if (bTrack) + else if (do_track) { /* if TREEVIEW_TrackMouse == 1 dragging occurred and the cursor left the dragged item's rectangle */ if (TREEVIEW_TrackMouse(infoPtr, ht.pt)) { @@ -4240,9 +4277,14 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) } } - if (bTrack && TREEVIEW_SendSimpleNotify(infoPtr, NM_CLICK)) + if (do_track && TREEVIEW_SendSimpleNotify(infoPtr, NM_CLICK)) goto setfocus; + if (TREEVIEW_IsFullRowSelect(infoPtr)) + do_select = ht.flags & (TVHT_ONITEMINDENT | TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMRIGHT); + else + do_select = ht.flags & (TVHT_ONITEMICON | TVHT_ONITEMLABEL); + if (bDoLabelEdit) { if (infoPtr->Timer & TV_EDIT_TIMER_SET) @@ -4251,7 +4293,7 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) SetTimer(hwnd, TV_EDIT_TIMER, GetDoubleClickTime(), 0); infoPtr->Timer |= TV_EDIT_TIMER_SET; } - else if (ht.flags & (TVHT_ONITEMICON|TVHT_ONITEMLABEL)) /* select the item if the hit was inside of the icon or text */ + else if (do_select) { TREEVIEW_ITEM *selection = infoPtr->selectedItem; @@ -4392,7 +4434,7 @@ TREEVIEW_DoSelectItem(TREEVIEW_INFO *infoPtr, INT action, HTREEITEM newSelect, assert(newSelect == NULL || TREEVIEW_ValidItem(infoPtr, newSelect)); - TRACE("Entering item %p (%s), flag 0x%x, cause 0x%x, state %d\n", + TRACE("Entering item %p (%s), flag 0x%x, cause 0x%x, state 0x%x\n", newSelect, TREEVIEW_ItemName(newSelect), action, cause, newSelect ? newSelect->state : 0); @@ -4467,7 +4509,7 @@ TREEVIEW_DoSelectItem(TREEVIEW_INFO *infoPtr, INT action, HTREEITEM newSelect, break; } - TRACE("Leaving state %d\n", newSelect ? newSelect->state : 0); + TRACE("Leaving state 0x%x\n", newSelect ? newSelect->state : 0); return TRUE; } @@ -5320,6 +5362,7 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam) TRACKMOUSEEVENT trackinfo; TREEVIEW_ITEM * item; TVHITTESTINFO ht; + BOOL item_hit; if (!(infoPtr->dwStyle & TVS_TRACKSELECT)) return 0; @@ -5348,12 +5391,13 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam) ht.pt.y = (short)HIWORD(lParam); item = TREEVIEW_HitTest(infoPtr, &ht); - if ((item != infoPtr->hotItem) || !(ht.flags & TVHT_ONITEM)) + item_hit = TREEVIEW_IsItemHit(infoPtr, &ht); + if ((item != infoPtr->hotItem) || !item_hit) { /* redraw old hot item */ TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); infoPtr->hotItem = NULL; - if (item && (ht.flags & TVHT_ONITEM)) + if (item && item_hit) { infoPtr->hotItem = item; /* redraw new hot item */ @@ -5518,7 +5562,7 @@ TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) if (TREEVIEW_SendRealNotify(infoPtr, NM_SETCURSOR, &nmmouse.hdr)) return 0; - if (item && (infoPtr->dwStyle & TVS_TRACKSELECT) && (ht.flags & TVHT_ONITEM)) + if (item && (infoPtr->dwStyle & TVS_TRACKSELECT) && TREEVIEW_IsItemHit(infoPtr, &ht)) { SetCursor(infoPtr->hcurHand); return 0; diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 7d9df59234e..ff67f1a4ba2 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -54,7 +54,7 @@ reactos/dll/win32/browseui # Out of sync reactos/dll/win32/cabinet # Synced to WineStaging-1.9.23 reactos/dll/win32/clusapi # Synced to WineStaging-1.9.11 reactos/dll/win32/comcat # Synced to WineStaging-1.9.11 -reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.16 +reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.23 reactos/dll/win32/comdlg32 # Synced to WineStaging-1.9.16 reactos/dll/win32/compstui # Synced to WineStaging-1.9.11 reactos/dll/win32/credui # Synced to WineStaging-1.9.16