[Libreoffice-commits] core.git: vcl/win

Tor Lillqvist tml at collabora.com
Wed Dec 30 00:33:54 PST 2015


 vcl/win/gdi/winlayout.cxx |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

New commits:
commit 7368803e540d530a157d3c4234ca5428a44cbc4a
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Dec 21 18:36:07 2015 +0200

    tdf#96420: Avoid drawing ugly black boxes on top of replacement glyphs
    
    When UniscribeLayout::DrawText() was used from MultiSalLayout to draw
    the base layout level after having drawn fallback glyphs, it
    mis-rendered the runs that contained the missing glyphs. Avoid this by
    handing the pRectToErase parameter also here.
    
    Change-Id: Ib40aa9e9e60d72db1cdd331ba03ae8230aadbba8

diff --git a/vcl/win/gdi/winlayout.cxx b/vcl/win/gdi/winlayout.cxx
index f46ae47..75d3467 100644
--- a/vcl/win/gdi/winlayout.cxx
+++ b/vcl/win/gdi/winlayout.cxx
@@ -1777,10 +1777,16 @@ void UniscribeLayout::Simplify( bool /*bIsBase*/ )
 }
 
 bool UniscribeLayout::DrawTextImpl(HDC hDC,
-                                   const Rectangle* /* pRectToErase */,
+                                   const Rectangle* pRectToErase,
                                    Point* /* pPos */,
                                    int* /* pGetNextGlypInfo */) const
 {
+    if (pRectToErase)
+    {
+        RECT aRect = { pRectToErase->Left(), pRectToErase->Top(), pRectToErase->Left()+pRectToErase->GetWidth(), pRectToErase->Top()+pRectToErase->GetHeight() };
+        FillRect(hDC, &aRect, static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH)));
+    }
+
     HFONT hOrigFont = DisableFontScaling();
 
     int nBaseClusterOffset = 0;


More information about the Libreoffice-commits mailing list