[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - sc/inc sc/source

Marco Cecchetti marco.cecchetti at collabora.com
Thu Oct 6 16:38:29 UTC 2016


 sc/inc/docuno.hxx              |    3 +++
 sc/source/ui/inc/viewdata.hxx  |    5 +++++
 sc/source/ui/unoobj/docuno.cxx |   11 +++++++++++
 sc/source/ui/view/viewdata.cxx |   11 +++++++++--
 4 files changed, 28 insertions(+), 2 deletions(-)

New commits:
commit bf8355a42b6a92b5ef92543448e20df5fdeeafaf
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Thu Oct 6 17:31:15 2016 +0200

    LOK: Calc: page-up/down - cursor moves far more than a page
    
    Change-Id: I1253044f26553dab08bc2a38c706f634e9377c86
    Reviewed-on: https://gerrit.libreoffice.org/29577
    Reviewed-by: Marco Cecchetti <mrcekets at gmail.com>
    Tested-by: Marco Cecchetti <mrcekets at gmail.com>

diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 81b0924..d1b92b1 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -422,6 +422,9 @@ public:
 
     /// @see vcl::ITiledRenderable::getTrackedChanges().
     OUString getTrackedChanges() override;
+
+    /// @see vcl::ITiledRenderable::setClientVisibleArea().
+    virtual void setClientVisibleArea(const Rectangle& rRectangle) override;
 };
 
 class ScDrawPagesObj : public cppu::WeakImplHelper<
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 5c3cc9f..14b26a9 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -214,6 +214,8 @@ private:
     bool                bPagebreak:1;               // Page break preview mode
     bool                bSelCtrlMouseClick:1;       // special selection handling for ctrl-mouse-click
 
+    long                m_nLOKPageUpDownOffset;
+
     DECL_DLLPRIVATE_LINK_TYPED( EditEngineHdl, EditStatus&, void );
 
     SAL_DLLPRIVATE void          CalcPPT();
@@ -404,6 +406,9 @@ public:
     bool    IsOutlineMode   () const            { return pOptions->GetOption( VOPT_OUTLINER ); }
     void    SetOutlineMode  ( bool bNewMode )   { pOptions->SetOption( VOPT_OUTLINER, bNewMode ); }
 
+    /// Force page size for PgUp/PgDown to overwrite the computation based on m_aVisArea.
+    void ForcePageUpDownOffset(long nTwips) { m_nLOKPageUpDownOffset = nTwips; }
+
     void            KillEditView();
     void            ResetEditView();
     void            SetEditEngine( ScSplitPos eWhich,
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index b75bc52..68efb4c 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -960,6 +960,17 @@ OUString ScModelObj::getTrackedChanges()
     return aRet;
 }
 
+void ScModelObj::setClientVisibleArea(const Rectangle& rRectangle)
+{
+    ScViewData* pViewData = pDocShell->GetViewData();
+    if (!pViewData)
+        return;
+
+    // set the PgUp/PgDown offset
+    pViewData->ForcePageUpDownOffset(rRectangle.GetHeight());
+}
+
+
 void ScModelObj::initializeForTiledRendering(const css::uno::Sequence<css::beans::PropertyValue>& /*rArguments*/)
 {
     SolarMutexGuard aGuard;
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 058b992..0bf45ea 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -352,7 +352,8 @@ ScViewData::ScViewData( ScDocShell* pDocSh, ScTabViewShell* pViewSh ) :
         bIsRefMode  ( false ),
         bDelMarkValid( false ),
         bPagebreak  ( false ),
-        bSelCtrlMouseClick( false )
+        bSelCtrlMouseClick( false ),
+        m_nLOKPageUpDownOffset( 0 )
 {
     mpMarkData->SelectOneTable(0); // Sync with nTabNo
 
@@ -440,7 +441,8 @@ ScViewData::ScViewData( const ScViewData& rViewData ) :
         bIsRefMode  ( false ),
         bDelMarkValid( false ),
         bPagebreak  ( rViewData.bPagebreak ),
-        bSelCtrlMouseClick( rViewData.bSelCtrlMouseClick )
+        bSelCtrlMouseClick( rViewData.bSelCtrlMouseClick ),
+        m_nLOKPageUpDownOffset( rViewData.m_nLOKPageUpDownOffset )
 {
 
     SetGridMode     ( rViewData.IsGridMode() );
@@ -1705,6 +1707,11 @@ SCROW ScViewData::CellsAtY( SCsROW nPosY, SCsROW nDir, ScVSplitPos eWhichY, sal_
 
     if (nScrSizeY == SC_SIZE_NONE) nScrSizeY = (sal_uInt16) aScrSize.Height();
 
+    if (comphelper::LibreOfficeKit::isActive() && m_nLOKPageUpDownOffset > 0)
+    {
+        nScrSizeY = ToPixel( m_nLOKPageUpDownOffset, nPPTY );
+    }
+
     SCROW nY;
 
     if (nDir==1)


More information about the Libreoffice-commits mailing list