summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorNiklas Johansson <sleeping.pillow@gmail.com>2014-08-17 20:53:47 +0200
committerAndras Timar <andras.timar@collabora.com>2014-09-15 17:07:48 +0200
commit2b0cddf1ff276da8790dd5f59a7e1f5e6c3a5566 (patch)
tree3c6152b2d9c68084f143a1442857bfad9f249f46 /svtools
parent972258cec384491c5f45918b6153e3c66e372caf (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.cxx22
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;