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
3547087c
Commit
3547087c
authored
Oct 05, 2002
by
Dimitrie O. Paun
Committed by
Alexandre Julliard
Oct 05, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Effective optimization in GetNextItem (speeds up Xnews).
- Misc cleanups.
parent
a6569448
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
24 deletions
+35
-24
listview.c
dlls/comctl32/listview.c
+35
-24
No files found.
dlls/comctl32/listview.c
View file @
3547087c
...
...
@@ -994,7 +994,7 @@ static void LISTVIEW_UpdateHeaderSize(LISTVIEW_INFO *infoPtr, INT nNewScrollPos)
RECT
winRect
;
POINT
point
[
2
];
TRACE
(
"nNewScrollPos=%d"
,
nNewScrollPos
);
TRACE
(
"nNewScrollPos=%d
\n
"
,
nNewScrollPos
);
GetWindowRect
(
infoPtr
->
hwndHeader
,
&
winRect
);
point
[
0
].
x
=
winRect
.
left
;
...
...
@@ -3230,7 +3230,7 @@ static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD cdmode
TEXTATTR
tmpTa
,
oldTa
;
COLUMNCACHE
*
lpCols
;
LVCOLUMNW
lvColumn
;
LVITEMW
lvI
tem
;
LVITEMW
i
tem
;
POINT
ptOrig
;
TRACE
(
"()
\n
"
);
...
...
@@ -3307,7 +3307,6 @@ static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD cdmode
if
(
lStyle
&
LVS_OWNERDRAWFIXED
)
{
DRAWITEMSTRUCT
dis
;
LVITEMW
item
;
TRACE
(
"Owner Drawn
\n
"
);
...
...
@@ -3333,6 +3332,7 @@ static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD cdmode
dis
.
rcItem
.
bottom
=
dis
.
rcItem
.
top
+
infoPtr
->
nItemHeight
;
OffsetRect
(
&
dis
.
rcItem
,
ptOrig
.
x
,
0
);
TRACE
(
"item=%s, rcItem=%s
\n
"
,
debuglvitem_t
(
&
item
,
TRUE
),
debugrect
(
&
dis
.
rcItem
));
if
(
SendMessageW
(
GetParent
(
infoPtr
->
hwndSelf
),
WM_DRAWITEM
,
uID
,
(
LPARAM
)
&
dis
))
continue
;
}
...
...
@@ -3340,14 +3340,14 @@ static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD cdmode
/* compute the full select rectangle, if needed */
if
(
bFullSelected
)
{
lvI
tem
.
mask
=
LVIF_IMAGE
|
LVIF_STATE
|
LVIF_INDENT
;
lvI
tem
.
stateMask
=
LVIS_SELECTED
;
lvI
tem
.
iItem
=
nItem
;
lvI
tem
.
iSubItem
=
0
;
if
(
!
LISTVIEW_GetItemW
(
infoPtr
,
&
lvI
tem
,
TRUE
))
continue
;
i
tem
.
mask
=
LVIF_IMAGE
|
LVIF_STATE
|
LVIF_INDENT
;
i
tem
.
stateMask
=
LVIS_SELECTED
;
i
tem
.
iItem
=
nItem
;
i
tem
.
iSubItem
=
0
;
if
(
!
LISTVIEW_GetItemW
(
infoPtr
,
&
i
tem
,
TRUE
))
continue
;
rcFullSelect
.
left
=
lpCols
[
0
].
rc
.
left
+
REPORT_MARGINX
+
infoPtr
->
iconSize
.
cx
*
lvI
tem
.
iIndent
+
infoPtr
->
iconSize
.
cx
*
i
tem
.
iIndent
+
(
infoPtr
->
himlSmall
?
infoPtr
->
iconSize
.
cx
:
0
);
rcFullSelect
.
right
=
max
(
rcFullSelect
.
left
,
lpCols
[
nColumnCount
-
1
].
rc
.
right
-
REPORT_MARGINX
);
rcFullSelect
.
top
=
nDrawPosY
;
...
...
@@ -3356,8 +3356,8 @@ static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD cdmode
}
/* draw the background of the selection rectangle, if need be */
select_text_attr
(
infoPtr
,
hdc
,
bFullSelected
&&
(
lvI
tem
.
state
&
LVIS_SELECTED
),
&
tmpTa
);
if
(
bFullSelected
&&
(
lvI
tem
.
state
&
LVIS_SELECTED
))
select_text_attr
(
infoPtr
,
hdc
,
bFullSelected
&&
(
i
tem
.
state
&
LVIS_SELECTED
),
&
tmpTa
);
if
(
bFullSelected
&&
(
i
tem
.
state
&
LVIS_SELECTED
))
ExtTextOutW
(
hdc
,
rcFullSelect
.
left
,
rcFullSelect
.
top
,
ETO_OPAQUE
,
&
rcFullSelect
,
0
,
0
,
0
);
/* iterate through the invalidated columns */
...
...
@@ -5276,23 +5276,26 @@ static LRESULT LISTVIEW_GetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEM
*
* PARAMETER(S):
* [I] infoPtr : valid pointer to the listview structure
* [I]
INT
: item index
* [I]
INT
: relationship flag
* [I]
nItem
: item index
* [I]
uFlags
: relationship flag
*
* FIXME:
* This function is ver, very inefficient! Needs work.
*
* RETURN:
* SUCCESS : item index
* FAILURE : -1
*/
static
LRESULT
LISTVIEW_GetNextItem
(
LISTVIEW_INFO
*
infoPtr
,
INT
nItem
,
UINT
uFlags
)
{
UINT
uView
=
LISTVIEW_GetType
(
infoPtr
);
UINT
uMask
=
0
;
LVFINDINFOW
lvFindInfo
;
INT
nCountPerColumn
;
INT
i
;
UINT
uView
=
LISTVIEW_GetType
(
infoPtr
);
UINT
uMask
=
0
;
LVFINDINFOW
lvFindInfo
;
INT
nCountPerColumn
;
INT
i
;
if
((
nItem
<
-
1
)
||
(
nItem
>=
GETITEMCOUNT
(
infoPtr
)))
return
-
1
;
if
((
nItem
>=
-
1
)
&&
(
nItem
<
GETITEMCOUNT
(
infoPtr
)))
{
ZeroMemory
(
&
lvFindInfo
,
sizeof
(
lvFindInfo
));
if
(
uFlags
&
LVNI_CUT
)
...
...
@@ -5307,6 +5310,14 @@ static LRESULT LISTVIEW_GetNextItem(LISTVIEW_INFO *infoPtr, INT nItem, UINT uFla
if
(
uFlags
&
LVNI_SELECTED
)
uMask
|=
LVIS_SELECTED
;
/* if we're asked for the focused item, that's only one,
* so it's worth optimizing */
if
(
uFlags
&
LVNI_FOCUSED
)
{
if
(
!
(
LISTVIEW_GetItemState
(
infoPtr
,
infoPtr
->
nFocusedItem
,
uMask
)
&
uMask
)
==
uMask
)
return
-
1
;
return
(
infoPtr
->
nFocusedItem
==
nItem
)
?
-
1
:
infoPtr
->
nFocusedItem
;
}
if
(
uFlags
&
LVNI_ABOVE
)
{
if
((
uView
==
LVS_LIST
)
||
(
uView
==
LVS_REPORT
))
...
...
@@ -5412,9 +5423,8 @@ static LRESULT LISTVIEW_GetNextItem(LISTVIEW_INFO *infoPtr, INT nItem, UINT uFla
return
i
;
}
}
}
return
-
1
;
return
-
1
;
}
/* LISTVIEW_GetNumberOfWorkAreas */
...
...
@@ -6822,15 +6832,16 @@ static BOOL LISTVIEW_SetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW l
{
LVITEMW
lvItem
;
TRACE
(
"(nItem=%d, lpLVItem=%s, isW=%d)
\n
"
,
nItem
,
debuglvitem_t
(
lpLVItem
,
isW
),
isW
);
if
((
nItem
<
0
)
&&
(
nItem
>=
GETITEMCOUNT
(
infoPtr
)))
return
FALSE
;
lvItem
.
iItem
=
nItem
;
lvItem
.
iSubItem
=
lpLVItem
->
iSubItem
;
lvItem
.
mask
=
LVIF_TEXT
;
lvItem
.
pszText
=
lpLVItem
->
pszText
;
lvItem
.
cchTextMax
=
lpLVItem
->
cchTextMax
;
TRACE
(
"(nItem=%d, lpLVItem=%s, isW=%d)
\n
"
,
nItem
,
debuglvitem_t
(
&
lvItem
,
isW
),
isW
);
return
LISTVIEW_SetItemT
(
infoPtr
,
&
lvItem
,
isW
);
}
...
...
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