[Libreoffice-commits] core.git: 2 commits - sfx2/inc sfx2/source

Cédric Bosdonnat cedric.bosdonnat at free.fr
Mon Mar 25 10:21:27 PDT 2013


 sfx2/inc/sfx2/thumbnailview.hxx       |    1 
 sfx2/source/control/thumbnailview.cxx |   53 ++++++++++++++++++++++++++--------
 sfx2/source/doc/templatedlg.cxx       |    2 -
 3 files changed, 44 insertions(+), 12 deletions(-)

New commits:
commit f8a3582d4cbcf6a705f724b921e370c739ecee35
Author: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
Date:   Mon Mar 25 17:58:49 2013 +0100

    fdo#62659: only select items in ThumbnailView on TabStop
    
    Change-Id: I024df8520f0daf2cc2e9e5f041e1ff18cb3689ec

diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 400b5ab..49ca699 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -126,6 +126,7 @@ void ThumbnailView::ImplDeleteItems()
     }
 
     mItemList.clear();
+    mFilteredItemList.clear();
 }
 
 void ThumbnailView::ImplInitSettings( bool bFont, bool bForeground, bool bBackground )
@@ -677,17 +678,20 @@ void ThumbnailView::Paint( const Rectangle &aRect)
 
 void ThumbnailView::GetFocus()
 {
-    // Select the first item if nothing selected
-    int nSelected = -1;
-    for (size_t i = 0, n = mItemList.size(); i < n && nSelected == -1; ++i)
+    if(GETFOCUS_TAB & GetGetFocusFlags())
     {
-        if (mItemList[i]->isSelected())
-            nSelected = i;
-    }
+        // Select the first item if nothing selected
+        int nSelected = -1;
+        for (size_t i = 0, n = mItemList.size(); i < n && nSelected == -1; ++i)
+        {
+            if (mItemList[i]->isSelected())
+                nSelected = i;
+        }
 
-    if ( nSelected == -1 && mItemList.size( ) > 0 )
-    {
-        SelectItem( 1 );
+        if ( nSelected == -1 && mItemList.size( ) > 0 )
+        {
+            SelectItem( 1 );
+        }
     }
 
     // Tell the accessible object that we got the focus.
commit cc599e914e7ade9f10da460fc1c77ea07454d7ff
Author: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
Date:   Mon Mar 25 16:40:37 2013 +0100

    fdo#61390: allow arrow keys to show hidden thumbnail items
    
    Change-Id: I70924b4c9578122a1c5a5b6c8a67889d6d003a2e

diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 5058144..c46a854 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -273,6 +273,7 @@ protected:
     using Window::ImplInit;
 
     void CalculateItemPositions ();
+    void MakeItemVisible( sal_uInt16 nId );
 
     SFX2_DLLPRIVATE void         ImplInit();
     SFX2_DLLPRIVATE void         ImplInitSettings( bool bFont, bool bForeground, bool bBackground );
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index cc05d70..400b5ab 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -550,13 +550,40 @@ void ThumbnailView::KeyInput( const KeyEvent& rKEvt )
             Control::KeyInput( rKEvt );
     }
 
-    if ( pNext && pNext->isVisible() )
+    if ( pNext )
     {
         deselectItems();
         SelectItem(pNext->mnId);
+        MakeItemVisible(pNext->mnId);
     }
 }
 
+void ThumbnailView::MakeItemVisible( sal_uInt16 nItemId )
+{
+    // Get the item row
+    size_t nPos = 0;
+    bool bFound = false;
+    for ( size_t i = 0; !bFound && i < mFilteredItemList.size(); ++i )
+    {
+        ThumbnailViewItem* pItem = mFilteredItemList[i];
+        if ( pItem->mnId == nItemId )
+        {
+            nPos = i;
+            bFound = true;
+        }
+    }
+    sal_uInt16 nRow = nPos / mnCols;
+
+    // Move the visible rows as little as possible to include that one
+    if ( nRow < mnFirstLine )
+        mnFirstLine = nRow;
+    else if ( nRow > mnFirstLine + mnVisLines )
+        mnFirstLine = nRow - mnVisLines;
+
+    CalculateItemPositions();
+    Invalidate();
+}
+
 void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
 {
     if ( rMEvt.IsLeft() )
@@ -700,11 +727,11 @@ void ThumbnailView::LoseFocus()
 
 void ThumbnailView::Resize()
 {
+    Control::Resize();
     CalculateItemPositions();
 
     if ( IsReallyVisible() && IsUpdateMode() )
         Invalidate();
-    Control::Resize();
 }
 
 void ThumbnailView::StateChanged( StateChangedType nType )
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 5f18109..93740f1 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -332,7 +332,7 @@ void SfxTemplateManagerDlg::Resize()
     Point aViewPos = maView->GetPosPixel();
     aViewPos.setY(nToolbarsHeight);
     aViewPos.setX(0);
-    Size aThumbSize(aWinSize.getWidth(), maTabControl.GetTabPageSizePixel().getWidth() - aViewPos.getY());
+    Size aThumbSize(aWinSize.getWidth(), maTabControl.GetTabPageSizePixel().getHeight() - aViewPos.getY());
     maView->SetPosSizePixel(aViewPos, aThumbSize);
 
     if (aWinSize.getHeight() < aViewPos.getY() + aThumbSize.getHeight() + PADDING_DLG_BORDER)


More information about the Libreoffice-commits mailing list