Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
d73d6b20
Commit
d73d6b20
authored
Jul 25, 2016
by
Nikolay Sivov
Committed by
Alexandre Julliard
Jul 26, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32/treeview: Set hot item when hovering over item, not entire row.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
87754283
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
20 deletions
+23
-20
treeview.c
dlls/comctl32/treeview.c
+23
-20
No files found.
dlls/comctl32/treeview.c
View file @
d73d6b20
...
...
@@ -3635,7 +3635,7 @@ TREEVIEW_HitTestPoint(const TREEVIEW_INFO *infoPtr, POINT pt)
return
item
;
}
static
LRESULT
static
TREEVIEW_ITEM
*
TREEVIEW_HitTest
(
const
TREEVIEW_INFO
*
infoPtr
,
LPTVHITTESTINFO
lpht
)
{
TREEVIEW_ITEM
*
item
;
...
...
@@ -3670,14 +3670,14 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
if
(
status
)
{
lpht
->
flags
=
status
;
return
0
;
return
NULL
;
}
item
=
TREEVIEW_HitTestPoint
(
infoPtr
,
lpht
->
pt
);
if
(
!
item
)
{
lpht
->
flags
=
TVHT_NOWHERE
;
return
0
;
return
NULL
;
}
if
(
x
>=
item
->
textOffset
+
item
->
textWidth
)
...
...
@@ -3708,7 +3708,7 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
lpht
->
hItem
=
item
;
TRACE
(
"(%d,%d):result 0x%x
\n
"
,
lpht
->
pt
.
x
,
lpht
->
pt
.
y
,
lpht
->
flags
);
return
(
LRESULT
)
item
;
return
item
;
}
/* Item Label Editing ***************************************************/
...
...
@@ -4131,7 +4131,7 @@ TREEVIEW_LButtonDoubleClick(TREEVIEW_INFO *infoPtr, LPARAM lParam)
hit
.
pt
.
x
=
(
short
)
LOWORD
(
lParam
);
hit
.
pt
.
y
=
(
short
)
HIWORD
(
lParam
);
item
=
(
TREEVIEW_ITEM
*
)
TREEVIEW_HitTest
(
infoPtr
,
&
hit
);
item
=
TREEVIEW_HitTest
(
infoPtr
,
&
hit
);
if
(
!
item
)
return
0
;
TRACE
(
"item %d
\n
"
,
TREEVIEW_GetItemIndex
(
infoPtr
,
item
));
...
...
@@ -5331,9 +5331,9 @@ TREEVIEW_MouseLeave (TREEVIEW_INFO * infoPtr)
static
LRESULT
TREEVIEW_MouseMove
(
TREEVIEW_INFO
*
infoPtr
,
LPARAM
lParam
)
{
POINT
pt
;
TRACKMOUSEEVENT
trackinfo
;
TREEVIEW_ITEM
*
item
;
TVHITTESTINFO
ht
;
if
(
!
(
infoPtr
->
dwStyle
&
TVS_TRACKSELECT
))
return
0
;
...
...
@@ -5358,18 +5358,21 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam)
_TrackMouseEvent
(
&
trackinfo
);
}
pt
.
x
=
(
short
)
LOWORD
(
lParam
);
pt
.
y
=
(
short
)
HIWORD
(
lParam
);
item
=
TREEVIEW_HitTestPoint
(
infoPtr
,
pt
);
ht
.
pt
.
x
=
(
short
)
LOWORD
(
lParam
);
ht
.
pt
.
y
=
(
short
)
HIWORD
(
lParam
);
if
(
item
!=
infoPtr
->
hotItem
)
item
=
TREEVIEW_HitTest
(
infoPtr
,
&
ht
);
if
((
item
!=
infoPtr
->
hotItem
)
||
!
(
ht
.
flags
&
TVHT_ONITEM
))
{
/* redraw old hot item */
TREEVIEW_InvalidateItem
(
infoPtr
,
infoPtr
->
hotItem
);
infoPtr
->
hotItem
=
item
;
/* redraw new hot item */
TREEVIEW_InvalidateItem
(
infoPtr
,
infoPtr
->
hotItem
);
infoPtr
->
hotItem
=
NULL
;
if
(
item
&&
(
ht
.
flags
&
TVHT_ONITEM
))
{
infoPtr
->
hotItem
=
item
;
/* redraw new hot item */
TREEVIEW_InvalidateItem
(
infoPtr
,
infoPtr
->
hotItem
);
}
}
return
0
;
...
...
@@ -5508,14 +5511,14 @@ TREEVIEW_StyleChanged(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static
LRESULT
TREEVIEW_SetCursor
(
const
TREEVIEW_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
{
POINT
pt
;
TREEVIEW_ITEM
*
item
;
TVHITTESTINFO
ht
;
NMMOUSE
nmmouse
;
GetCursorPos
(
&
pt
);
ScreenToClient
(
infoPtr
->
hwnd
,
&
pt
);
GetCursorPos
(
&
ht
.
pt
);
ScreenToClient
(
infoPtr
->
hwnd
,
&
ht
.
pt
);
item
=
TREEVIEW_HitTest
Point
(
infoPtr
,
p
t
);
item
=
TREEVIEW_HitTest
(
infoPtr
,
&
h
t
);
memset
(
&
nmmouse
,
0
,
sizeof
(
nmmouse
));
if
(
item
)
...
...
@@ -5529,7 +5532,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
))
if
(
item
&&
(
infoPtr
->
dwStyle
&
TVS_TRACKSELECT
)
&&
(
ht
.
flags
&
TVHT_ONITEM
)
)
{
SetCursor
(
infoPtr
->
hcurHand
);
return
0
;
...
...
@@ -5673,7 +5676,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return
TREEVIEW_GetVisibleCount
(
infoPtr
);
case
TVM_HITTEST
:
return
TREEVIEW_HitTest
(
infoPtr
,
(
LPTVHITTESTINFO
)
lParam
);
return
(
LRESULT
)
TREEVIEW_HitTest
(
infoPtr
,
(
TVHITTESTINFO
*
)
lParam
);
case
TVM_INSERTITEMA
:
case
TVM_INSERTITEMW
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment