diff options
author | Niklas Johansson <sleeping.pillow@gmail.com> | 2014-08-17 20:53:47 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-09-15 17:07:48 +0200 |
commit | 2b0cddf1ff276da8790dd5f59a7e1f5e6c3a5566 (patch) | |
tree | 3c6152b2d9c68084f143a1442857bfad9f249f46 /svtools | |
parent | 972258cec384491c5f45918b6153e3c66e372caf (diff) |
Treeview may lose focus when left/right arrow is used
In a treeview, for example the hierarchal view of the
styles and formatting panel, if your not on a node that is
expandable or collapsable when you press the left or right
arrow key, the focus will move away from the tree view in
a very awkward way. This patch makes the control work more
like a native treeview.
At this point I don't feel confident about the surrounding
code to avoid the code duplication that this patch adds.
Reviewed-on: https://gerrit.libreoffice.org/10956
Reviewed-by: Thomas Arnhold <thomas@arnhold.org>
Tested-by: Thomas Arnhold <thomas@arnhold.org>
(cherry picked from commit a6f78bf8fd5dc768cc8c37ca717d7bad8fe2dc81)
Change-Id: Ibd04cf5329b4d226aac102d214a45e45811982e7
Reviewed-on: https://gerrit.libreoffice.org/11255
Reviewed-by: Thomas Arnhold <thomas@arnhold.org>
Tested-by: Thomas Arnhold <thomas@arnhold.org>
(cherry picked from commit bee7674a602123229b62cad23536f103496a5298)
Reviewed-on: https://gerrit.libreoffice.org/11310
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/contnr/svimpbox.cxx | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx index 361868141ff4..610c93920da2 100644 --- a/svtools/source/contnr/svimpbox.cxx +++ b/svtools/source/contnr/svimpbox.cxx @@ -2233,8 +2233,13 @@ bool SvImpLBox::KeyInput( const KeyEvent& rKEvt) case KEY_RIGHT: { - if( bSubLstOpLR && IsNowExpandable() ) - pView->Expand( pCursor ); + if( bSubLstOpLR ) + { + // only try to expand if sublist is expandable, + // otherwise ignore the key press + if( IsNowExpandable() ) + pView->Expand( pCursor ); + } else if ( bIsCellFocusEnabled && pCursor ) { if ( nCurTabPos < ( pView->TabCount() - 1 /*!2*/ ) ) @@ -2300,8 +2305,17 @@ bool SvImpLBox::KeyInput( const KeyEvent& rKEvt) } } } - else if( bSubLstOpLR && IsExpandable() ) - pView->Collapse( pCursor ); + else if( bSubLstOpLR ) + { + if( IsExpandable() && pView->IsExpanded( pCursor ) ) + pView->Collapse( pCursor ); + else + { + pNewCursor = pView->GetParent( pCursor ); + if( pNewCursor ) + SetCursor( pNewCursor ); + } + } else bKeyUsed = false; break; |