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

Armin Le Grand alg at apache.org
Fri Jan 31 13:26:40 PST 2014


 vcl/win/source/gdi/salgdi.cxx |   18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

New commits:
commit 9b677819a703208a650c08186546b11f0a535fd2
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Jan 30 21:34:57 2014 +0000

    Resolves: #i12355# Corrected case that...
    
    in WinSalGraphics::setClipRegion an empty Polygon is handed over
    
    (cherry picked from commit 9957d5854dcc65db37f0631c19e3421df1311089)
    
    Change-Id: Id19a708d228d205bb1e14664c04af6eef179a5d4

diff --git a/vcl/win/source/gdi/salgdi.cxx b/vcl/win/source/gdi/salgdi.cxx
index 591909f..8402316 100644
--- a/vcl/win/source/gdi/salgdi.cxx
+++ b/vcl/win/source/gdi/salgdi.cxx
@@ -1003,13 +1003,19 @@ bool WinSalGraphics::setClipRegion( const Region& i_rClip )
         }
 
         // create clip region from ClipRgnData
-        if ( mpClipRgnData->rdh.nCount == 1 )
+        if(0 == mpClipRgnData->rdh.nCount)
+        {
+            // #i123585# region is empty; this may happen when e.g. a PolyPolygon is given
+            // that contains no polygons or only empty ones (no width/height). This is
+            // perfectly fine and we are done, except setting it (see end of method)
+        }
+        else if(1 == mpClipRgnData->rdh.nCount)
         {
             RECT* pRect = &(mpClipRgnData->rdh.rcBound);
             mhRegion = CreateRectRgn( pRect->left, pRect->top,
                                                      pRect->right, pRect->bottom );
         }
-        else if( mpClipRgnData->rdh.nCount > 1 )
+        else if(mpClipRgnData->rdh.nCount > 1)
         {
             sal_uLong nSize = mpClipRgnData->rdh.nRgnSize+sizeof(RGNDATAHEADER);
             mhRegion = ExtCreateRegion( NULL, nSize, mpClipRgnData );
@@ -1049,8 +1055,14 @@ bool WinSalGraphics::setClipRegion( const Region& i_rClip )
         //
         //bool bBla = true;
     }
+    else
+    {
+        // #i123585# See above, this is a valid case, execute it
+        SelectClipRgn( getHDC(), 0 );
+    }
 
-    return mhRegion != 0;
+    // #i123585# retval no longer dependent of mhRegion, see TaskId comments above
+    return true;
 }
 
 // -----------------------------------------------------------------------


More information about the Libreoffice-commits mailing list