[Libreoffice-commits] core.git: 3 commits - include/svx include/vcl starmath/inc starmath/source starmath/uiconfig starmath/UIConfig_smath.mk svx/source sw/source vcl/source

Caolán McNamara caolanm at redhat.com
Wed May 29 12:10:11 PDT 2013


 include/svx/svdxcgv.hxx                          |    1 
 include/vcl/layout.hxx                           |   11 +
 starmath/UIConfig_smath.mk                       |    1 
 starmath/inc/starmath.hrc                        |    1 
 starmath/source/dialog.cxx                       |   39 ++----
 starmath/source/smres.src                        |    7 -
 starmath/uiconfig/smath/ui/savedefaultsdialog.ui |   34 +++++
 svx/source/svdraw/svdxcgv.cxx                    |  146 ++++++++++++++---------
 sw/source/core/doc/doctxm.cxx                    |    2 
 vcl/source/window/layout.cxx                     |   43 +++++-
 10 files changed, 189 insertions(+), 96 deletions(-)

New commits:
commit 680f375476a2dc51e496bfbfbdaea4163a2f58b2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed May 29 17:16:06 2013 +0100

    valgrind: fix leak
    
    Change-Id: I3c8fdc00c3d4c6adaf6f1f790ed0549676e76772

diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 4ed21ab..d56cf61 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -708,6 +708,8 @@ SwTOXBaseSection::SwTOXBaseSection(SwTOXBase const& rBase, SwSectionFmt & rFmt)
 
 SwTOXBaseSection::~SwTOXBaseSection()
 {
+    for (SwTOXSortTabBases::const_iterator it = aSortArr.begin(); it != aSortArr.end(); ++it)
+        delete *it;
 }
 
 bool SwTOXBaseSection::SetPosAtStartEnd( SwPosition& rPos, bool bAtStart ) const
commit 1d53996334db8850ff7a1bbfa8fa22b230b1c40e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed May 29 16:13:49 2013 +0100

    convert save defaults to .ui format
    
    Change-Id: I7843598761cf95b04d9c3741cd8b0612b9b059ce

diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx
index 2b8fa8a..ede844e 100644
--- a/include/vcl/layout.hxx
+++ b/include/vcl/layout.hxx
@@ -657,10 +657,19 @@ enum VclButtonsType
     VCL_BUTTONS_OK_CANCEL
 };
 
+enum VclMessageType
+{
+    VCL_MESSAGE_INFO,
+    VCL_MESSAGE_WARNING,
+    VCL_MESSAGE_QUESTION,
+    VCL_MESSAGE_ERROR
+};
+
 class VCL_DLLPUBLIC MessageDialog : public Dialog
 {
 private:
-    VclButtonsType m_eType;
+    VclButtonsType m_eButtonsType;
+    VclMessageType m_eMessageType;
     VclGrid* m_pGrid;
     FixedImage* m_pImage;
     VclMultiLineEdit* m_pPrimaryMessage;
diff --git a/starmath/UIConfig_smath.mk b/starmath/UIConfig_smath.mk
index d72ae83..d64abe8 100644
--- a/starmath/UIConfig_smath.mk
+++ b/starmath/UIConfig_smath.mk
@@ -27,6 +27,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/smath,\
 	starmath/uiconfig/smath/ui/alignmentdialog \
 	starmath/uiconfig/smath/ui/catalogdialog \
 	starmath/uiconfig/smath/ui/printeroptions \
+	starmath/uiconfig/smath/ui/savedefaultsdialog \
 	starmath/uiconfig/smath/ui/spacingdialog \
 ))
 
diff --git a/starmath/inc/starmath.hrc b/starmath/inc/starmath.hrc
index 7cb9f4f..f233fa4 100644
--- a/starmath/inc/starmath.hrc
+++ b/starmath/inc/starmath.hrc
@@ -90,7 +90,6 @@
 
 #define RID_MATH_TOOLBOX            (RID_APP_START + 50)
 
-#define RID_DEFAULTSAVEQUERY        (RID_APP_START + 102)
 #define RID_NOMATHTYPEFACEWARNING   (RID_APP_START + 204)
 #define RID_OBJECTNAME              (RID_APP_START + 501)
     // free
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
index 149cf10..86e2340 100644
--- a/starmath/source/dialog.cxx
+++ b/starmath/source/dialog.cxx
@@ -24,6 +24,7 @@
 #include <svl/stritem.hxx>
 #include <sfx2/app.hxx>
 #include <vcl/builder.hxx>
+#include <vcl/layout.hxx>
 #include <vcl/msgbox.hxx>
 #include <svtools/ctrltool.hxx>
 #include <sfx2/printer.hxx>
@@ -421,22 +422,25 @@ void SmFontDialog::DataChanged( const DataChangedEvent& rDCEvt )
     ModalDialog::DataChanged( rDCEvt );
 }
 
-/**************************************************************************/
-
+class SaveDefaultsQuery : public MessageDialog
+{
+public:
+    SaveDefaultsQuery(Window *pParent)
+        : MessageDialog(pParent, "SaveDefaultsDialog",
+            "modules/smath/ui/savedefaultsdialog.ui")
+    {
+    }
+};
 
 IMPL_LINK( SmFontSizeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
 {
-    QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
-    if (pQueryBox->Execute() == RET_YES)
+    if (SaveDefaultsQuery(this).Execute() == RET_YES)
     {
         SmModule *pp = SM_MOD();
         SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
         WriteTo( aFmt );
         pp->GetConfig()->SetStandardFormat( aFmt );
     }
-
-    delete pQueryBox;
     return 0;
 }
 
@@ -546,16 +550,13 @@ IMPL_LINK( SmFontTypeDialog, MenuSelectHdl, Menu *, pMenu )
 
 IMPL_LINK_INLINE_START( SmFontTypeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
 {
-    QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-    if (pQueryBox->Execute() == RET_YES)
+    if (SaveDefaultsQuery(this).Execute() == RET_YES)
     {
         SmModule *pp = SM_MOD();
         SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
         WriteTo( aFmt );
         pp->GetConfig()->SetStandardFormat( aFmt, true );
     }
-
-    delete pQueryBox;
     return 0;
 }
 IMPL_LINK_INLINE_END( SmFontTypeDialog, DefaultButtonClickHdl, Button *, pButton )
@@ -755,16 +756,13 @@ IMPL_LINK( SmDistanceDialog, MenuSelectHdl, Menu *, pMenu )
 
 IMPL_LINK( SmDistanceDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
 {
-    QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
-    if (pQueryBox->Execute() == RET_YES)
+    if (SaveDefaultsQuery(this).Execute() == RET_YES)
     {
         SmModule *pp = SM_MOD();
         SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
         WriteTo( aFmt );
         pp->GetConfig()->SetStandardFormat( aFmt );
     }
-    delete pQueryBox;
     return 0;
 }
 
@@ -1044,27 +1042,18 @@ void SmDistanceDialog::WriteTo(SmFormat &rFormat) /*const*/
     rFormat.RequestApplyChanges();
 }
 
-
-/**************************************************************************/
-
-
 IMPL_LINK( SmAlignDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
 {
-   QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
-    if (pQueryBox->Execute() == RET_YES)
+    if (SaveDefaultsQuery(this).Execute() == RET_YES)
     {
         SmModule *pp = SM_MOD();
         SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
         WriteTo( aFmt );
         pp->GetConfig()->SetStandardFormat( aFmt );
     }
-
-    delete pQueryBox;
     return 0;
 }
 
-
 SmAlignDialog::SmAlignDialog(Window * pParent)
     : ModalDialog(pParent, "AlignmentDialog",
         "modules/smath/ui/alignmentdialog.ui")
diff --git a/starmath/source/smres.src b/starmath/source/smres.src
index 805b290..f5c36b4 100644
--- a/starmath/source/smres.src
+++ b/starmath/source/smres.src
@@ -793,13 +793,6 @@ WarningBox RID_NOMATHTYPEFACEWARNING
     Message [ en-US ] = "The 'StarMath' font has not been installed.\nWithout this font %PRODUCTNAME Math cannot function correctly.\nPlease install this font and restart %PRODUCTNAME Math." ;
 };
 
-QueryBox RID_DEFAULTSAVEQUERY
-{
-    Buttons = WB_YES_NO ;
-    DefButton = WB_DEF_YES ;
-    Message [ en-US ] = "Should the changes be saved as defaults?\n\nThese changes will apply for all new formulas." ;
-};
-
 String RID_FONTREGULAR
 {
     Text [ en-US ] = "Standard" ;
diff --git a/starmath/uiconfig/smath/ui/savedefaultsdialog.ui b/starmath/uiconfig/smath/ui/savedefaultsdialog.ui
new file mode 100644
index 0000000..bcf7108
--- /dev/null
+++ b/starmath/uiconfig/smath/ui/savedefaultsdialog.ui
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkMessageDialog" id="SaveDefaultsDialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">12</property>
+    <property name="title" translatable="yes">Save defaults</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="message_type">question</property>
+    <property name="buttons">yes-no</property>
+    <property name="text" translatable="yes">Should the changes be saved as defaults?</property>
+    <property name="secondary_text" translatable="yes">These changes will apply for all new formulas.</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="messagedialog-vbox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">24</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="messagedialog-action_area">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index a476099..dfd1098 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -1672,7 +1672,8 @@ bool VclSizeGroup::set_property(const OString &rKey, const OString &rValue)
 
 MessageDialog::MessageDialog(Window* pParent, WinBits nStyle)
     : Dialog(pParent, nStyle)
-    , m_eType(VCL_BUTTONS_NONE)
+    , m_eButtonsType(VCL_BUTTONS_NONE)
+    , m_eMessageType(VCL_MESSAGE_INFO)
     , m_pGrid(NULL)
     , m_pImage(NULL)
     , m_pPrimaryMessage(NULL)
@@ -1683,7 +1684,8 @@ MessageDialog::MessageDialog(Window* pParent, WinBits nStyle)
 
 MessageDialog::MessageDialog(Window* pParent, const OString& rID, const OUString& rUIXMLDescription)
     : Dialog(pParent, rID, rUIXMLDescription, WINDOW_MESSBOX)
-    , m_eType(VCL_BUTTONS_NONE)
+    , m_eButtonsType(VCL_BUTTONS_NONE)
+    , m_eMessageType(VCL_MESSAGE_INFO)
     , m_pGrid(NULL)
     , m_pImage(NULL)
     , m_pPrimaryMessage(NULL)
@@ -1767,7 +1769,21 @@ short MessageDialog::Execute()
         m_pGrid->set_column_spacing(12);
 
         m_pImage = new FixedImage(m_pGrid, WB_CENTER | WB_VCENTER | WB_3DLOOK);
-        m_pImage->SetImage(WarningBox::GetStandardImage());
+        switch (m_eMessageType)
+        {
+            case VCL_MESSAGE_INFO:
+                m_pImage->SetImage(InfoBox::GetStandardImage());
+                break;
+            case VCL_MESSAGE_WARNING:
+                m_pImage->SetImage(WarningBox::GetStandardImage());
+                break;
+            case VCL_MESSAGE_QUESTION:
+                m_pImage->SetImage(QueryBox::GetStandardImage());
+                break;
+            case VCL_MESSAGE_ERROR:
+                m_pImage->SetImage(ErrorBox::GetStandardImage());
+                break;
+        }
         m_pImage->set_grid_left_attach(0);
         m_pImage->set_grid_top_attach(0);
         m_pImage->set_valign(VCL_ALIGN_START);
@@ -1800,7 +1816,7 @@ short MessageDialog::Execute()
         VclButtonBox *pButtonBox = get_action_area();
         assert(pButtonBox);
         PushButton *pBtn;
-        switch (m_eType)
+        switch (m_eButtonsType)
         {
             case VCL_BUTTONS_NONE:
                 break;
@@ -1874,6 +1890,23 @@ bool MessageDialog::set_property(const OString &rKey, const OString &rValue)
         set_primary_text(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
     else if (rKey == "secondary-text")
         set_secondary_text(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
+    else if (rKey == "message-type")
+    {
+        VclMessageType eMode = VCL_MESSAGE_INFO;
+        if (rValue.equals("info"))
+            eMode = VCL_MESSAGE_INFO;
+        else if (rValue.equals("warning"))
+            eMode = VCL_MESSAGE_WARNING;
+        else if (rValue.equals("question"))
+            eMode = VCL_MESSAGE_QUESTION;
+        else if (rValue.equals("error"))
+            eMode = VCL_MESSAGE_ERROR;
+        else
+        {
+            SAL_WARN("vcl.layout", "unknown message type mode" << rValue.getStr());
+        }
+        m_eMessageType = eMode;
+    }
     else if (rKey == "buttons")
     {
         VclButtonsType eMode = VCL_BUTTONS_NONE;
@@ -1893,7 +1926,7 @@ bool MessageDialog::set_property(const OString &rKey, const OString &rValue)
         {
             SAL_WARN("vcl.layout", "unknown buttons type mode" << rValue.getStr());
         }
-        m_eType = eMode;
+        m_eButtonsType = eMode;
     }
     else
         return Dialog::set_property(rKey, rValue);
commit ddca040048b6b26bd348e9c4a8a3528ad1613814
Author: Armin Le Grand <alg at apache.org>
Date:   Fri Jan 11 15:16:47 2013 +0000

    Resolves: #i121609# Made conversion to bitmap more direct
    
    (cherry picked from commit 5fdbac8ba880a1158e11f0b42059c09510a3ddac)
    
    Conflicts:
    	svx/inc/svx/svdxcgv.hxx
    	svx/source/svdraw/svdxcgv.cxx
    
    Change-Id: I654f82546656aa1789a3838c1373564bc28eaf31

diff --git a/include/svx/svdxcgv.hxx b/include/svx/svdxcgv.hxx
index 1d7a161..89dde5e 100644
--- a/include/svx/svdxcgv.hxx
+++ b/include/svx/svdxcgv.hxx
@@ -58,6 +58,7 @@ protected:
 
 public:
     // Alle markierten Objekte auf dem angegebenen OutputDevice ausgeben.
+    ::std::vector< SdrObject* > GetMarkedObjects() const;
     virtual void        DrawMarkedObj(OutputDevice& rOut) const;
 
     // Z.B. fuer's Clipboard, Drag&Drop, ...
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 4d0ee93..f750448 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -48,6 +48,12 @@
 #include <svl/style.hxx>
 #include <fmobj.hxx>
 #include <vcl/svgdata.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdr/contact/objectcontactofobjlistpainter.hxx>
+#include <svx/sdr/contact/displayinfo.hxx>
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -469,14 +475,42 @@ BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked) const
 
         if( !aBmp )
         {
-            const GDIMetaFile aGDIMetaFile(GetMarkedObjMetaFile(bNoVDevIfOneBmpMarked));
-            const Rectangle aBound(GetMarkedObjBoundRect());
-
-            aBmp = convertMetafileToBitmapEx(
-                aGDIMetaFile,
-                basegfx::B2DRange(
-                    aBound.Left(), aBound.Top(),
-                    aBound.Right(), aBound.Bottom()));
+            // choose conversion directly using primitives to bitmap to avoid
+            // rendering errors with tiled bitmap fills (these will be tiled in a
+            // in-between metafile, but tend to show 'gaps' since the target is *no*
+            // bitmap rendering)
+            ::std::vector< SdrObject* > aSdrObjects(GetMarkedObjects());
+            const sal_uInt32 nCount(aSdrObjects.size());
+
+            if(nCount)
+            {
+                // collect sub-primitives as group objects, thus no expensive append
+                // to existing sequence is needed
+                drawinglayer::primitive2d::Primitive2DSequence xPrimitives(nCount);
+
+                for(sal_uInt32 a(0); a < nCount; a++)
+                {
+                    xPrimitives[a] = new drawinglayer::primitive2d::GroupPrimitive2D(
+                        aSdrObjects[a]->GetViewContact().getViewIndependentPrimitive2DSequence());
+                }
+
+                // get logic range
+                const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                const basegfx::B2DRange aRange(
+                    drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(
+                        xPrimitives,
+                        aViewInformation2D));
+
+                if(!aRange.isEmpty())
+                {
+                    // if we have geometry and it has a range, convert to BitmapEx using
+                    // common tooling
+                    aBmp = convertPrimitive2DSequenceToBitmapEx(
+                        xPrimitives,
+                        aRange,
+                        500000);
+                }
+            }
         }
     }
 
@@ -632,9 +666,10 @@ Graphic SdrExchangeView::GetObjGraphic( const SdrModel* pModel, const SdrObject*
 
 // -----------------------------------------------------------------------------
 
-void SdrExchangeView::DrawMarkedObj(OutputDevice& rOut) const
+::std::vector< SdrObject* > SdrExchangeView::GetMarkedObjects() const
 {
     SortMarkedObjects();
+    ::std::vector< SdrObject* > aRetval;
 
     ::std::vector< ::std::vector< SdrMark* > >  aObjVectors( 2 );
     ::std::vector< SdrMark* >&                  rObjVector1 = aObjVectors[ 0 ];
@@ -661,9 +696,27 @@ void SdrExchangeView::DrawMarkedObj(OutputDevice& rOut) const
         for( sal_uInt32 i = 0; i < rObjVector.size(); i++ )
         {
             SdrMark*    pMark = rObjVector[ i ];
-            pMark->GetMarkedSdrObj()->SingleObjectPainter( rOut );
+            aRetval.push_back(pMark->GetMarkedSdrObj());
         }
     }
+
+    return aRetval;
+}
+
+// -----------------------------------------------------------------------------
+
+void SdrExchangeView::DrawMarkedObj(OutputDevice& rOut) const
+{
+    ::std::vector< SdrObject* > aSdrObjects(GetMarkedObjects());
+
+    if(aSdrObjects.size())
+    {
+        sdr::contact::ObjectContactOfObjListPainter aPainter(rOut, aSdrObjects, aSdrObjects[0]->GetPage());
+        sdr::contact::DisplayInfo aDisplayInfo;
+
+        // do processing
+        aPainter.ProcessDisplay(aDisplayInfo);
+    }
 }
 
 // -----------------------------------------------------------------------------
@@ -679,64 +732,43 @@ SdrModel* SdrExchangeView::GetMarkedObjModel() const
 
     if( !mxSelectionController.is() || !mxSelectionController->GetMarkedObjModel( pNeuPag ) )
     {
-        ::std::vector< ::std::vector< SdrMark* > >  aObjVectors( 2 );
-        ::std::vector< SdrMark* >&                  rObjVector1 = aObjVectors[ 0 ];
-        ::std::vector< SdrMark* >&                  rObjVector2 = aObjVectors[ 1 ];
-        const SdrLayerAdmin&                        rLayerAdmin = pMod->GetLayerAdmin();
-        const sal_uInt32                            nControlLayerId = rLayerAdmin.GetLayerID( rLayerAdmin.GetControlLayerName(), sal_False );
-        sal_uInt32                                  n, nCount, nCloneErrCnt = 0;
-
-        for( n = 0, nCount = GetMarkedObjectCount(); n < nCount; n++ )
-        {
-            SdrMark* pMark = GetSdrMarkByIndex( n );
-
-            // paint objects on control layer on top of all otherobjects
-            if( nControlLayerId == pMark->GetMarkedSdrObj()->GetLayer() )
-                rObjVector2.push_back( pMark );
-            else
-                rObjVector1.push_back( pMark );
-        }
+        ::std::vector< SdrObject* > aSdrObjects(GetMarkedObjects());
 
         // #i13033#
         // New mechanism to re-create the connections of cloned connectors
         CloneList aCloneList;
+        sal_uInt32 nCloneErrCnt(0);
 
-        for( n = 0, nCount = aObjVectors.size(); n < nCount; n++ )
+        for( sal_uInt32 i(0); i < aSdrObjects.size(); i++ )
         {
-            ::std::vector< SdrMark* >& rObjVector = aObjVectors[ n ];
+            const SdrObject*    pObj = aSdrObjects[i];
+            SdrObject*          pNeuObj;
 
-            for( sal_uInt32 i = 0; i < rObjVector.size(); i++ )
+            if( pObj->ISA( SdrPageObj ) )
             {
-                   const SdrMark*      pMark = rObjVector[ i ];
-                const SdrObject*    pObj = pMark->GetMarkedSdrObj();
-                SdrObject*          pNeuObj;
-
-                if( pObj->ISA( SdrPageObj ) )
-                {
-                    // convert SdrPageObj's to a graphic representation, because
-                    // virtual connection to referenced page gets lost in new model
-                    pNeuObj = new SdrGrafObj( GetObjGraphic( pMod, pObj ), pObj->GetLogicRect() );
-                    pNeuObj->SetPage( pNeuPag );
-                    pNeuObj->SetModel( pNeuMod );
-                }
-                else
-                {
-                    pNeuObj = pObj->Clone();
-                    pNeuObj->SetPage( pNeuPag );
-                    pNeuObj->SetModel( pNeuMod );
-                }
+                // convert SdrPageObj's to a graphic representation, because
+                // virtual connection to referenced page gets lost in new model
+                pNeuObj = new SdrGrafObj( GetObjGraphic( pMod, pObj ), pObj->GetLogicRect() );
+                pNeuObj->SetPage( pNeuPag );
+                pNeuObj->SetModel( pNeuMod );
+            }
+            else
+            {
+                pNeuObj = pObj->Clone();
+                pNeuObj->SetPage( pNeuPag );
+                pNeuObj->SetModel( pNeuMod );
+            }
 
-                if( pNeuObj )
-                {
-                    SdrInsertReason aReason(SDRREASON_VIEWCALL);
-                    pNeuPag->InsertObject(pNeuObj,CONTAINER_APPEND,&aReason);
+            if( pNeuObj )
+            {
+                SdrInsertReason aReason(SDRREASON_VIEWCALL);
+                pNeuPag->InsertObject(pNeuObj,CONTAINER_APPEND,&aReason);
 
-                    // #i13033#
-                    aCloneList.AddPair(pObj, pNeuObj);
-                }
-                else
-                    nCloneErrCnt++;
+                // #i13033#
+                aCloneList.AddPair(pObj, pNeuObj);
             }
+            else
+                nCloneErrCnt++;
         }
 
         // #i13033#


More information about the Libreoffice-commits mailing list