sc/source/ui/view/gridwin4.cxx | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-)
New commits: commit 3a0ad5d902435a3b503d0e79a57cac57343a80e6 Author: Jan Holesovsky <[email protected]> Date: Wed Mar 18 13:11:36 2015 +0100 sc tiled editing: Clear the right area behind the editeng. Based on a patch by Henry Castro. Change-Id: Ic463c97577d521e3c2e4d6bc904c517aa564edca diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 99a8f1c..6324933 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -866,13 +866,14 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI } } - // InPlace Edit-View - // moved after EndDrawLayers() to get it outside the overlay buffer and - // on top of everything + // In-place editing - when the user is typing, we need to paint the text + // using the editeng. + // It's being done after EndDrawLayers() to get it outside the overlay + // buffer and on top of everything. if ( bEditMode && (pViewData->GetRefTabNo() == pViewData->GetTabNo()) ) { - //! use pContentDev for EditView? - rDevice.SetMapMode(MAP_PIXEL); + // get the coordinates of the area we need to clear (overpaint by + // the background) SCCOL nCol1 = pViewData->GetEditStartCol(); SCROW nRow1 = pViewData->GetEditStartRow(); SCCOL nCol2 = pViewData->GetEditEndCol(); @@ -882,12 +883,25 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI Point aStart = pViewData->GetScrPos( nCol1, nRow1, eWhich ); Point aEnd = pViewData->GetScrPos( nCol2+1, nRow2+1, eWhich ); + // don't overwrite grid long nLayoutSign = bLayoutRTL ? -1 : 1; - aEnd.X() -= 2 * nLayoutSign; // don't overwrite grid + aEnd.X() -= 2 * nLayoutSign; aEnd.Y() -= 2; - rDevice.DrawRect(Rectangle(aStart, aEnd)); - rDevice.SetMapMode(bIsTiledRendering? aDrawMode: pViewData->GetLogicMode()); + // set the correct mapmode + Rectangle aBackground(aStart, aEnd); + if (bIsTiledRendering) + { + aBackground += Point(nScrX, nScrY); + rDevice.SetMapMode(aDrawMode); + } + else + rDevice.SetMapMode(pViewData->GetLogicMode()); + + // paint the background + rDevice.DrawRect(rDevice.PixelToLogic(aBackground)); + + // paint the editeng text pEditView->Paint(rDevice.PixelToLogic(Rectangle(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH()))), &rDevice); rDevice.SetMapMode(MAP_PIXEL); } commit b3ec7f96e7bc757a4deaf7f857500df84560c2b1 Author: Henry Castro <[email protected]> Date: Wed Mar 18 12:08:47 2015 +0100 sc tiled editing: Use the correct device for PixelToLogic. Change-Id: I55e4eb784694de889d7bb0a3a6043a5a2b74239c diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 3e4ce0f..99a8f1c 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -888,7 +888,7 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI rDevice.DrawRect(Rectangle(aStart, aEnd)); rDevice.SetMapMode(bIsTiledRendering? aDrawMode: pViewData->GetLogicMode()); - pEditView->Paint(PixelToLogic(Rectangle(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH()))), &rDevice); + pEditView->Paint(rDevice.PixelToLogic(Rectangle(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH()))), &rDevice); rDevice.SetMapMode(MAP_PIXEL); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
