diff options
Diffstat (limited to 'toolkit/source/awt/vclxregion.cxx')
-rw-r--r-- | toolkit/source/awt/vclxregion.cxx | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/toolkit/source/awt/vclxregion.cxx b/toolkit/source/awt/vclxregion.cxx index 7ed03bfc08a2..2375befe403a 100644 --- a/toolkit/source/awt/vclxregion.cxx +++ b/toolkit/source/awt/vclxregion.cxx @@ -141,15 +141,24 @@ void VCLXRegion::xOrRegion( const ::com::sun::star::uno::Reference< ::com::sun:: { ::osl::Guard< ::osl::Mutex > aGuard( GetMutex() ); - sal_uLong nRects = maRegion.GetRectCount(); - ::com::sun::star::uno::Sequence< ::com::sun::star::awt::Rectangle > aRects( nRects ); - - Rectangle aRect; - sal_uInt32 nR = 0; - RegionHandle h = maRegion.BeginEnumRects(); - while ( maRegion.GetNextEnumRect( h, aRect ) ) - aRects.getArray()[nR++] = AWTRectangle( aRect ); - maRegion.EndEnumRects( h ); + RectangleVector aRectangles; + maRegion.GetRegionRectangles(aRectangles); + +// sal_uLong nRects = maRegion.GetRectCount(); + ::com::sun::star::uno::Sequence< ::com::sun::star::awt::Rectangle > aRects(aRectangles.size()); + sal_uInt32 a(0); + + for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); aRectIter++) + { + aRects.getArray()[a++] = AWTRectangle(*aRectIter); + } + + //Rectangle aRect; + //sal_uInt32 nR = 0; + //RegionHandle h = maRegion.BeginEnumRects(); + //while ( maRegion.GetEnumRects( h, aRect ) ) + // aRects.getArray()[nR++] = AWTRectangle( aRect ); + //maRegion.EndEnumRects( h ); return aRects; } |