diff options
author | Pranav Kant <pranavk@collabora.com> | 2016-05-12 16:40:04 +0530 |
---|---|---|
committer | pranavk <pranavk@collabora.com> | 2016-05-12 15:02:02 +0000 |
commit | e260525220f9c3eb36383932187a2dc5b80f016d (patch) | |
tree | 3b5879418081648a5723f3ff643432fb1ba8bb26 /sc/source/ui/view | |
parent | 64e24d9bfc02910b80d77b83dcf3346eff546f96 (diff) |
sc lok: Invalidate the new extended area
Change-Id: I1fa58ca935860ed3c5983f4e6b15c9f7c8feda9b
Reviewed-on: https://gerrit.libreoffice.org/24925
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: pranavk <pranavk@collabora.com>
Diffstat (limited to 'sc/source/ui/view')
-rw-r--r-- | sc/source/ui/view/tabview3.cxx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 9315d95c087c..1c270f21ad7b 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -304,15 +304,41 @@ void ScTabView::SetCursor( SCCOL nPosX, SCROW nPosY, bool bNew ) { if (nPosX > aViewData.GetMaxTiledCol() - 10 || nPosY > aViewData.GetMaxTiledRow() - 25) { + ScDocShell* pDocSh = aViewData.GetDocShell(); + ScModelObj* pModelObj = pDocSh ? ScModelObj::getImplementation( pDocSh->GetModel() ) : nullptr; + Size aOldSize(0, 0); + if (pModelObj) + aOldSize = pModelObj->getDocumentSize(); + if (nPosX > aViewData.GetMaxTiledCol() - 10) aViewData.SetMaxTiledCol(std::max(nPosX, aViewData.GetMaxTiledCol()) + 10); if (nPosY > aViewData.GetMaxTiledRow() - 25) aViewData.SetMaxTiledRow(std::max(nPosY, aViewData.GetMaxTiledRow()) + 25); - ScDocShell* pDocSh = aViewData.GetDocShell(); + Size aNewSize(0, 0); + if (pModelObj) + aNewSize = pModelObj->getDocumentSize(); + if (pDocSh) + { pDocSh->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, ""); + + // New area extended to the right of the sheet after last column + // including overlapping area with aNewRowArea + Rectangle aNewColArea(aOldSize.getWidth(), 0, aNewSize.getWidth(), aNewSize.getHeight()); + // New area extended to the bottom of the sheet after last row + // excluding overlapping area with aNewColArea + Rectangle aNewRowArea(0, aOldSize.getHeight(), aOldSize.getWidth(), aNewSize.getHeight()); + + // Only invalidate if spreadsheet extended to the right + if (aNewColArea.getWidth()) + pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewColArea.toString().getStr()); + + // Only invalidate if spreadsheet extended to the bottom + if (aNewRowArea.getHeight()) + pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewRowArea.toString().getStr()); + } } } } |