[ooo-build-commit] Branch 'ooo/master' - 3 commits - drawinglayer/inc drawinglayer/source sfx2/source svx/inc svx/source

Jan Holesovsky kendy at kemper.freedesktop.org
Mon Jul 27 18:03:19 PDT 2009


 drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx |    8 -
 drawinglayer/source/primitive2d/polygonprimitive2d.cxx                |   11 -
 drawinglayer/source/processor2d/canvasprocessor.cxx                   |    5 
 drawinglayer/source/processor2d/helperchartrenderer.cxx               |   70 ++++++++-
 drawinglayer/source/processor2d/helperchartrenderer.hxx               |   13 +
 drawinglayer/source/processor2d/linegeometryextractor2d.cxx           |    4 
 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx            |   40 +++--
 drawinglayer/source/processor2d/vclpixelprocessor2d.cxx               |    5 
 drawinglayer/source/processor3d/zbufferprocessor3d.cxx                |    4 
 sfx2/source/appl/shutdownicon.cxx                                     |    4 
 svx/inc/edtspell.hxx                                                  |    3 
 svx/inc/svx/editobj.hxx                                               |    3 
 svx/inc/svx/outlobj.hxx                                               |    3 
 svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx                   |   21 ++
 svx/source/cui/page.cxx                                               |   46 +++---
 svx/source/cui/page.h                                                 |    4 
 svx/source/editeng/editobj.cxx                                        |   76 +++++++++-
 svx/source/editeng/editobj2.hxx                                       |   13 -
 svx/source/editeng/edtspell.cxx                                       |   25 +++
 svx/source/engine3d/scene3d.cxx                                       |   13 +
 svx/source/gallery2/galobj.cxx                                        |    3 
 svx/source/outliner/outlobj.cxx                                       |   17 ++
 svx/source/sdr/attribute/sdrtextattribute.cxx                         |    5 
 svx/source/sdr/primitive2d/sdrattributecreator.cxx                    |   28 ++-
 svx/source/svdraw/svdcrtv.cxx                                         |    9 +
 svx/source/svdraw/svdobj.cxx                                          |   68 ++++----
 svx/source/svdraw/svdopath.cxx                                        |   17 +-
 svx/source/svdraw/svdotextdecomposition.cxx                           |   16 +-
 svx/source/svdraw/svdtext.cxx                                         |   11 +
 svx/source/svdraw/svdxcgv.cxx                                         |   12 +
 svx/source/table/viewcontactoftableobj.cxx                            |   25 +++
 svx/source/unodraw/UnoGraphicExporter.cxx                             |   33 +++-
 32 files changed, 491 insertions(+), 124 deletions(-)

New commits:
commit 7e019b75f6aa20fd7b84f66bd0efac8bb91b1e5a
Author: Jens-Heiner Rechtien <hr at openoffice.org>
Date:   Mon Jul 27 17:18:56 2009 +0000

    CWS-TOOLING: integrate CWS cmcfixes60
    2009-07-03 21:56:04 +0200 cmc  r273718 : #i103313# org.openoffice.System not org.openoffice.Setup for looking up default locale
    2009-07-01 17:15:31 +0200 cmc  r273606 : #i102636# extra rounding precision
    2009-07-01 11:04:47 +0200 cmc  r273556 : #i100000# workaround build issue
    2009-06-30 17:27:41 +0200 cmc  r273525 : #i102636# extra rounding precision
    2009-06-30 09:42:46 +0200 cmc  r273491 : #i102634# numbers got mixed up somehow
    2009-06-30 09:19:56 +0200 cmc  r273490 : CWS-TOOLING: rebase CWS cmcfixes60 to trunk at 273468 (milestone: DEV300:m51)
    2009-06-22 12:54:45 +0200 cmc  r273217 : #i103000# micro-optimization to remove unused symbols from fpicker etc.
    2009-06-19 10:06:21 +0200 cmc  r273148 : #i102932# put same type into an Any as we take out of that Any, affect 64bit
    2009-06-13 17:38:42 +0200 cmc  r272957 : #i102742# gcc44 warnings, return of const primitive type doesn't mean anything
    2009-06-13 16:22:40 +0200 cmc  r272955 : #i102737# keep existing logic and silence new gcc44 warnings
    2009-06-13 16:06:25 +0200 cmc  r272954 : #i102736# confirm existing logic to be gcc44 warnings free
    2009-06-10 19:40:24 +0200 cmc  r272837 : #i87461# 64bit color lossage
    2009-06-10 19:23:38 +0200 cmc  r272836 : #i102636# tidy up UI rounding errors

diff --git a/svx/source/cui/page.cxx b/svx/source/cui/page.cxx
index 8e44ebc..2ebbf8b 100644
--- a/svx/source/cui/page.cxx
+++ b/svx/source/cui/page.cxx
@@ -596,18 +596,24 @@ void SvxPageDescPage::Reset( const SfxItemSet& rSet )
     aBspWin.SetSize( Size( ConvertLong_Impl( aPaperSize.Width(), eUnit ),
                            ConvertLong_Impl( aPaperSize.Height(), eUnit ) ) );
 
-    // Werte in die Edits eintragen
-    SetMetricValue( aPaperHeightEdit, aPaperSize.Height(), eUnit );
-    SetMetricValue( aPaperWidthEdit, aPaperSize.Width(), eUnit );
-    aPaperSizeBox.Clear();
+    aPaperSize = OutputDevice::LogicToLogic(aPaperSize, (MapUnit)eUnit, MAP_100TH_MM);
+    if ( bLandscape )
+        Swap( aPaperSize );
+
+    // Actual Paper Format
+    Paper ePaper = SvxPaperInfo::GetSvxPaper( aPaperSize, MAP_100TH_MM, TRUE );
 
-    // Papierformate
-    Size aTmpSize = aPaperSize;
+    if ( PAPER_USER != ePaper )
+        aPaperSize = SvxPaperInfo::GetPaperSize( ePaper, MAP_100TH_MM );
 
     if ( bLandscape )
-        Swap( aTmpSize );
-    // aktuelles Format
-    Paper ePaper = SvxPaperInfo::GetSvxPaper( aTmpSize, (MapUnit)eUnit, TRUE );
+        Swap( aPaperSize );
+
+    // Werte in die Edits eintragen
+    SetMetricValue( aPaperHeightEdit, aPaperSize.Height(), SFX_MAPUNIT_100TH_MM );
+    SetMetricValue( aPaperWidthEdit, aPaperSize.Width(), SFX_MAPUNIT_100TH_MM );
+    aPaperSizeBox.Clear();
+
     USHORT nActPos = LISTBOX_ENTRY_NOTFOUND;
     USHORT nAryId = RID_SVXSTRARY_PAPERSIZE_STD;
 
@@ -1044,19 +1050,19 @@ IMPL_LINK( SvxPageDescPage, PaperSizeSelect_Impl, ListBox *, pBox )
 
     if ( ePaper != PAPER_USER )
     {
-        Size aSize( SvxPaperInfo::GetPaperSize( ePaper ) );
+        Size aSize( SvxPaperInfo::GetPaperSize( ePaper, MAP_100TH_MM ) );
 
         if ( aLandscapeBtn.IsChecked() )
             Swap( aSize );
 
-        if ( aSize.Height() < aPaperHeightEdit.GetMin( FUNIT_TWIP ) )
+        if ( aSize.Height() < aPaperHeightEdit.GetMin( FUNIT_100TH_MM ) )
             aPaperHeightEdit.SetMin(
-                aPaperHeightEdit.Normalize( aSize.Height() ), FUNIT_TWIP );
-        if ( aSize.Width() < aPaperWidthEdit.GetMin( FUNIT_TWIP ) )
+                aPaperHeightEdit.Normalize( aSize.Height() ), FUNIT_100TH_MM );
+        if ( aSize.Width() < aPaperWidthEdit.GetMin( FUNIT_100TH_MM ) )
             aPaperWidthEdit.SetMin(
-                aPaperWidthEdit.Normalize( aSize.Width() ), FUNIT_TWIP );
-        SetMetricValue( aPaperHeightEdit, aSize.Height(), SFX_MAPUNIT_TWIP );
-        SetMetricValue( aPaperWidthEdit, aSize.Width(), SFX_MAPUNIT_TWIP );
+                aPaperWidthEdit.Normalize( aSize.Width() ), FUNIT_100TH_MM );
+        SetMetricValue( aPaperHeightEdit, aSize.Height(), SFX_MAPUNIT_100TH_MM );
+        SetMetricValue( aPaperWidthEdit, aSize.Width(), SFX_MAPUNIT_100TH_MM );
 
         // R"ander ggf. neu berechnen
         CalcMargin_Impl();
@@ -1145,12 +1151,12 @@ IMPL_LINK( SvxPageDescPage, SwapOrientation_Impl, RadioButton *, pBtn )
     {
         bLandscape = aLandscapeBtn.IsChecked();
 
-        const long lWidth = GetCoreValue( aPaperWidthEdit, SFX_MAPUNIT_TWIP );
-        const long lHeight = GetCoreValue( aPaperHeightEdit, SFX_MAPUNIT_TWIP );
+        const long lWidth = GetCoreValue( aPaperWidthEdit, SFX_MAPUNIT_100TH_MM );
+        const long lHeight = GetCoreValue( aPaperHeightEdit, SFX_MAPUNIT_100TH_MM );
 
         // swap with and height
-        SetMetricValue( aPaperWidthEdit, lHeight, SFX_MAPUNIT_TWIP );
-        SetMetricValue( aPaperHeightEdit, lWidth, SFX_MAPUNIT_TWIP );
+        SetMetricValue( aPaperWidthEdit, lHeight, SFX_MAPUNIT_100TH_MM );
+        SetMetricValue( aPaperHeightEdit, lWidth, SFX_MAPUNIT_100TH_MM );
 
         // recalculate margins if necessary
         CalcMargin_Impl();
diff --git a/svx/source/cui/page.h b/svx/source/cui/page.h
index dcbed63..1df26b1 100644
--- a/svx/source/cui/page.h
+++ b/svx/source/cui/page.h
@@ -60,7 +60,7 @@
 #define PAPERSIZE_MONARCH   	25
 #define PAPERSIZE_COM675  		26
 #define PAPERSIZE_COM9  		27
-#define PAPERSIZE_COM10 		29
+#define PAPERSIZE_COM10 		28
 #define PAPERSIZE_COM11 		29
 #define PAPERSIZE_COM12 		30
 #define PAPERSIZE_KAI16 		31
@@ -68,7 +68,7 @@
 #define PAPERSIZE_KAI32BIG 		33
 #define PAPERSIZE_B4_JIS		34
 #define PAPERSIZE_B5_JIS		35
-#define PAPERSIZE_B6_JIS		38
+#define PAPERSIZE_B6_JIS		36
 
 #endif
 
commit 63f73773c262a2b3c70bc378b3e3088049595bfd
Author: Jens-Heiner Rechtien <hr at openoffice.org>
Date:   Mon Jul 27 16:24:52 2009 +0000

    CWS-TOOLING: integrate CWS aw073
    2009-07-16 11:21:19 +0200 aw  r274036 : corrections after resync
    2009-07-15 13:34:18 +0200 aw  r274009 : CWS-TOOLING: rebase CWS aw073 to trunk at 273858 (milestone: DEV300:m52)
    2009-07-01 20:04:27 +0200 aw  r273613 : CWS-TOOLING: rebase CWS aw073 to trunk at 273468 (milestone: DEV300:m51)
    2009-06-24 11:51:03 +0200 aw  r273324 : #i102062# added using statement for solaris compiler
    2009-06-23 12:53:50 +0200 aw  r273278 : #i100158# force filled polygons to closed state
    2009-06-23 12:28:33 +0200 aw  r273276 : #i100158#, #i102371# corrected all (mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) shortcuts to support line/fill and to be not used when FillMode is not overpaint
    2009-06-23 12:15:14 +0200 aw  r273274 : #i100158# added PolyPolygon support for snapPointsOfHorizontalOrVerticalEdges helper
    2009-06-22 17:28:33 +0200 aw  r273244 : #i101508# added taking care of cell's distance-to-border values for cell text primitive creation
    2009-06-22 12:59:10 +0200 aw  r273218 : #i102253# applied patch from OD (see task)
    2009-06-18 17:00:52 +0200 aw  r273125 : #i102251# added EE_CNTRL_ONLINESPELLING switch off at DrawOutliner during GraphicExporter::GetGraphic
    2009-06-18 14:35:57 +0200 aw  r273120 : #i102241# added mergeToSinglePolyPolygon usage to SdrObject::ImpConvertToContourObj
    2009-06-18 14:35:20 +0200 aw  r273119 : #i102241# improved PolygonStrokePrimitive2D::createLocalDecomposition
    2009-06-18 14:34:49 +0200 aw  r273118 : #i102241# Made B2DCubicBezier::testAndSolveTrivialBezier() numerically more stable
    2009-06-17 16:11:21 +0200 aw  r273078 : #i102062# added compare support for OutlireParaObject's WrongList in an extra method; using in primitive comparators
    2009-06-16 19:10:18 +0200 aw  r273037 : #i101957# corrected: offset needs to be added before rotation and shear
    2009-06-16 18:58:43 +0200 aw  r273035 : #i101957# added needed offset by object width to SdrTextObj::impDecomposeStretchTextPrimitive for vertical texts
    2009-06-16 18:35:55 +0200 aw  r273034 : #i101941# corrected object initialisation for 3D Scenes on Clone operator
    2009-06-16 16:07:30 +0200 aw  r273024 : #i101811# extended renderChartPrimitive2D to create a correct embedding in a new MapMode
    2009-06-12 19:38:07 +0200 aw  r272940 : #i101734# added test code to experiment on demand with more complex transformations for virtual objects than only translations
    2009-06-12 19:37:07 +0200 aw  r272939 : #i101734# corrected SvtGraphicStroke preparation in MetaFile renderer (AFAP)
    2009-06-12 16:31:55 +0200 aw  r272931 : #i101648# re-enabled object creation with objecttype OBJ_NONE for SW Frame creation
    2009-06-12 13:59:05 +0200 aw  r272917 : #i101598# supported AAed single line paint in VCL
    2009-06-12 11:34:25 +0200 aw  r272907 : #i101598# adapted Graphic::GetBitmap() usage
    2009-06-10 16:34:19 +0200 aw  r272830 : #i101598# added VCL_DLLPUBLIC to parameter class
    2009-06-10 16:30:27 +0200 aw  r272829 : #i101598# extended calls to Graphic::GetBitmap/Ex where conversions to Bitmap objects is needed to user defined parameters like AntiAlisasing
    2009-06-10 16:28:44 +0200 aw  r272828 : #i101598# extended Graphic::GetBitmap/Ex interfaces to transport raster conversion parameters since these calls potentially need to rasterconvert a contained MetaFile
    2009-06-09 16:26:40 +0200 aw  r272781 : #i100945# checked in proposed patch for now
    2009-06-08 18:01:42 +0200 aw  r272742 : #i101239# teached BinTextObject to register at EditEngineItemPool sub-pool, not on given pool directly

diff --git a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
index ba733bb..c3ed548 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
@@ -48,8 +48,8 @@ namespace drawinglayer
         class LineGeometryExtractor2D : public BaseProcessor2D
         {
         private:
-            basegfx::B2DPolyPolygon					maExtractedHairlines;
-            basegfx::B2DPolyPolygon					maExtractedLineFills;
+            std::vector< basegfx::B2DPolygon >		maExtractedHairlines;
+            std::vector< basegfx::B2DPolyPolygon >	maExtractedLineFills;
 
             // bitfield
             unsigned                                mbInLineGeometry : 1;
@@ -61,8 +61,8 @@ namespace drawinglayer
             LineGeometryExtractor2D(const geometry::ViewInformation2D& rViewInformation);
             virtual ~LineGeometryExtractor2D();
             
-            const basegfx::B2DPolyPolygon& getExtractedHairlines() const { return maExtractedHairlines; }
-            const basegfx::B2DPolyPolygon& getExtractedLineFills() const { return maExtractedLineFills; }
+            const std::vector< basegfx::B2DPolygon >& getExtractedHairlines() const { return maExtractedHairlines; }
+            const std::vector< basegfx::B2DPolyPolygon >& getExtractedLineFills() const { return maExtractedLineFills; }
         };
     } // end of namespace processor2d
 } // end of namespace drawinglayer
diff --git a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
index dd0cbb3..ad9a235 100644
--- a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
@@ -239,17 +239,19 @@ namespace drawinglayer
         {
             if(getB2DPolygon().count())
             {
+                // #i102241# try to simplify before usage
+                const basegfx::B2DPolygon aB2DPolygon(basegfx::tools::simplifyCurveSegments(getB2DPolygon()));
                 basegfx::B2DPolyPolygon aHairLinePolyPolygon;
 
                 if(0.0 == getStrokeAttribute().getFullDotDashLen())
                 {
                     // no line dashing, just copy
-                    aHairLinePolyPolygon.append(getB2DPolygon());
+                    aHairLinePolyPolygon.append(aB2DPolygon);
                 }
                 else
                 {
                     // apply LineStyle
-                    basegfx::tools::applyLineDashing(getB2DPolygon(), getStrokeAttribute().getDotDashArray(), &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
+                    basegfx::tools::applyLineDashing(aB2DPolygon, getStrokeAttribute().getDotDashArray(), &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
                 }
 
                 const sal_uInt32 nCount(aHairLinePolyPolygon.count());
@@ -263,12 +265,9 @@ namespace drawinglayer
 
                     for(sal_uInt32 a(0L); a < nCount; a++)
                     {
-                        // AW: New version of createAreaGeometry; now creates bezier polygons
+                        // New version of createAreaGeometry; now creates bezier polygons
                         aAreaPolyPolygon.append(basegfx::tools::createAreaGeometry(
                             aHairLinePolyPolygon.getB2DPolygon(a), fHalfLineWidth, aLineJoin));
-                        //const basegfx::B2DPolyPolygon aNewPolyPolygon(basegfx::tools::createAreaGeometryForPolygon(
-                        //	aHairLinePolyPolygon.getB2DPolygon(a), fHalfLineWidth, aLineJoin, fMiterMinimumAngle));
-                        //aAreaPolyPolygon.append(aNewPolyPolygon);
                     }
 
                     // prepare return value
diff --git a/drawinglayer/source/processor2d/canvasprocessor.cxx b/drawinglayer/source/processor2d/canvasprocessor.cxx
index 4fd65b5..77cb2b3 100644
--- a/drawinglayer/source/processor2d/canvasprocessor.cxx
+++ b/drawinglayer/source/processor2d/canvasprocessor.cxx
@@ -2106,7 +2106,10 @@ namespace drawinglayer
                        mpOutputDevice->Push(PUSH_MAPMODE);
                     mpOutputDevice->SetMapMode(maOriginalMapMode);
                     
-                    if(!renderChartPrimitive2D(rChartPrimitive, *mpOutputDevice))
+                    if(!renderChartPrimitive2D(
+                        rChartPrimitive, 
+                        *mpOutputDevice,
+                        getViewInformation2D()))
                     {
                         // fallback to decomposition (MetaFile)
                         process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
diff --git a/drawinglayer/source/processor2d/helperchartrenderer.cxx b/drawinglayer/source/processor2d/helperchartrenderer.cxx
index 3d1f6a1..383f678 100644
--- a/drawinglayer/source/processor2d/helperchartrenderer.cxx
+++ b/drawinglayer/source/processor2d/helperchartrenderer.cxx
@@ -41,6 +41,7 @@
 #include <svtools/chartprettypainter.hxx>
 #include <com/sun/star/lang/XUnoTunnel.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -50,7 +51,10 @@ using namespace com::sun::star;
 
 namespace drawinglayer
 {
-    bool renderChartPrimitive2D(const primitive2d::ChartPrimitive2D& rChartCandidate, OutputDevice& rOutputDevice)
+    bool renderChartPrimitive2D(
+        const primitive2d::ChartPrimitive2D& rChartCandidate, 
+        OutputDevice& rOutputDevice,
+        const geometry::ViewInformation2D& rViewInformation2D)
     {
         bool bChartRendered(false);
 
@@ -73,14 +77,74 @@ namespace drawinglayer
                 
                     if( pPrettyPainter )
                     {
-                        // create logic object range
+                        // create logic object range; do NOT use ObjectTransformation for this 
+                        // (rViewInformation2D.getObjectTransformation()), only the logic object 
+                        // size is wanted
                         basegfx::B2DRange aObjectRange(0.0, 0.0, 1.0, 1.0);
                         aObjectRange.transform(rChartCandidate.getTransformation());
                         const Rectangle aRectangle(
                                 (sal_Int32)aObjectRange.getMinX(), (sal_Int32)aObjectRange.getMinY(), 
                                 (sal_Int32)aObjectRange.getMaxX(), (sal_Int32)aObjectRange.getMaxY());
 
-                        bChartRendered = pPrettyPainter->DoPaint(&rOutputDevice, aRectangle);
+                        // #i101811#
+                        if(rViewInformation2D.getObjectTransformation().isIdentity())
+                        {
+                            // no embedding in another transfromation, just paint with existing
+                            // MapMode. This is just a shortcut; using the below code will also
+                            // work; it has just a neutral ObjectTransformation
+                            bChartRendered = pPrettyPainter->DoPaint(&rOutputDevice, aRectangle);
+                        }
+                        else
+                        {
+                            // rViewInformation2D.getObjectTransformation() is used and
+                            // needs to be expressed in the MapMode for the PrettyPainter;
+                            // else it would call ChartModelHelper::setPageSize(...) with the
+                            // changed size what really will change the chart model and leads
+                            // to re-layouts and re-formattings
+                            const MapMode aOldMapMode(rOutputDevice.GetMapMode());
+                            basegfx::B2DVector aVTScale, aScale, aTranslate;
+                            double fRotate, fShearX;
+
+                            // get basic scaling with current MapMode (aVTScale), containing
+                            // mapping for set MapUnit (e.g. for 100th mm, the basic scale is
+                            // not 1.0, 1.0). This is needed since this scale is included in
+                            // the ObjectToView Transformation and needs to be removed (see
+                            // correction below) to re-create a MapMode
+                            rOutputDevice.SetMapMode(aOldMapMode.GetMapUnit());
+                            rOutputDevice.GetViewTransformation().decompose(aVTScale, aTranslate, fRotate, fShearX);
+
+                            // get complete ObjectToView Transformation scale and translate from current
+                            // transformation chain (combined view and object transform)
+                            rViewInformation2D.getObjectToViewTransformation().decompose(aScale, aTranslate, fRotate, fShearX);
+
+                            // assert when shear and/or rotation is used
+                            OSL_ENSURE(basegfx::fTools::equalZero(fRotate), "Chart PrettyPrinting with unsupportable rotation (!)");
+                            OSL_ENSURE(basegfx::fTools::equalZero(fShearX), "Chart PrettyPrinting with unsupportable shear (!)");
+
+                            // clean scale and translate from basic scaling (DPI, etc...)
+                            // since this will implicitely be part of the to-be-created MapMode
+                            const basegfx::B2DTuple aBasicCleaner(
+                                basegfx::fTools::equalZero(aVTScale.getX()) ? 1.0 : 1.0 / aVTScale.getX(),
+                                basegfx::fTools::equalZero(aVTScale.getY()) ? 1.0 : 1.0 / aVTScale.getY());
+                            aScale *= aBasicCleaner;
+                            aTranslate *= aBasicCleaner;
+
+                            // for MapMode, take scale out of translation
+                            const basegfx::B2DTuple aScaleRemover(
+                                basegfx::fTools::equalZero(aScale.getX()) ? 1.0 : 1.0 / aScale.getX(),
+                                basegfx::fTools::equalZero(aScale.getY()) ? 1.0 : 1.0 / aScale.getY());
+                            aTranslate *= aScaleRemover;
+
+                            // build new MapMode
+                            const MapMode aNewMapMode(aOldMapMode.GetMapUnit(),
+                                Point(basegfx::fround(aTranslate.getX()), basegfx::fround(aTranslate.getY())),
+                                Fraction(aScale.getX()), Fraction(aScale.getY()));
+
+                            // use, paint, restore
+                            rOutputDevice.SetMapMode(aNewMapMode);
+                            bChartRendered = pPrettyPainter->DoPaint(&rOutputDevice, aRectangle);
+                            rOutputDevice.SetMapMode(aOldMapMode);
+                        }
                     }
                 }
             }
diff --git a/drawinglayer/source/processor2d/helperchartrenderer.hxx b/drawinglayer/source/processor2d/helperchartrenderer.hxx
index de13431..e670ccc 100644
--- a/drawinglayer/source/processor2d/helperchartrenderer.hxx
+++ b/drawinglayer/source/processor2d/helperchartrenderer.hxx
@@ -43,16 +43,21 @@
 
 class OutputDevice;
 
-namespace drawinglayer { namespace primitive2d {
-    class ChartPrimitive2D;
-}}
+namespace drawinglayer { namespace primitive2d { class ChartPrimitive2D; }}
+namespace drawinglayer { namespace geometry { class ViewInformation2D; }}
 
 //////////////////////////////////////////////////////////////////////////////
 // support chart PrettyPrinter usage from primitives
 
 namespace drawinglayer
 {
-    bool renderChartPrimitive2D(const primitive2d::ChartPrimitive2D& rChartCandidate, OutputDevice& rOutputDevice);
+    // #i101811#
+    // Added current ViewInformation2D to take evtl. changed
+    // ObjectTransformation into account
+    bool renderChartPrimitive2D(
+        const primitive2d::ChartPrimitive2D& rChartCandidate, 
+        OutputDevice& rOutputDevice,
+        const geometry::ViewInformation2D& rViewInformation2D);
 
 } // end of namespace drawinglayer
 
diff --git a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx b/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
index 11fce31..fc7740e 100644
--- a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
+++ b/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
@@ -86,7 +86,7 @@ namespace drawinglayer
                         const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolygonHairlinePrimitive2D& >(rCandidate));
                         basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
                         aLocalPolygon.transform(getViewInformation2D().getObjectTransformation());
-                        maExtractedHairlines.append(aLocalPolygon);
+                        maExtractedHairlines.push_back(aLocalPolygon);
                     }
                     break;
                 }
@@ -98,7 +98,7 @@ namespace drawinglayer
                         const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate(static_cast< const primitive2d::PolyPolygonColorPrimitive2D& >(rCandidate));
                         basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
                         aLocalPolyPolygon.transform(getViewInformation2D().getObjectTransformation());
-                        maExtractedLineFills.append(aLocalPolyPolygon);
+                        maExtractedLineFills.push_back(aLocalPolyPolygon);
                     }
                     break;
                 }
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
index f940012..74baf37 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
@@ -247,8 +247,8 @@ namespace drawinglayer
             if(rB2DPolygon.count() && !mnSvtGraphicStrokeCount)
             {
                 basegfx::BColor aStrokeColor;
-                PolyPolygon aStartPolyPolygon;
-                PolyPolygon aEndPolyPolygon;
+                basegfx::B2DPolyPolygon aStartArrow;
+                basegfx::B2DPolyPolygon aEndArrow;
                 
                 if(pColor)
                 {
@@ -271,11 +271,9 @@ namespace drawinglayer
                     {
                         fPolyLength = basegfx::tools::getLength(rB2DPolygon);
                         
-                        const basegfx::B2DPolyPolygon aStartArrow(basegfx::tools::createAreaGeometryForLineStartEnd(
+                        aStartArrow = basegfx::tools::createAreaGeometryForLineStartEnd(
                             rB2DPolygon, pStart->getB2DPolyPolygon(), true, pStart->getWidth(), 
-                            fPolyLength, pStart->isCentered() ? 0.5 : 0.0, 0));
-                        
-                        aStartPolyPolygon = PolyPolygon(aStartArrow);
+                            fPolyLength, pStart->isCentered() ? 0.5 : 0.0, 0);
                     }
 
                     if(pEnd && pEnd->isActive())
@@ -285,11 +283,9 @@ namespace drawinglayer
                             fPolyLength = basegfx::tools::getLength(rB2DPolygon);
                         }
 
-                        const basegfx::B2DPolyPolygon aEndArrow(basegfx::tools::createAreaGeometryForLineStartEnd(
+                        aEndArrow = basegfx::tools::createAreaGeometryForLineStartEnd(
                             rB2DPolygon, pEnd->getB2DPolyPolygon(), false, pEnd->getWidth(), 
-                            fPolyLength, pEnd->isCentered() ? 0.5 : 0.0, 0));
-                        
-                        aEndPolyPolygon = PolyPolygon(aEndArrow);
+                            fPolyLength, pEnd->isCentered() ? 0.5 : 0.0, 0);
                     }
                 }
 
@@ -341,10 +337,23 @@ namespace drawinglayer
                     aDashArray = pStrokeAttribute->getDotDashArray();
                 }
 
+                // #i101734# apply current object transformation to created geometry.
+                // This is a partial fix. When a object transformation is used which
+                // e.g. contains a scaleX != scaleY, an unproportional scaling would
+                // have to be applied to the evtl. existing fat line. The current
+                // concept of PDF export and SvtGraphicStroke usage does simply not 
+                // allow handling such definitions. The only clean way would be to
+                // add the transformation to SvtGraphicStroke and to handle it there
+                basegfx::B2DPolygon aB2DPolygon(rB2DPolygon);
+
+                aB2DPolygon.transform(maCurrentTransformation);
+                aStartArrow.transform(maCurrentTransformation);
+                aEndArrow.transform(maCurrentTransformation);
+
                 pRetval = new SvtGraphicStroke(
-                    Polygon(rB2DPolygon),
-                    aStartPolyPolygon,
-                    aEndPolyPolygon,
+                    Polygon(aB2DPolygon),
+                    PolyPolygon(aStartArrow),
+                    PolyPolygon(aEndArrow),
                     mfCurrentUnifiedTransparence,
                     fLineWidth,
                     SvtGraphicStroke::capButt,
@@ -1623,7 +1632,10 @@ namespace drawinglayer
                     // ChartPrimitive2D
                     const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
 
-                    if(!renderChartPrimitive2D(rChartPrimitive, *mpOutputDevice))
+                    if(!renderChartPrimitive2D(
+                        rChartPrimitive, 
+                        *mpOutputDevice,
+                        getViewInformation2D()))
                     {
                         // fallback to decomposition (MetaFile)
                         process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 5dffca0..705670c 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -426,7 +426,10 @@ namespace drawinglayer
                        mpOutputDevice->Push(PUSH_MAPMODE);
                     mpOutputDevice->SetMapMode(maOriginalMapMode);
                     
-                    if(!renderChartPrimitive2D(rChartPrimitive, *mpOutputDevice))
+                    if(!renderChartPrimitive2D(
+                        rChartPrimitive, 
+                        *mpOutputDevice,
+                        getViewInformation2D()))
                     {
                         // fallback to decomposition (MetaFile)
                         process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
diff --git a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
index 36f94a6..0fa9b9b 100644
--- a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
@@ -141,6 +141,10 @@ namespace
             }
 
             aRetval = BitmapEx(aContent, aAlpha);
+
+            // #i101811# set PrefMapMode and PrefSize at newly created Bitmap
+            aRetval.SetPrefMapMode(MAP_100TH_MM);
+            aRetval.SetPrefSize(Size(nWidth, nHeight));
         }
 
         return aRetval;
diff --git a/svx/inc/edtspell.hxx b/svx/inc/edtspell.hxx
index f7b642c..f2d0717 100644
--- a/svx/inc/edtspell.hxx
+++ b/svx/inc/edtspell.hxx
@@ -133,6 +133,9 @@ public:
     void	MarkWrongsInvalid();
 
     WrongList*	Clone() const;
+
+    // #i102062#
+    bool operator==(const WrongList& rCompare) const;
 };
 
 inline void WrongList::InsertWrong( const WrongRange& rWrong, USHORT nPos )
diff --git a/svx/inc/svx/editobj.hxx b/svx/inc/svx/editobj.hxx
index 42ca4c6..90a13b7 100644
--- a/svx/inc/svx/editobj.hxx
+++ b/svx/inc/svx/editobj.hxx
@@ -121,6 +121,9 @@ public:
     virtual void		ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
 
     bool				operator==( const EditTextObject& rCompare ) const;
+
+    // #i102062#
+    bool isWrongListEqual(const EditTextObject& rCompare) const;
 };
 
 #endif	// _EDITOBJ_HXX
diff --git a/svx/inc/svx/outlobj.hxx b/svx/inc/svx/outlobj.hxx
index f99a95a..470f173 100644
--- a/svx/inc/svx/outlobj.hxx
+++ b/svx/inc/svx/outlobj.hxx
@@ -67,6 +67,9 @@ public:
     bool operator==(const OutlinerParaObject& rCandidate) const;
     bool operator!=(const OutlinerParaObject& rCandidate) const { return !operator==(rCandidate); }
 
+    // #i102062#
+    bool isWrongListEqual(const OutlinerParaObject& rCompare) const;
+
     // outliner mode access
     sal_uInt16 GetOutlinerMode() const;
     void SetOutlinerMode(sal_uInt16 nNew);
diff --git a/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
index 057e7ba..097eecb 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
@@ -71,7 +71,16 @@ namespace drawinglayer
         attribute::SdrLineStartEndAttribute* createNewSdrLineStartEndAttribute(const SfxItemSet& rSet, double fWidth);
         attribute::SdrShadowAttribute* createNewSdrShadowAttribute(const SfxItemSet& rSet);
         attribute::SdrFillAttribute* createNewSdrFillAttribute(const SfxItemSet& rSet);
-        attribute::SdrTextAttribute* createNewSdrTextAttribute(const SfxItemSet& rSet, const SdrText& rText);
+        
+        // #i101508# Support handing over given text-to-border distances
+        attribute::SdrTextAttribute* createNewSdrTextAttribute(
+            const SfxItemSet& rSet, 
+            const SdrText& rText,
+            const sal_Int32* pLeft = 0,
+            const sal_Int32* pUpper = 0,
+            const sal_Int32* pRight = 0,
+            const sal_Int32* pLower = 0);
+
         attribute::FillGradientAttribute* createNewTransparenceGradientAttribute(const SfxItemSet& rSet);
         attribute::SdrFillBitmapAttribute* createNewSdrFillBitmapAttribute(const SfxItemSet& rSet);
         attribute::SdrShadowTextAttribute* createNewSdrShadowTextAttribute(
@@ -83,7 +92,15 @@ namespace drawinglayer
         attribute::SdrLineFillShadowAttribute* createNewSdrLineFillShadowAttribute(const SfxItemSet& rSet, bool bSuppressFill);
         attribute::SdrSceneAttribute* createNewSdrSceneAttribute(const SfxItemSet& rSet);
         attribute::SdrLightingAttribute* createNewSdrLightingAttribute(const SfxItemSet& rSet);
-        attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(const SfxItemSet& rSet, const SdrText* pSdrText);
+
+        // #i101508# Support handing over given text-to-border distances
+        attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(
+            const SfxItemSet& rSet, 
+            const SdrText* pSdrText,
+            const sal_Int32* pLeft = 0,
+            const sal_Int32* pUpper = 0,
+            const sal_Int32* pRight = 0,
+            const sal_Int32* pLower = 0);
 
         // helpers
         void calculateRelativeCornerRadius(sal_Int32 nRadius, const ::basegfx::B2DRange& rObjectRange, double& rfCornerRadiusX, double& rfCornerRadiusY);
diff --git a/svx/source/editeng/editobj.cxx b/svx/source/editeng/editobj.cxx
index a9d3bca..d8f0a33 100644
--- a/svx/source/editeng/editobj.cxx
+++ b/svx/source/editeng/editobj.cxx
@@ -253,6 +253,18 @@ void ContentInfo::DestroyLoadStoreTempInfos()
 }
 */
 
+// #i102062#
+bool ContentInfo::isWrongListEqual(const ContentInfo& rCompare) const
+{
+    if(GetWrongList() == rCompare.GetWrongList())
+        return true;
+
+    if(!GetWrongList() || !rCompare.GetWrongList())
+        return false;
+
+    return (*GetWrongList() == *rCompare.GetWrongList());
+}
+
 bool ContentInfo::operator==( const ContentInfo& rCompare ) const
 {
     if( (aText == rCompare.aText) && 
@@ -566,6 +578,12 @@ bool EditTextObject::operator==( const EditTextObject& rCompare ) const
     return static_cast< const BinTextObject* >( this )->operator==( static_cast< const BinTextObject& >( rCompare ) );
 }
 
+// #i102062#
+bool EditTextObject::isWrongListEqual(const EditTextObject& rCompare) const
+{
+    return static_cast< const BinTextObject* >(this)->isWrongListEqual(static_cast< const BinTextObject& >(rCompare));
+}
+
 // from SfxItemPoolUser
 void BinTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
 {
@@ -599,6 +617,23 @@ void BinTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
     }
 }
 
+EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool)
+{
+    EditEngineItemPool* pRetval = dynamic_cast< EditEngineItemPool* >(pPool);
+
+    while(!pRetval && pPool && pPool->GetSecondaryPool())
+    {
+        pPool = pPool->GetSecondaryPool();
+
+        if(pPool)
+        {
+            pRetval = dynamic_cast< EditEngineItemPool* >(pPool);
+        }
+    }
+
+    return pRetval;
+}
+
 BinTextObject::BinTextObject( SfxItemPool* pP ) :
     EditTextObject( EE_FORMAT_BIN ),
     SfxItemPoolUser()
@@ -608,9 +643,17 @@ BinTextObject::BinTextObject( SfxItemPool* pP ) :
     nUserType = 0;
     nObjSettings = 0;
     pPortionInfo = 0;
-    if ( pP )
+    
+    // #i101239# ensure target is a EditEngineItemPool, else
+    // fallback to pool ownership. This is needed to ensure that at
+    // pool destruction time of an alien pool, the pool is still alive.
+    // When registering would happen at an alien pool which just uses an
+    // EditEngineItemPool as some sub-pool, that pool could already
+    // be decoupled and deleted whcih would lead to crashes.
+    pPool =	getEditEngineItemPool(pP);
+    
+    if ( pPool )
     {
-        pPool =	pP;
         bOwnerOfPool = FALSE;
     }
     else
@@ -621,6 +664,7 @@ BinTextObject::BinTextObject( SfxItemPool* pP ) :
 
     if(!bOwnerOfPool && pPool)
     {
+        // it is sure now that the pool is an EditEngineItemPool
         pPool->AddSfxItemPoolUser(*this);
     }
 
@@ -641,9 +685,12 @@ BinTextObject::BinTextObject( const BinTextObject& r ) :
     nScriptType = r.nScriptType;
     pPortionInfo = NULL;	// PortionInfo nicht kopieren
     bStoreUnicodeStrings = FALSE;
+
     if ( !r.bOwnerOfPool )
     {
-        // Dann den Pool mitverwenden
+        // reuse alien pool; this must be a EditEngineItemPool
+        // since there is no other way to construct a BinTextObject
+        // than it's regular constructor where that is ensured
         pPool =	r.pPool;
         bOwnerOfPool = FALSE;
     }
@@ -656,6 +703,7 @@ BinTextObject::BinTextObject( const BinTextObject& r ) :
 
     if(!bOwnerOfPool && pPool)
     {
+        // it is sure now that the pool is an EditEngineItemPool
         pPool->AddSfxItemPoolUser(*this);
     }
 
@@ -1589,6 +1637,28 @@ bool BinTextObject::operator==( const BinTextObject& rCompare ) const
     return true;
 }
 
+// #i102062#
+bool BinTextObject::isWrongListEqual(const BinTextObject& rCompare) const
+{
+    if(GetContents().Count() != rCompare.GetContents().Count())
+    {
+        return false;
+    }
+
+    for(USHORT a(0); a < GetContents().Count(); a++)
+    {
+        const ContentInfo& rCandA(*GetContents().GetObject(a));
+        const ContentInfo& rCandB(*rCompare.GetContents().GetObject(a));
+
+        if(!rCandA.isWrongListEqual(rCandB))
+        {
+            return false;
+        }
+    }
+
+    return true;
+}
+
 #define CHARSETMARKER	0x9999
 
 void __EXPORT BinTextObject::CreateData300( SvStream& rIStream )
diff --git a/svx/source/editeng/editobj2.hxx b/svx/source/editeng/editobj2.hxx
index c61a198..b37ceab 100644
--- a/svx/source/editeng/editobj2.hxx
+++ b/svx/source/editeng/editobj2.hxx
@@ -181,13 +181,10 @@ public:
 
     WrongList*			GetWrongList() const			{ return pWrongs; }
     void				SetWrongList( WrongList* p )	{ pWrongs = p; }
-
-/* cl removed because not needed anymore since binfilter
-    LoadStoreTempInfos* GetLoadStoreTempInfos() const   { return pTempLoadStoreInfos; }
-    void                CreateLoadStoreTempInfos();
-    void                DestroyLoadStoreTempInfos();
-*/
     bool				operator==( const ContentInfo& rCompare ) const;
+
+    // #i102062#
+    bool isWrongListEqual(const ContentInfo& rCompare) const;
 };
 
 typedef ContentInfo* ContentInfoPtr;
@@ -198,6 +195,7 @@ SV_DECL_PTRARR( ContentInfoList, ContentInfoPtr, 1, 4 )
 class BinTextObject : public EditTextObject, public SfxItemPoolUser
 {
     using EditTextObject::operator==;
+    using EditTextObject::isWrongListEqual;
 
 private:
     ContentInfoList			aContents;
@@ -303,6 +301,9 @@ public:
 
     bool					operator==( const BinTextObject& rCompare ) const;
 
+    // #i102062#
+    bool isWrongListEqual(const BinTextObject& rCompare) const;
+
     // from SfxItemPoolUser
     virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
 };
diff --git a/svx/source/editeng/edtspell.cxx b/svx/source/editeng/edtspell.cxx
index cad0602..2fb9264 100644
--- a/svx/source/editeng/edtspell.cxx
+++ b/svx/source/editeng/edtspell.cxx
@@ -476,6 +476,31 @@ WrongList*	WrongList::Clone() const
     return pNew;
 }
 
+// #i102062#
+bool WrongList::operator==(const WrongList& rCompare) const
+{
+    // cleck direct members
+    if(GetInvalidStart() != rCompare.GetInvalidStart() 
+        || GetInvalidEnd() != rCompare.GetInvalidEnd()
+        || Count() != rCompare.Count())
+    {
+        return false;
+    }
+
+    for(USHORT a(0); a < Count(); a++)
+    {
+        const WrongRange& rCandA(GetObject(a));
+        const WrongRange& rCandB(rCompare.GetObject(a));
+
+        if(rCandA.nStart != rCandB.nStart
+            || rCandA.nEnd != rCandB.nEnd)
+        {
+            return false;
+        }
+    }
+
+    return true;
+}
 
 #ifdef DBG_UTIL
 sal_Bool WrongList::DbgIsBuggy() const
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index d29984c..5079f52 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -538,6 +538,19 @@ void E3dScene::operator=(const SdrObject& rObj)
 
     // #110988#
     ImpCleanup3DDepthMapper();
+
+    // #i101941#
+    // After a Scene as model object is cloned, the used
+    // ViewContactOfE3dScene is created and partially used
+    // to calculate Bound/SnapRects, but - since quite some
+    // values are buffered at the VC - not really well
+    // initialized. It would be possible to always watch for
+    // preconditions of buffered data, but this would be expensive
+    // and would create a lot of short living data structures.
+    // It is currently better to flush that data, e.g. by using
+    // ActionChanged at the VC which will for this class
+    // flush that cached data and initalize it's valid reconstruction
+    GetViewContact().ActionChanged();
 }
 
 /*************************************************************************
diff --git a/svx/source/gallery2/galobj.cxx b/svx/source/gallery2/galobj.cxx
index dc6540f..a4b9cc0 100644
--- a/svx/source/gallery2/galobj.cxx
+++ b/svx/source/gallery2/galobj.cxx
@@ -134,7 +134,8 @@ BOOL SgaObject::CreateThumb( const Graphic& rGraphic )
         else
             aSize.Height() = (sal_Int32)( S_THUMB / fFactor );
 
-        aThumbBmp = rGraphic.GetBitmap( &aSize );
+        const GraphicConversionParameters aParameters(aSize);
+        aThumbBmp = rGraphic.GetBitmap(aParameters);
 
         if( !aThumbBmp.IsEmpty() )
         {
diff --git a/svx/source/outliner/outlobj.cxx b/svx/source/outliner/outlobj.cxx
index bdcbcf8..72601d9 100644
--- a/svx/source/outliner/outlobj.cxx
+++ b/svx/source/outliner/outlobj.cxx
@@ -77,6 +77,12 @@ public:
             && maParagraphDataVector == rCandidate.maParagraphDataVector
             && mbIsEditDoc == rCandidate.mbIsEditDoc);
     }
+
+    // #i102062#
+    bool isWrongListEqual(const ImplOutlinerParaObject& rCompare) const
+    {
+        return mpEditTextObject->isWrongListEqual(*rCompare.mpEditTextObject);
+    }
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -147,6 +153,17 @@ bool OutlinerParaObject::operator==(const OutlinerParaObject& rCandidate) const
     return (*rCandidate.mpImplOutlinerParaObject == *mpImplOutlinerParaObject);
 }
 
+// #i102062#
+bool OutlinerParaObject::isWrongListEqual(const OutlinerParaObject& rCompare) const
+{
+    if(rCompare.mpImplOutlinerParaObject == mpImplOutlinerParaObject)
+    {
+        return true;
+    }
+
+    return mpImplOutlinerParaObject->isWrongListEqual(*rCompare.mpImplOutlinerParaObject);
+}
+
 sal_uInt16 OutlinerParaObject::GetOutlinerMode() const
 {
     return mpImplOutlinerParaObject->mpEditTextObject->GetUserType();
diff --git a/svx/source/sdr/attribute/sdrtextattribute.cxx b/svx/source/sdr/attribute/sdrtextattribute.cxx
index 88352f8..93661e2 100644
--- a/svx/source/sdr/attribute/sdrtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrtextattribute.cxx
@@ -148,6 +148,11 @@ namespace drawinglayer
         bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const
         {
             return (getOutlinerParaObject() == rCandidate.getOutlinerParaObject()
+                // #i102062# for primitive visualisation, the WrongList (SpellChecking)
+                // is important, too, so use isWrongListEqual since there is no WrongList
+                // comparison in the regular OutlinerParaObject compare (since it's
+                // not-persistent data)
+                && getOutlinerParaObject().isWrongListEqual(rCandidate.getOutlinerParaObject())
                 && pointerOrContentEqual(getSdrFormTextAttribute(), rCandidate.getSdrFormTextAttribute())
                 && getTextLeftDistance() == rCandidate.getTextLeftDistance()
                 && getTextUpperDistance() == rCandidate.getTextUpperDistance()
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index eddc5d1..6669912 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -473,7 +473,14 @@ namespace drawinglayer
             return pRetval;
         }
 
-        attribute::SdrTextAttribute* createNewSdrTextAttribute(const SfxItemSet& rSet, const SdrText& rText)
+        // #i101508# Support handing over given text-to-border distances
+        attribute::SdrTextAttribute* createNewSdrTextAttribute(
+            const SfxItemSet& rSet, 
+            const SdrText& rText,
+            const sal_Int32* pLeft,
+            const sal_Int32* pUpper,
+            const sal_Int32* pRight,
+            const sal_Int32* pLower)
         {
             attribute::SdrTextAttribute* pRetval(0);
             const SdrTextObj& rTextObj = rText.GetObject();
@@ -519,10 +526,10 @@ namespace drawinglayer
                     rText, 
                     aOutlinerParaObject,
                     ((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue(),
-                    rTextObj.GetTextLeftDistance(),
-                    rTextObj.GetTextUpperDistance(),
-                    rTextObj.GetTextRightDistance(),
-                    rTextObj.GetTextLowerDistance(),
+                    pLeft ? *pLeft : rTextObj.GetTextLeftDistance(),
+                    pUpper ? *pUpper : rTextObj.GetTextUpperDistance(),
+                    pRight ? *pRight : rTextObj.GetTextRightDistance(),
+                    pLower ? *pLower : rTextObj.GetTextLowerDistance(),
                     ((const SdrTextContourFrameItem&)rSet.Get(SDRATTR_TEXT_CONTOURFRAME)).GetValue(),
                     (SDRTEXTFIT_PROPORTIONAL == eFit || SDRTEXTFIT_ALLLINES == eFit),
                     ((const XFormTextHideFormItem&)rSet.Get(XATTR_FORMTXTHIDEFORM)).GetValue(),
@@ -1031,7 +1038,14 @@ namespace drawinglayer
             }
         }
         
-        attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(const SfxItemSet& rSet, const SdrText* pSdrText)
+        // #i101508# Support handing over given text-to-border distances
+        attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(
+            const SfxItemSet& rSet, 
+            const SdrText* pSdrText,
+            const sal_Int32* pLeft,
+            const sal_Int32* pUpper,
+            const sal_Int32* pRight,
+            const sal_Int32* pLower)
         {
             attribute::SdrFillTextAttribute* pRetval(0L);
             attribute::SdrFillAttribute* pFill(0L);
@@ -1042,7 +1056,7 @@ namespace drawinglayer
             // look for text first
             if(pSdrText)
             {
-                pText = createNewSdrTextAttribute(rSet, *pSdrText);
+                pText = createNewSdrTextAttribute(rSet, *pSdrText, pLeft, pUpper, pRight, pLower);
             }
 
             // when object has text and text is fontwork and hide contour is set for fontwork, force
diff --git a/svx/source/svdraw/svdcrtv.cxx b/svx/source/svdraw/svdcrtv.cxx
index 3b543ec..cc8f620 100644
--- a/svx/source/svdraw/svdcrtv.cxx
+++ b/svx/source/svdraw/svdcrtv.cxx
@@ -793,6 +793,15 @@ void SdrCreateView::ShowCreateObj(/*OutputDevice* pOut, BOOL bFull*/)
             // overlay objects instead.
             sal_Bool bUseSolidDragging(IsSolidDragging());
 
+            // #i101648# check if dragged object is a naked SdrObject (no
+            // derivation of). This is e.g. used in SW Frame construction
+            // as placeholder. Do not use SolidDragging for naked SDrObjects,
+            // they cannot have a valid optical representation
+            if(bUseSolidDragging && OBJ_NONE == pAktCreate->GetObjIdentifier())
+            {
+                bUseSolidDragging = false;
+            }
+
             // check for objects with no fill and no line
             if(bUseSolidDragging)
             {
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index de9a159..507b86f 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1392,8 +1392,15 @@ FASTBOOL SdrObject::MovCreate(SdrDragStat& rStat)
     rStat.TakeCreateRect(aOutRect);
     rStat.SetActionRect(aOutRect);
     aOutRect.Justify();
-    SetBoundRectDirty();
-    bSnapRectDirty=TRUE;
+
+    // #i101648# for naked (non-derived) SdrObjects, do not invalidate aOutRect
+    // by calling SetBoundRectDirty(); aOutRect IS the geometry for such objects.
+    // No derivation implementation calls the parent implementation, so this will
+    // cause no further prolems
+    //
+    // SetBoundRectDirty();
+    // bSnapRectDirty=TRUE;
+
     return TRUE;
 }
 
@@ -1401,7 +1408,11 @@ FASTBOOL SdrObject::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
 {
     rStat.TakeCreateRect(aOutRect);
     aOutRect.Justify();
-    SetRectsDirty();
+    
+    // #i101648# see description at MovCreate
+    //
+    // SetRectsDirty();
+
     return (eCmd==SDRCREATE_FORCEEND || rStat.GetPointAnz()>=2);
 }
 
@@ -2376,8 +2387,8 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, BOOL bForceLineDas
 
     if(pRet->LineGeometryUsageIsNecessary())
     {
-        basegfx::B2DPolyPolygon aAreaPolyPolygon;
-        basegfx::B2DPolyPolygon aLinePolyPolygon;
+        basegfx::B2DPolyPolygon aMergedLineFillPolyPolygon;
+        basegfx::B2DPolyPolygon aMergedHairlinePolyPolygon;
         const drawinglayer::primitive2d::Primitive2DSequence xSequence(pRet->GetViewContact().getViewIndependentPrimitive2DSequence());
 
         if(xSequence.hasElements())
@@ -2389,36 +2400,31 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, BOOL bForceLineDas
             drawinglayer::processor2d::LineGeometryExtractor2D aExtractor(aViewInformation2D);
             aExtractor.process(xSequence);
         
-            aAreaPolyPolygon = aExtractor.getExtractedLineFills();
-            aLinePolyPolygon = aExtractor.getExtractedHairlines();
-        }
+            // #i102241# check for line results
+            const std::vector< basegfx::B2DPolygon >& rHairlineVector = aExtractor.getExtractedHairlines();
 
-        // Since this may in some cases lead to a count of 0 after
-        // the merge i moved the merge to the front.
-        if(aAreaPolyPolygon.count())
-        {
-            // bezier geometry got created, even for straight edges since the given 
-            // object is a result of DoConvertToPolyObj. For conversion to contour 
-            // this is not really needed and can be reduced again AFAP
-            aAreaPolyPolygon = basegfx::tools::simplifyCurveSegments(aAreaPolyPolygon);
+            if(rHairlineVector.size())
+            {
+                // for SdrObject creation, just copy all to a single Hairline-PolyPolygon
+                for(sal_uInt32 a(0); a < rHairlineVector.size(); a++)
+                {
+                    aMergedHairlinePolyPolygon.append(rHairlineVector[a]);
+                }
+            }
 
-            // merge all to a decent result (try to use AND, but remember original)
-            const basegfx::B2DPolyPolygon aTemp(aAreaPolyPolygon);
-            aAreaPolyPolygon = basegfx::tools::solveCrossovers(aAreaPolyPolygon);
-            aAreaPolyPolygon = basegfx::tools::stripNeutralPolygons(aAreaPolyPolygon);
-            aAreaPolyPolygon = basegfx::tools::stripDispensablePolygons(aAreaPolyPolygon, false);
+            // #i102241# check for fill rsults
+            const std::vector< basegfx::B2DPolyPolygon >& rLineFillVector(aExtractor.getExtractedLineFills());
 
-            if(!aAreaPolyPolygon.count())
+            if(rLineFillVector.size())
             {
-                // OOps, AND is empty, this means there were no overlapping parts. Use
-                // remembered parts as result
-                aAreaPolyPolygon = aTemp;
+                // merge to a single PolyPolygon (OR)
+                aMergedLineFillPolyPolygon = basegfx::tools::mergeToSinglePolyPolygon(rLineFillVector);
             }
         }
 
-        //  || aLinePolyPolygon.Count() removed; the conversion is ONLY
+        //  || aMergedHairlinePolyPolygon.Count() removed; the conversion is ONLY
         // useful when new closed filled polygons are created
-        if(aAreaPolyPolygon.count() || (bForceLineDash && aLinePolyPolygon.count()))
+        if(aMergedLineFillPolyPolygon.count() || (bForceLineDash && aMergedHairlinePolyPolygon.count()))
         {
             SfxItemSet aSet(pRet->GetMergedItemSet());
             XFillStyle eOldFillStyle = ((const XFillStyleItem&)(aSet.Get(XATTR_FILLSTYLE))).GetValue();
@@ -2426,10 +2432,10 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, BOOL bForceLineDas
             SdrPathObj* aLineHairlinePart = NULL;
             bool bBuildGroup(false);
 
-            if(aAreaPolyPolygon.count())
+            if(aMergedLineFillPolyPolygon.count())
             {
                 // create SdrObject for filled line geometry
-                aLinePolygonPart = new SdrPathObj(OBJ_PATHFILL, aAreaPolyPolygon);
+                aLinePolygonPart = new SdrPathObj(OBJ_PATHFILL, aMergedLineFillPolyPolygon);
                 aLinePolygonPart->SetModel(pRet->GetModel());
 
                 // correct item properties
@@ -2444,13 +2450,13 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, BOOL bForceLineDas
                 aLinePolygonPart->SetMergedItemSet(aSet);
             }
 
-            if(aLinePolyPolygon.count())
+            if(aMergedHairlinePolyPolygon.count())
             {
                 // create SdrObject for hairline geometry
                 // OBJ_PATHLINE is necessary here, not OBJ_PATHFILL. This is intended
                 // to get a non-filled object. If the poly is closed, the PathObj takes care for
                 // the correct closed state.
-                aLineHairlinePart = new SdrPathObj(OBJ_PATHLINE, aLinePolyPolygon);
+                aLineHairlinePart = new SdrPathObj(OBJ_PATHLINE, aMergedHairlinePolyPolygon);
                 aLineHairlinePart->SetModel(pRet->GetModel());
 
                 aSet.Put(XLineWidthItem(0L));
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index 9d1da03..41c948f 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -1749,7 +1749,10 @@ void SdrPathObj::ImpForceKind()
         // was called, once here below and once on a 2nd place below.
 
         // #i10659# for SdrTextObj, keep aRect up to date
-        aRect = ImpGetBoundRect(GetPathPoly());
+        if(GetPathPoly().count())
+        {
+            aRect = ImpGetBoundRect(GetPathPoly());
+        }
     }
 
     // #i75974# adapt polygon state to object type. This may include a reinterpretation
@@ -2382,7 +2385,10 @@ void SdrPathObj::TakeUnrotatedSnapRect(Rectangle& rRect) const
 
 void SdrPathObj::RecalcSnapRect()
 {
-    maSnapRect = ImpGetBoundRect(GetPathPoly());
+    if(GetPathPoly().count())
+    {
+        maSnapRect = ImpGetBoundRect(GetPathPoly());
+    }
 }
 
 void SdrPathObj::NbcSetSnapRect(const Rectangle& rRect)
@@ -2472,8 +2478,11 @@ void SdrPathObj::NbcSetPoint(const Point& rPnt, sal_uInt32 nHdlNum)
         }
         else
         {
-            // #i10659# for SdrTextObj, keep aRect up to date
-            aRect = ImpGetBoundRect(GetPathPoly()); // fuer SdrTextObj
+            if(GetPathPoly().count())
+            {
+                // #i10659# for SdrTextObj, keep aRect up to date
+                aRect = ImpGetBoundRect(GetPathPoly()); // fuer SdrTextObj#
+            }
         }
 
         SetRectsDirty();
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 08160b9..ff322aa 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -657,7 +657,11 @@ namespace
 
 bool SdrTextObj::impCheckSpellCheckForDecomposeTextPrimitive() const
 {
-    return false;
+    // #i102062# asked TL who killed this feature (CWS tl56). Obviously, there
+    // is no more support for EE_CNTRL_NOREDLINES anymore; redlining is always
+    // on nowadays. Unfortunately, not false, but true should be returned then.
+    // Trying if this is all...
+    return true;
 }
 
 bool SdrTextObj::impDecomposeContourTextPrimitive(
@@ -931,6 +935,16 @@ bool SdrTextObj::impDecomposeStretchTextPrimitive(
     basegfx::B2DHomMatrix aNewTransformA;
     basegfx::B2DHomMatrix aNewTransformB;
 
+    // #i101957# Check for vertical text. If used, aNewTransformA
+    // needs to translate the text initially around object width to orient
+    // it relative to the topper right instead of the topper left
+    const bool bVertical(rSdrStretchTextPrimitive.getOutlinerParaObject().IsVertical());
+
+    if(bVertical)
+    {
+        aNewTransformA.translate(aScale.getX(), 0.0);
+    }
+
     // calculate global char stretching scale parameters. Use non-mirrored sizes
     // to layout without mirroring
     const double fScaleX(fabs(aScale.getX()) / aOutlinerScale.getX());
diff --git a/svx/source/svdraw/svdtext.cxx b/svx/source/svdraw/svdtext.cxx
index beb98bf..93c0024 100644
--- a/svx/source/svdraw/svdtext.cxx
+++ b/svx/source/svdraw/svdtext.cxx
@@ -61,10 +61,19 @@ void SdrText::CheckPortionInfo( SdrOutliner& rOutliner )
 {
     if(!mbPortionInfoChecked)
     {
+        // #i102062# no action when the Outliner is the HitTestOutliner,
+        // this will remove WrongList info at the OPO
+        if(mpModel && &rOutliner == &mpModel->GetHitTestOutliner())
+            return;
+
         // Optimierung: ggf. BigTextObject erzeugen
         mbPortionInfoChecked=true;
         if(mpOutlinerParaObject!=NULL && rOutliner.ShouldCreateBigTextObject())
-            mpOutlinerParaObject= rOutliner.CreateParaObject();
+        {
+            // #i102062# MemoryLeak closed
+            delete mpOutlinerParaObject;
+            mpOutlinerParaObject = rOutliner.CreateParaObject();
+        }
     }
 }
 
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index af00499..fccf019 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -554,7 +554,17 @@ Bitmap SdrExchangeView::GetMarkedObjBitmap( BOOL bNoVDevIfOneBmpMarked ) const
         if( !aBmp )
         {
             const Graphic aGraphic( GetMarkedObjMetaFile( bNoVDevIfOneBmpMarked ) );
-            aBmp = aGraphic.GetBitmap();
+            
+            // #i102089# support user's settings of AA and LineSnap when the MetaFile gets
+            // rasterconverted to a bitmap
+            const SvtOptionsDrawinglayer aDrawinglayerOpt;
+            const GraphicConversionParameters aParameters(
+                Size(),
+                false,
+                aDrawinglayerOpt.IsAntiAliasing(),
+                aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
+
+            aBmp = aGraphic.GetBitmap(aParameters);
         }
     }
 
diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx
index 0af6d2f..c79ac15 100644
--- a/svx/source/table/viewcontactoftableobj.cxx
+++ b/svx/source/table/viewcontactoftableobj.cxx
@@ -599,7 +599,30 @@ namespace sdr
                                     const SfxItemSet& rCellItemSet = xCurrentCell->GetItemSet();
                                     const sal_uInt32 nTextIndex(nColCount * aCellPos.mnRow + aCellPos.mnCol);
                                     const SdrText* pSdrText = rTableObj.getText(nTextIndex);
-                                    drawinglayer::attribute::SdrFillTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(rCellItemSet, pSdrText);
+                                    drawinglayer::attribute::SdrFillTextAttribute* pAttribute = 0;
+                                    
+                                    if(pSdrText)
+                                    {
+                                        // #i101508# take cell's local text frame distances into account
+                                        const sal_Int32 nLeft(xCurrentCell->GetTextLeftDistance());
+                                        const sal_Int32 nRight(xCurrentCell->GetTextRightDistance());
+                                        const sal_Int32 nUpper(xCurrentCell->GetTextUpperDistance());
+                                        const sal_Int32 nLower(xCurrentCell->GetTextLowerDistance());
+
+                                        pAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
+                                            rCellItemSet, 
+                                            pSdrText,
+                                            &nLeft,
+                                            &nUpper,
+                                            &nRight,
+                                            &nLower);
+                                    }
+                                    else
+                                    {
+                                        pAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
+                                            rCellItemSet, 
+                                            pSdrText);
+                                    }
 
                                     if(pAttribute)
                                     {
diff --git a/svx/source/unodraw/UnoGraphicExporter.cxx b/svx/source/unodraw/UnoGraphicExporter.cxx
index 2dcd3c1..956dfca 100644
--- a/svx/source/unodraw/UnoGraphicExporter.cxx
+++ b/svx/source/unodraw/UnoGraphicExporter.cxx
@@ -104,6 +104,9 @@ using namespace ::com::sun::star::task;
 #include <svx/sdr/contact/viewobjectcontact.hxx>
 #include <svx/sdr/contact/viewcontact.hxx>
 
+// #i102251#
+#include <editstat.hxx>
+
 //////////////////////////////////////////////////////////////////////////////
 
 namespace svx
@@ -225,16 +228,27 @@ namespace svx
         Graphic     aGraphic( rMtf );
         BitmapEx	aBmpEx;
 
+        // #i102089# support user's settings of AA and LineSnap when the MetaFile gets
+        // rasterconverted to a bitmap
+        const SvtOptionsDrawinglayer aDrawinglayerOpt;
+        const GraphicConversionParameters aParameters(
+            pSize ? *pSize : Size(0, 0), 
+            true, // allow unlimited size
+            aDrawinglayerOpt.IsAntiAliasing(),
+            aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
+
         if( bTransparent )
         {
-            Graphic aMaskGraphic( rMtf.GetMonochromeMtf( COL_BLACK ) );
-            Bitmap  aMaskBmp( aMaskGraphic.GetUnlimitedBitmap( pSize ) );
+            Graphic aMaskGraphic(rMtf.GetMonochromeMtf(COL_BLACK));
+            Bitmap  aMaskBmp(aMaskGraphic.GetBitmap(aParameters));
 
-            aMaskBmp.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
-            aBmpEx = BitmapEx( aGraphic.GetUnlimitedBitmap( pSize ), aMaskBmp );
+            aMaskBmp.Convert(BMP_CONVERSION_1BIT_THRESHOLD);
+            aBmpEx = BitmapEx(aGraphic.GetBitmap(aParameters), aMaskBmp);
         }
         else
-            aBmpEx = BitmapEx( aGraphic.GetUnlimitedBitmap( pSize ) );
+        {
+            aBmpEx = BitmapEx(aGraphic.GetBitmap(aParameters));
+        }
 
         aBmpEx.SetPrefMapMode( rMtf.GetPrefMapMode() );
         aBmpEx.SetPrefSize( rMtf.GetPrefSize() );
@@ -625,8 +639,12 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
     rOutl.SetCalcFieldValueHdl( LINK(this, GraphicExporter, CalcFieldValueHdl) );
     rOutl.SetBackgroundColor( pPage->GetPageBackgroundColor(pView->GetSdrPageView()) );
 
+    // #i102251#
+    const sal_uInt32 nOldCntrl(rOutl.GetControlWord());
+    sal_uInt32 nCntrl = nOldCntrl & ~EE_CNTRL_ONLINESPELLING;
+    rOutl.SetControlWord(nCntrl);
+
     std::vector< SdrObject* > aShapes;
-    
     bool bRet = true;
 
     // export complete page?
@@ -977,6 +995,9 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
 
     rOutl.SetCalcFieldValueHdl( maOldCalcFieldValueHdl );
 
+    // #i102251#
+    rOutl.SetControlWord(nOldCntrl);
+
     return bRet;
 
 }
commit 2368e19408f86f1a55c6342cdd03b7c4d1a962f9
Author: Jens-Heiner Rechtien <hr at openoffice.org>
Date:   Mon Jul 27 15:26:29 2009 +0000

    CWS-TOOLING: integrate CWS kso32fixes
    2009-07-10 15:25:24 +0200 kso  r273899 : #i53184# - fix probs with UNC server names containing underscores.
    2009-07-10 14:31:59 +0200 kso  r273893 : CWS-TOOLING: rebase CWS kso32fixes to trunk at 273858 (milestone: DEV300:m52)
    2009-07-09 13:46:16 +0200 kso  r273861 : #i53184# - withdrew patch.
    2009-07-08 13:39:00 +0200 kso  r273829 : #i63159# - added license header
    2009-07-08 11:44:08 +0200 kso  r273824 : i53184 - cannot open files from shell if UNC server has a _ (underscore)
    2009-07-08 11:21:12 +0200 kso  r273822 : #i93271# - mingw build error
    2009-07-08 11:13:48 +0200 kso  r273821 : #i91247 - Adhere to one more xdg spec
    2009-07-08 11:02:53 +0200 kso  r273820 : #i89017# - osl_trace now emits trailing line feed to the debugger
    2009-07-08 10:55:04 +0200 kso  r273819 : #i88663# - not waiting on successful forks but subsequent process failure
    2009-07-07 17:05:27 +0200 kso  r273810 : #i88382# - It's nice to leave the modal mode in gtk+ too ;-)
    2009-07-07 16:53:34 +0200 kso  r273808 : i88331# - Typo in include guard
    2009-07-07 16:48:17 +0200 kso  r273807 : i82831# - crashrep: warnings when size_t != int
    2009-07-07 16:39:49 +0200 kso  r273806 : i63159# - Patch to use d_type field in dirent structure if possible
    2009-06-24 12:52:27 +0200 kso  r273333 : #i100274# - solved win2k missing symbol problem (again).
    2009-05-20 13:58:48 +0200 kso  r272124 : CWS-TOOLING: rebase CWS kso32fixes to trunk at 271830 (milestone: DEV300:m48)
    2009-04-17 14:50:54 +0200 kso  r270950 : CWS-TOOLING: rebase CWS kso32fixes to trunk at 270723 (milestone: DEV300:m46)
    2009-03-26 09:27:28 +0100 kso  r270054 : #i100274# NTLM code cleanup.
    2009-03-20 14:13:38 +0100 kso  r269807 : #i100274# - Fixed potential buffer overflow in NTLM code.
    2009-03-19 14:53:03 +0100 kso  r269748 : #i100274. Added NTLM support for Non-Windows platforms.
    2009-03-17 15:52:44 +0100 kso  r269613 : CWS-TOOLING: rebase CWS kso32fixes to trunk at 269297 (milestone: DEV300:m43)

diff --git a/sfx2/source/appl/shutdownicon.cxx b/sfx2/source/appl/shutdownicon.cxx
index 3acd732..cd94dd3 100644
--- a/sfx2/source/appl/shutdownicon.cxx
+++ b/sfx2/source/appl/shutdownicon.cxx
@@ -494,9 +494,7 @@ IMPL_STATIC_LINK( ShutdownIcon, DialogClosedHdl_Impl, FileDialogHelper*, EMPTYAR
         }
     }
 
-#ifdef WNT
-        LeaveModalMode();
-#endif
+    LeaveModalMode();
     return 0;
 }
 


More information about the ooo-build-commit mailing list