diff options
-rw-r--r-- | sc/source/ui/view/tabview3.cxx | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 41a0679408d7..d73c9bd84593 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -2220,24 +2220,38 @@ 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) + SCCOL nLastX = 0; + SCROW nLastY = 0; + + 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 + nLastX = aViewData.GetMaxTiledCol(); + nLastY = aViewData.GetMaxTiledRow(); + } + 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; + + nLastX = nScrX + aViewData.VisibleCellsX( eHWhich ) + 1; + nLastY = nScrY + aViewData.VisibleCellsY( eVWhich ) + 1; } - 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) |