Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
36c8db8c
Commit
36c8db8c
authored
Sep 22, 2000
by
Chris Morgan
Committed by
Alexandre Julliard
Sep 22, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix behavior of TVS_SINGLEEXPAND style broken in Corel merge. Optimize
redrawing in TREEVIEW_SetItemA() to redraw only if the item changes.
parent
a99ce7ef
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
25 deletions
+38
-25
treeview.c
dlls/comctl32/treeview.c
+38
-25
No files found.
dlls/comctl32/treeview.c
View file @
36c8db8c
...
@@ -1860,8 +1860,10 @@ static LRESULT
...
@@ -1860,8 +1860,10 @@ static LRESULT
TREEVIEW_SetItemA
(
TREEVIEW_INFO
*
infoPtr
,
LPTVITEMEXA
tvItem
)
TREEVIEW_SetItemA
(
TREEVIEW_INFO
*
infoPtr
,
LPTVITEMEXA
tvItem
)
{
{
TREEVIEW_ITEM
*
wineItem
;
TREEVIEW_ITEM
*
wineItem
;
TREEVIEW_ITEM
originalItem
;
wineItem
=
tvItem
->
hItem
;
wineItem
=
tvItem
->
hItem
;
TRACE
(
"item %d,mask %x
\n
"
,
TREEVIEW_GetItemIndex
(
infoPtr
,
wineItem
),
TRACE
(
"item %d,mask %x
\n
"
,
TREEVIEW_GetItemIndex
(
infoPtr
,
wineItem
),
tvItem
->
mask
);
tvItem
->
mask
);
...
@@ -1871,6 +1873,9 @@ TREEVIEW_SetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
...
@@ -1871,6 +1873,9 @@ TREEVIEW_SetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
if
(
!
TREEVIEW_DoSetItem
(
infoPtr
,
wineItem
,
tvItem
))
if
(
!
TREEVIEW_DoSetItem
(
infoPtr
,
wineItem
,
tvItem
))
return
FALSE
;
return
FALSE
;
/* store the orignal item values */
originalItem
=
*
wineItem
;
/* If the text or TVIS_BOLD was changed, and it is visible, recalculate. */
/* If the text or TVIS_BOLD was changed, and it is visible, recalculate. */
if
((
tvItem
->
mask
&
TVIF_TEXT
if
((
tvItem
->
mask
&
TVIF_TEXT
||
(
tvItem
->
mask
&
TVIF_STATE
&&
tvItem
->
stateMask
&
TVIS_BOLD
))
||
(
tvItem
->
mask
&
TVIF_STATE
&&
tvItem
->
stateMask
&
TVIS_BOLD
))
...
@@ -1885,18 +1890,22 @@ TREEVIEW_SetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
...
@@ -1885,18 +1890,22 @@ TREEVIEW_SetItemA(TREEVIEW_INFO *infoPtr, LPTVITEMEXA tvItem)
/* The refresh updates everything, but we can't wait until then. */
/* The refresh updates everything, but we can't wait until then. */
TREEVIEW_ComputeItemInternalMetrics
(
infoPtr
,
wineItem
);
TREEVIEW_ComputeItemInternalMetrics
(
infoPtr
,
wineItem
);
if
(
tvItem
->
mask
&
TVIF_INTEGRAL
)
/* if any of the items values changed, redraw the item */
{
if
(
memcmp
(
&
originalItem
,
wineItem
,
sizeof
(
TREEVIEW_ITEM
)))
TREEVIEW_RecalculateVisibleOrder
(
infoPtr
,
wineItem
);
{
TREEVIEW_UpdateScrollBars
(
infoPtr
);
if
(
tvItem
->
mask
&
TVIF_INTEGRAL
)
{
TREEVIEW_RecalculateVisibleOrder
(
infoPtr
,
wineItem
);
TREEVIEW_UpdateScrollBars
(
infoPtr
);
TREEVIEW_QueueRefresh
(
infoPtr
);
TREEVIEW_QueueRefresh
(
infoPtr
);
}
}
else
else
{
{
TREEVIEW_UpdateScrollBars
(
infoPtr
);
TREEVIEW_UpdateScrollBars
(
infoPtr
);
TREEVIEW_QueueItemRefresh
(
infoPtr
,
wineItem
);
TREEVIEW_QueueItemRefresh
(
infoPtr
,
wineItem
);
}
}
}
}
}
return
TRUE
;
return
TRUE
;
...
@@ -3717,23 +3726,22 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
...
@@ -3717,23 +3726,22 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
*/
*/
TREEVIEW_SendTreeviewNotify
(
infoPtr
,
TVN_SINGLEEXPAND
,
TVIF_HANDLE
|
TVIF_PARAM
,
TREEVIEW_SendTreeviewNotify
(
infoPtr
,
TVN_SINGLEEXPAND
,
TVIF_HANDLE
|
TVIF_PARAM
,
0
,
ht
.
hItem
,
0
);
0
,
ht
.
hItem
,
0
);
/*
/*
* Close the previous selection all the way to the root
* Close the previous selection all the way to the root
* as long as the new selection is not a child
* as long as the new selection is not a child
*/
*/
if
((
infoPtr
->
selectedItem
)
if
((
infoPtr
->
selectedItem
)
&&
(
infoPtr
->
selectedItem
!=
ht
.
hItem
))
&&
(
infoPtr
->
selectedItem
!=
ht
.
hItem
))
{
{
BOOL
closeit
=
TRUE
;
BOOL
closeit
=
TRUE
;
SelItem
=
ht
.
hItem
;
SelItem
=
ht
.
hItem
;
while
(
closeit
&&
SelItem
)
/* determine of the hitItem is a child of the currently selected item */
while
(
closeit
&&
SelItem
&&
TREEVIEW_ValidItem
(
infoPtr
,
SelItem
)
&&
(
SelItem
!=
infoPtr
->
root
))
{
{
closeit
=
(
SelItem
!=
infoPtr
->
selectedItem
);
closeit
=
(
SelItem
!=
infoPtr
->
selectedItem
);
SelItem
=
SelItem
->
parent
;
if
(
TREEVIEW_ValidItem
(
infoPtr
,
SelItem
->
parent
))
SelItem
=
SelItem
->
parent
;
}
}
if
(
closeit
)
if
(
closeit
)
...
@@ -3741,12 +3749,10 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
...
@@ -3741,12 +3749,10 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
if
(
TREEVIEW_ValidItem
(
infoPtr
,
infoPtr
->
selectedItem
))
if
(
TREEVIEW_ValidItem
(
infoPtr
,
infoPtr
->
selectedItem
))
SelItem
=
infoPtr
->
selectedItem
;
SelItem
=
infoPtr
->
selectedItem
;
while
(
(
SelItem
)
&&
(
SelItem
!=
ht
.
hItem
))
while
(
SelItem
&&
(
SelItem
!=
ht
.
hItem
)
&&
TREEVIEW_ValidItem
(
infoPtr
,
SelItem
)
&&
(
SelItem
!=
infoPtr
->
root
))
{
{
TREEVIEW_Expand
(
infoPtr
,
SelItem
,
(
WPARAM
)
TVE_COLLAPSE
,
TREEVIEW_Collapse
(
infoPtr
,
SelItem
,
FALSE
,
FALSE
);
FALSE
);
SelItem
=
SelItem
->
parent
;
if
(
TREEVIEW_ValidItem
(
infoPtr
,
SelItem
->
parent
))
SelItem
=
SelItem
->
parent
;
}
}
}
}
}
}
...
@@ -3756,8 +3762,9 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
...
@@ -3756,8 +3762,9 @@ TREEVIEW_LButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam)
*/
*/
TREEVIEW_Expand
(
infoPtr
,
ht
.
hItem
,
TVE_TOGGLE
,
FALSE
);
TREEVIEW_Expand
(
infoPtr
,
ht
.
hItem
,
TVE_TOGGLE
,
FALSE
);
}
}
else
TREEVIEW_DoSelectItem
(
infoPtr
,
TVGN_CARET
,
ht
.
hItem
,
TVC_BYMOUSE
);
/* Select the current item */
TREEVIEW_DoSelectItem
(
infoPtr
,
TVGN_CARET
,
ht
.
hItem
,
TVC_BYMOUSE
);
}
}
else
if
(
ht
.
flags
&
TVHT_ONITEMSTATEICON
)
else
if
(
ht
.
flags
&
TVHT_ONITEMSTATEICON
)
{
{
...
@@ -3849,7 +3856,7 @@ TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -3849,7 +3856,7 @@ TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
hOldFont
=
SelectObject
(
hdc
,
infoPtr
->
hFont
);
hOldFont
=
SelectObject
(
hdc
,
infoPtr
->
hFont
);
GetTextExtentPoint32A
(
hdc
,
dragItem
->
pszText
,
lstrlenA
(
dragItem
->
pszText
),
GetTextExtentPoint32A
(
hdc
,
dragItem
->
pszText
,
lstrlenA
(
dragItem
->
pszText
),
&
size
);
&
size
);
TRACE
(
"%
d %
d %s %d
\n
"
,
size
.
cx
,
size
.
cy
,
dragItem
->
pszText
,
TRACE
(
"%
ld %l
d %s %d
\n
"
,
size
.
cx
,
size
.
cy
,
dragItem
->
pszText
,
lstrlenA
(
dragItem
->
pszText
));
lstrlenA
(
dragItem
->
pszText
));
hbmp
=
CreateCompatibleBitmap
(
htopdc
,
size
.
cx
,
size
.
cy
);
hbmp
=
CreateCompatibleBitmap
(
htopdc
,
size
.
cx
,
size
.
cy
);
hOldbmp
=
SelectObject
(
hdc
,
hbmp
);
hOldbmp
=
SelectObject
(
hdc
,
hbmp
);
...
@@ -3999,7 +4006,13 @@ TREEVIEW_EnsureVisible(TREEVIEW_INFO *infoPtr, HTREEITEM item, BOOL bHScroll)
...
@@ -3999,7 +4006,13 @@ TREEVIEW_EnsureVisible(TREEVIEW_INFO *infoPtr, HTREEITEM item, BOOL bHScroll)
if
(
!
ISVISIBLE
(
item
))
if
(
!
ISVISIBLE
(
item
))
{
{
/* Expand parents as necessary. */
/* Expand parents as necessary. */
HTREEITEM
parent
=
item
->
parent
;
HTREEITEM
parent
;
/* see if we are trying to ensure that root is vislble */
if
((
item
!=
infoPtr
->
root
)
&&
TREEVIEW_ValidItem
(
infoPtr
,
item
))
parent
=
item
->
parent
;
else
parent
=
item
;
/* this item is the topmost item */
while
(
parent
!=
infoPtr
->
root
)
while
(
parent
!=
infoPtr
->
root
)
{
{
...
...
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