sc/source/ui/inc/viewdata.hxx | 1 sc/source/ui/view/tabview2.cxx | 10 ++++- sc/source/ui/view/tabview3.cxx | 69 ++++++++++++++++++++++++++--------------- sc/source/ui/view/viewdata.cxx | 5 -- 4 files changed, 54 insertions(+), 31 deletions(-)
New commits: commit 333c293185d0c8f0d0fc02ef69523252b4f00628 Author: Marco Cecchetti <[email protected]> Date: Thu Nov 17 12:50:19 2016 +0100 LOK - Calc: use the whole doc as visible area in ScTabView::PaintArea This workaround is needed since the visible area in core is not the same which is used in the client. Change-Id: I82b23e689000c4d8106ffa01ed082ae3d629b1be diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 14fbad9..e9259a5 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -2193,32 +2193,53 @@ void ScTabView::PaintArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCRO nCol2 = nEndCol; nRow2 = nEndRow; - SCCOL nScrX = aViewData.GetPosX( eHWhich ); - SCROW nScrY = aViewData.GetPosY( eVWhich ); - if (nCol1 < nScrX) - nCol1 = nScrX; - if (nCol2 < nScrX) + if (comphelper::LibreOfficeKit::isActive()) { - if ( eMode == SC_UPDATE_ALL ) // for UPDATE_ALL, paint anyway - nCol2 = nScrX; // (because of extending strings to the right) - else - bOut = true; // completely outside the window + SCCOL nLastX = 0; + SCROW nLastY = 0; + SCTAB nTab = aViewData.GetTabNo(); + ScDocument& rDoc = aViewData.GetDocShell()->GetDocument(); + if (rDoc.GetPrintArea(nTab, nLastX, nLastY, false)) + { + nCol2 = nLastX; + nRow2 = nLastY; + } + + if (nCol2 > MAXCOL) nCol2 = MAXCOL; + if (nRow2 > MAXROW) nRow2 = MAXROW; + bOut = nCol1 > nCol2 || nRow1 > nRow2; + } + else + { + + SCCOL nScrX = aViewData.GetPosX( eHWhich ); + SCROW nScrY = aViewData.GetPosY( eVWhich ); + + if (nCol1 < nScrX) + nCol1 = nScrX; + if (nCol2 < nScrX) + { + if ( eMode == SC_UPDATE_ALL ) // for UPDATE_ALL, paint anyway + nCol2 = nScrX; // (because of extending strings to the right) + else + bOut = true; // completely outside the window + } + if (nRow1 < nScrY) + nRow1 = nScrY; + if (nRow2 < nScrY) + bOut = true; + + SCCOL nLastX = nScrX + aViewData.VisibleCellsX( eHWhich ) + 1; + SCROW nLastY = nScrY + aViewData.VisibleCellsY( eVWhich ) + 1; + if (nCol1 > nLastX) + bOut = true; + if (nCol2 > nLastX) + nCol2 = nLastX; + if (nRow1 > nLastY) + bOut = true; + if (nRow2 > nLastY) + nRow2 = nLastY; } - if (nRow1 < nScrY) - nRow1 = nScrY; - if (nRow2 < nScrY) - bOut = true; - - SCCOL nLastX = nScrX + aViewData.VisibleCellsX( eHWhich ) + 1; - SCROW nLastY = nScrY + aViewData.VisibleCellsY( eVWhich ) + 1; - if (nCol1 > nLastX) - bOut = true; - if (nCol2 > nLastX) - nCol2 = nLastX; - if (nRow1 > nLastY) - bOut = true; - if (nRow2 > nLastY) - nRow2 = nLastY; if (bOut) continue; commit 3d2655ee883a4b77caffa268d457cdaa3a3ff21b Author: Marco Cecchetti <[email protected]> Date: Thu Nov 17 12:42:34 2016 +0100 LOK - calc: now PgUp/PgDn offset is used only when PgUp/PgDn are pressed Change-Id: I340d747021bc794361d6b8eff76335345b60010c diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx index f61b0bf..d3b80fc 100644 --- a/sc/source/ui/inc/viewdata.hxx +++ b/sc/source/ui/inc/viewdata.hxx @@ -415,6 +415,7 @@ public: /// Force page size for PgUp/PgDown to overwrite the computation based on m_aVisArea. void ForcePageUpDownOffset(long nTwips) { m_nLOKPageUpDownOffset = nTwips; } + long GetPageUpDownOffset() { return m_nLOKPageUpDownOffset; } void KillEditView(); void ResetEditView(); diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx index 2d4dbe5..9b6d123 100644 --- a/sc/source/ui/view/tabview2.cxx +++ b/sc/source/ui/view/tabview2.cxx @@ -45,6 +45,7 @@ #include "tabprotection.hxx" #include "markdata.hxx" #include "inputopt.hxx" +#include <comphelper/lok.hxx> namespace { @@ -628,6 +629,11 @@ void ScTabView::GetPageMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, SCsCOL& rPage ScHSplitPos eWhichX = WhichH( eWhich ); ScVSplitPos eWhichY = WhichV( eWhich ); + sal_uInt16 nScrSizeY = SC_SIZE_NONE; + if (comphelper::LibreOfficeKit::isActive() && aViewData.GetPageUpDownOffset() > 0) { + nScrSizeY = ScViewData::ToPixel( aViewData.GetPageUpDownOffset(), aViewData.GetPPTX() ); + } + SCsCOL nPageX; SCsROW nPageY; if (nMovX >= 0) @@ -636,9 +642,9 @@ void ScTabView::GetPageMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, SCsCOL& rPage nPageX = ((SCsCOL) aViewData.CellsAtX( nCurX, -1, eWhichX )) * nMovX; if (nMovY >= 0) - nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, 1, eWhichY )) * nMovY; + nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, 1, eWhichY, nScrSizeY )) * nMovY; else - nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, -1, eWhichY )) * nMovY; + nPageY = ((SCsROW) aViewData.CellsAtY( nCurY, -1, eWhichY, nScrSizeY )) * nMovY; if (nMovX != 0 && nPageX == 0) nPageX = (nMovX>0) ? 1 : -1; if (nMovY != 0 && nPageY == 0) nPageY = (nMovY>0) ? 1 : -1; diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index dc9a48c..86814e7 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -1735,11 +1735,6 @@ 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) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
