[Libreoffice-commits] core.git: 4 commits - sw/inc sw/source test/source vcl/README

Michael Stahl mstahl at redhat.com
Wed Mar 2 14:10:32 UTC 2016


 sw/inc/list.hxx                             |    1 +
 sw/source/core/doc/DocumentListsManager.cxx |    7 +++++++
 sw/source/core/doc/docnum.cxx               |    2 ++
 sw/source/core/doc/list.cxx                 |    6 +++++-
 test/source/mtfxmldump.cxx                  |   24 ++++++++++++++++++++++++
 vcl/README                                  |   20 +++++++++++++++++---
 6 files changed, 56 insertions(+), 4 deletions(-)

New commits:
commit ddc363b2b2496dfe72775650d8929901ca8be5a2
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Mar 2 13:03:52 2016 +0100

    test: dump MetaPolyPolygonAction too
    
    Change-Id: I3ecafc104c91d7f4e93805b2e03359cf60d2db4b

diff --git a/test/source/mtfxmldump.cxx b/test/source/mtfxmldump.cxx
index 2aab2fa..c955fcc 100644
--- a/test/source/mtfxmldump.cxx
+++ b/test/source/mtfxmldump.cxx
@@ -535,6 +535,30 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, XmlWriter& rWriter)
             }
             break;
 
+            case MetaActionType::POLYPOLYGON:
+            {
+                MetaPolyPolygonAction *const pMPPAction(
+                        static_cast<MetaPolyPolygonAction*>(pAction));
+                rWriter.startElement(sCurrentElementTag);
+
+                tools::PolyPolygon const& rPoly(pMPPAction->GetPolyPolygon());
+                for (sal_uInt16 j = 0; j < rPoly.Count(); ++j)
+                {
+                    rWriter.startElement("polygon");
+                    for (sal_uInt16 i = 0; i < rPoly[j].GetSize(); i++)
+                    {
+                        rWriter.startElement("point");
+                        rWriter.attribute("x", rPoly[j][i].X());
+                        rWriter.attribute("y", rPoly[j][i].Y());
+                        rWriter.endElement();
+                    }
+                    rWriter.endElement();
+                }
+
+                rWriter.endElement();
+            }
+            break;
+
             case MetaActionType::COMMENT:
             {
                 MetaCommentAction* pMetaCommentAction = static_cast<MetaCommentAction*>(pAction);
commit 632804b1f9066f5ac701338e500ae5c0ed1875dd
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Mar 2 12:21:53 2016 +0100

    vcl: document that it's possible to dump GDIMetaFile to XML
    
    Change-Id: I921577df6c905e935d05ff0e9d2b2c6e8d22cc89

diff --git a/vcl/README b/vcl/README
index ebf8ee4..d995cdc 100644
--- a/vcl/README
+++ b/vcl/README
@@ -76,6 +76,20 @@ The way COM is used in LO generally:
 - oslWorkerWrapperFunction() puts every thread spawned via oslCreateThread()
   into MTA (free-threaded)
 
+== GDIMetafile ==
+
+GDIMetafile is a vector drawing representation that corresponds directly
+to the SVM (StarView Metafile) format; it is extremely important as
+an intermediate format in all sorts of drawing and printing operations.
+
+There is a class MetafileXmlDump in include/test/mtfxmldump.hxx that
+can store a GDIMetafile as XML, which makes debugging much easier
+since you can just use "diff" to see changes.
+
+To use it you need to link against "test" library and then (because
+"test" is not part of the installation) run with:
+LD_LIBRARY_PATH=workdir/LinkTarget/Library:workdir/UnpackedTarball/cppunit/src/cppunit/.libs instdir/program/soffice
+
 == EMF+ ==
 
 emf+ is vector file format used by MSO and is successor of wmf and
@@ -159,13 +173,13 @@ Printing from Writer works like this:
 
 1) individual pages print by passing an appropriate OutputDevice to XRenderable
 2) in drawinglayer, a VclMetafileProcessor2D is used to record everything on
-   the page (because the OutputDevice has been set up to record a MetaFile)
-3) the pages' MetaFiles are converted to PDF by the vcl::PDFWriter
+   the page (because the OutputDevice has been set up to record a GDIMetaFile)
+3) the pages' GDIMetaFiles are converted to PDF by the vcl::PDFWriter
    in vcl/source/gdi/pdfwriter*
 
 Creating the ODF thumbnail for the first page works as above except step 3 is:
 
-3) the MetaFile is replayed to create the thumbnail
+3) the GDIMetaFile is replayed to create the thumbnail
 
 On-screen display differs in step 1 and 2:
 
commit 69ff012f1a2d10b3284586474f2add4e88eabcfb
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Mar 1 22:04:09 2016 +0100

    sw: tdf#91131 when renaming a SwNumRule, also ...
    
    ... update the DocumentListsManager::maLists because without that all
    list styles created in the UI will have GetDefaultListStyleName() ==
    "Untitled1" and then deleting one of them deletes all these entries from
    maList, which makes the DocumentListsManager unhappy.
    
    Change-Id: Ic40e561fc540881ab29566a3f5ecdc8a180c97ef

diff --git a/sw/inc/list.hxx b/sw/inc/list.hxx
index 0cb1ba5..2c3daf7 100644
--- a/sw/inc/list.hxx
+++ b/sw/inc/list.hxx
@@ -39,6 +39,7 @@ class SwList
         const OUString GetListId() const;
 
         const OUString GetDefaultListStyleName() const;
+        void SetDefaultListStyleName(OUString const&);
 
         void InsertListItem( SwNodeNum& rNodeNum,
                              const int nLevel );
diff --git a/sw/source/core/doc/DocumentListsManager.cxx b/sw/source/core/doc/DocumentListsManager.cxx
index 5a90a37..d2b86ae 100644
--- a/sw/source/core/doc/DocumentListsManager.cxx
+++ b/sw/source/core/doc/DocumentListsManager.cxx
@@ -182,6 +182,13 @@ void DocumentListsManager::trackChangeOfListStyleName( const OUString& sListStyl
         maListStyleLists.erase( sListStyleName );
         maListStyleLists[sNewListStyleName] = pList;
     }
+    for (auto & it : maLists) // tdf#91131 update these references too
+    {
+        if (it.second->GetDefaultListStyleName() == sListStyleName)
+        {
+            it.second->SetDefaultListStyleName(sNewListStyleName);
+        }
+    }
 }
 
 
diff --git a/sw/source/core/doc/list.cxx b/sw/source/core/doc/list.cxx
index f08d102..4976f07 100644
--- a/sw/source/core/doc/list.cxx
+++ b/sw/source/core/doc/list.cxx
@@ -51,7 +51,6 @@ class SwListImpl
 
         bool IsListLevelMarked( const int nListLevel ) const;
 
-    private:
         // unique identifier of the list
         const OUString msListId;
         // default list style for the list items, identified by the list style name
@@ -232,6 +231,11 @@ const OUString SwList::GetDefaultListStyleName() const
     return mpListImpl->GetDefaultListStyleName();
 }
 
+void SwList::SetDefaultListStyleName(OUString const& rNew)
+{
+    mpListImpl->msDefaultListStyleName = rNew;
+}
+
 void SwList::InsertListItem( SwNodeNum& rNodeNum,
                              const int nLevel )
 {
commit 38f3b3fd31143495249a67c9526fe2a47dafe861
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Mar 1 22:03:02 2016 +0100

    sw: SwDoc::RenameNumRule() relies on caller checking that ...
    
    ... the new name is not being used.
    
    Change-Id: Idd392fa4ab6379ec21c5b308767c052bf28fa5aa

diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx
index c9a64fa..2f456e4 100644
--- a/sw/source/core/doc/docnum.cxx
+++ b/sw/source/core/doc/docnum.cxx
@@ -1066,6 +1066,8 @@ void SwDoc::ChgNumRuleFormats( const SwNumRule& rRule )
 bool SwDoc::RenameNumRule(const OUString & rOldName, const OUString & rNewName,
                               bool bBroadcast)
 {
+    assert(!FindNumRulePtr(rNewName));
+
     bool bResult = false;
     SwNumRule * pNumRule = FindNumRulePtr(rOldName);
 


More information about the Libreoffice-commits mailing list