[Libreoffice-commits] core.git: svtools/source
Niklas Johansson
sleeping.pillow at gmail.com
Sun Aug 31 09:37:16 PDT 2014
svtools/source/contnr/svimpbox.cxx | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
New commits:
commit a6f78bf8fd5dc768cc8c37ca717d7bad8fe2dc81
Author: Niklas Johansson <sleeping.pillow at gmail.com>
Date: Sun Aug 17 20:53:47 2014 +0200
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.
Change-Id: Ibd04cf5329b4d226aac102d214a45e45811982e7
Reviewed-on: https://gerrit.libreoffice.org/10956
Reviewed-by: Thomas Arnhold <thomas at arnhold.org>
Tested-by: Thomas Arnhold <thomas at arnhold.org>
diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx
index 99ca76f..e0718ac 100644
--- a/svtools/source/contnr/svimpbox.cxx
+++ b/svtools/source/contnr/svimpbox.cxx
@@ -2237,8 +2237,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*/ ) )
@@ -2304,8 +2309,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;
More information about the Libreoffice-commits
mailing list