[COMCTL32] Sync with Wine Staging 1.9.23. CORE-12409

svn path=/trunk/; revision=73335
This commit is contained in:
Amine Khaldi
2016-11-22 12:10:28 +00:00
parent b45fe0d55c
commit fe25cf50e9
5 changed files with 171 additions and 66 deletions

View File

@@ -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,
}
}

View File

@@ -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_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 ((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;
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);
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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