[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