[Libreoffice-commits] core.git: sw/source

Ashod Nakashian ashod.nakashian at collabora.co.uk
Tue Sep 26 05:14:41 UTC 2017


 sw/source/core/crsr/pam.cxx         |   30 ++++++++++++++++++++++++++++++
 sw/source/uibase/shells/textsh1.cxx |    1 -
 2 files changed, 30 insertions(+), 1 deletion(-)

New commits:
commit 4dbe82bcb83a9732519cee6ed7128dfe52c5b961
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Fri Sep 15 17:14:47 2017 -0400

    sw: make paragraph signature fields read-only
    
    Change-Id: Ib0218e2a92cdde81030c517b0826bd6062a333f3
    Reviewed-on: https://gerrit.libreoffice.org/42732
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
index cd1d7f200e7c..488572415a2b 100644
--- a/sw/source/core/crsr/pam.cxx
+++ b/sw/source/core/crsr/pam.cxx
@@ -43,6 +43,10 @@
 #include <hints.hxx>
 #include <xmloff/odffields.hxx>
 
+#include <rdfhelper.hxx>
+#include <txtatr.hxx>
+#include <docsh.hxx>
+
 // for the dump "MSC-" compiler
 inline sal_Int32 GetSttOrEnd( bool bCondition, const SwContentNode& rNd )
 {
@@ -711,6 +715,32 @@ bool SwPaM::HasReadonlySel( bool bFormView ) const
         bRet = !( pA == pB && pA != nullptr );
     }
 
+    // Paragraph Signatures are read-only.
+    if (!bRet)
+    {
+        SwTextNode* pNode = Start()->nNode.GetNode().GetTextNode();
+        if (pNode != nullptr)
+        {
+            SwTextAttr* pAttr = pNode->GetTextAttrAt(Start()->nContent.GetIndex(), RES_TXTATR_METAFIELD);
+            SwTextMeta* pTextMeta = static_txtattr_cast<SwTextMeta*>(pAttr);
+            if (pTextMeta)
+            {
+                SwFormatMeta& rFormatMeta(static_cast<SwFormatMeta&>(pTextMeta->GetAttr()));
+                if (::sw::Meta* pMeta = rFormatMeta.GetMeta())
+                {
+                    if (const SwDocShell* pDocSh = pDoc->GetDocShell())
+                    {
+                        static const OUString metaNS("urn:bails");
+                        const css::uno::Reference<css::rdf::XResource> xSubject(pMeta->MakeUnoObject(), uno::UNO_QUERY);
+                        uno::Reference<frame::XModel> xModel = pDocSh->GetBaseModel();
+                        const std::map<OUString, OUString> aStatements = SwRDFHelper::getStatements(xModel, metaNS, xSubject);
+                        bRet = (aStatements.find("loext:signature:signature") != aStatements.end());
+                    }
+                }
+            }
+        }
+    }
+
     return bRet;
 }
 
diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 331e5245b8ac..fb8be7dd5cae 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -113,7 +113,6 @@
 #include <svx/drawitem.hxx>
 #include <numrule.hxx>
 #include <memory>
-#include <IDocumentUndoRedo.hxx>
 
 using namespace ::com::sun::star;
 using namespace svx::sidebar;


More information about the Libreoffice-commits mailing list