[Libreoffice-commits] core.git: Branch 'libreoffice-5-1-3' - sc/source

Caolán McNamara caolanm at redhat.com
Wed Apr 20 13:29:54 UTC 2016


 sc/source/ui/view/gridwin4.cxx |   12 ++++++++++++
 1 file changed, 12 insertions(+)

New commits:
commit 2dad4d0aee8b6eaf74e98f879e76369d34476443
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 20 11:55:01 2016 +0100

    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
    (cherry picked from commit 29a9f433c268414747d8ec7343fc2b5987971738)
    Reviewed-on: https://gerrit.libreoffice.org/24259
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit e3d8431d00116e9aeb5570b15324a26258afba00)
    Reviewed-on: https://gerrit.libreoffice.org/24262
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index e15cb1e..731c560 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))


More information about the Libreoffice-commits mailing list