Re: [Evolution] Keyboard shortcut to expand/collapse threads.

Use the left and right arrow keys to expand/collapse a particular thread
(doesn't expand/collapse all tho)

One thing about this is that this only works when the top of a tree is

Nope. left/right will collapse/expand the current sub-tree starting at
the selected message.

- msg A
|__msg b

will collapse when msg A is selected.
It'd be nice to be able to walk up a tree with the arrows, like some
other clients do.

For example:

- msg A
|_- msg b
  |_ msg c

When msg c is selected, press left, left to collapse instead of up, up,
It's more intuitive (imho) to walk up and down a tree with the up and
down keys, and right and left (expanding and collapsing) with the
respective keys.

It probably is more intuitive, as you are simply used to it. (BTW: Which
application does it this way and how does it handle the scenario below?)

The method you just described means, that the (actually, a) subtree of
the *parent* node will be collapsed.

Imagine this tree:

[-] root
    [-] child A
        [ ] grandchild
    [ ] child B

As it *is*: There is no expand/collapse action available for
"grandchild", as "grandchild" has no children. You can collapse the
sub-tree of "child A", as it has a child, leading to this:

[-] root
    [+] child A
    [ ] child B

What you explained above: Having the focus on "grandchild" and hitting
left twice will result in "grandchild" being collapsed into his parent
(first left) and the same for "child A" (second left). This will lead to
a weird and undefined tree -- as the sub-tree "child A" is collapsed,
but the sub-tree "child B" is *not*.

[?] root
    [ ] child B

Conclusion: You can always collapse the *entire* sub-tree of any node,
resulting in the node being displayed, but none of its children. (This
even works for the leafs, as they are a sub-tree without children.)


char *t="\10pse\0r\0dtu\0  ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4";
main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1:
(c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]