On 04.09.2013 19:22, Sergey Azarkevich wrote:
> Disclaimer: I attach patch, but it is only DRAFT. If it will be agreed
> to apply, then I test it more heavily.
> I try improve behavior of 'Choose items' dialog by:
> 1. When tree item inserted into tree, it inherit parent check state
> I think it is logical - expand checked item and see all children
> checked. Expand unchecked item and see all items unchecked
> As side effect all items initially checked (inherit root check state).
Use this instead:
// inherit parents check state
if (m_RepoTree.GetRootItem() == hParent)
> 2. Introduce pseudo tri-state behavior (but not look):
> If user click unchecked item, then only this item checked (depth - 'Only
> this item')
> If user click checked item and all children unchecked - check whole subtree
> If user click checked item and not all children unchecked - uncheck
> whole subtree
> This rule not concern when:
> * several items selected in tree.
> it can confuse user when click can lead to different effects: some items
> will be checked, some unchecked. check/uncheck will be applied
> recursevily to all selected items and theirs children
> * item collapsed
> it will confuse user when check will be reset only from second try
> without other side effects.
> also if item still not loaded, then we will not remember special
> semi-checked mode.
I think this looks very good. Almost ready to commit.
Just a few nitpicks:
CheckTreeItemParents /rename/to/ CheckParentsOfTreeItem
CheckTreeItemRecurse /rename/to/ CheckTreeItemRecursive
Also the line
is not necessary:
void CRepositoryBrowser::CheckTreeItemRecurse( HTREEITEM hItem, bool
// process item
// process all children
HTREEITEM hChild = m_RepoTree.GetChildItem(hItem);
// the following line is not necessary!
hChild = m_RepoTree.GetNextItem(hChild, TVGN_NEXT);
IsAllChildrenUnchecked /rename/to/ AreAllChildrenUnchecked
Or maybe even rename to
HaveAllChildrenSameCheckState(HTREEITEM hItem, bool bChecked = false)
and check if all items are checked or unchecked, depending on the
Also looking at your patch I realize that I should maybe change the
m_blockEvents from a bool to an int and treat it as a counter: that way
we can avoid problem with recursion.
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest interface to (Sub)version control
/_/ \_\ http://tortoisesvn.net
To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2013-09-04 20:46:36 CEST