summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-04-20 11:55:01 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-04-20 12:00:05 +0100
commit29a9f433c268414747d8ec7343fc2b5987971738 (patch)
tree880958e82d23c37b0511efc88c27651ffd3c99b9
parent7a264c3bbaab6b32741333c6862c902930d8654c (diff)
Resolves: tdf#91778 drawing the background over an active cursor
will overwrite it, which means that when it toggles "off" afterwards, it uses invert on the freshly drawn background which will visually make it appear "on" and not off Just explictly turn it off and restore it and avoid the whole potential problem. Change-Id: Ie21d77e9d704124011e43b42c98b26eaf208eef2
-rw-r--r--sc/source/ui/view/gridwin4.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 71ad2e55a8be..05174c9248c4 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -900,6 +900,14 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
aEnd.X() -= 2 * nLayoutSign;
aEnd.Y() -= 2;
+ // toggle the cursor off if its on to ensure the cursor invert
+ // background logic remains valid after the background is cleared on
+ // the next cursor flash
+ vcl::Cursor* pCrsr = pEditView->GetCursor();
+ const bool bVisCursor = pCrsr && pCrsr->IsVisible();
+ if (bVisCursor)
+ pCrsr->Hide();
+
// set the correct mapmode
Rectangle aBackground(aStart, aEnd);
if (bIsTiledRendering)
@@ -916,6 +924,10 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
// paint the editeng text
pEditView->Paint(rDevice.PixelToLogic(Rectangle(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH()))), &rDevice);
rDevice.SetMapMode(MAP_PIXEL);
+
+ // restore the cursor it it was originally visible
+ if (bVisCursor)
+ pCrsr->Show();
}
if (pViewData->HasEditView(eWhich))