[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.2' - sw/inc sw/source

Ashod Nakashian (via logerrit) logerrit at kemper.freedesktop.org
Thu Dec 26 03:36:39 UTC 2019


 sw/inc/editsh.hxx                           |    7 +++++--
 sw/source/core/doc/DocumentTimerManager.cxx |    4 ++++
 sw/source/core/edit/edfcol.cxx              |    7 ++++---
 sw/source/core/edit/edws.cxx                |   11 ++++-------
 4 files changed, 17 insertions(+), 12 deletions(-)

New commits:
commit deaf934e3c62b554704d1d3548ac699ea6d308ab
Author:     Ashod Nakashian <ashod.nakashian at collabora.co.uk>
AuthorDate: Wed Oct 3 05:53:28 2018 -0400
Commit:     Ashod Nakashian <ashnakash at gmail.com>
CommitDate: Thu Dec 26 04:36:10 2019 +0100

    sw: paragraph-sign: process signatures in one pass on loading
    
    This combines the metadata field restoration logic with
    validation/update of said field in one pass upon loading docs.
    This cuts down overheads and makes the code more readable.
    
    In addition, now that paragraph signature validation is quite
    cheap (separate commits), esp. when no signatures exist, we
    validate and update signatures (where applicable) when fields
    are updated.
    
    Change-Id: I4adcea579c591f9be457ed742d2cf54fa308163d
    Reviewed-on: https://gerrit.libreoffice.org/63008
    Tested-by: Jenkins
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit ad9902f34dd0b5837ab518445ea9f3a24352738b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85809
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>

diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index 74323492d538..32c0b8014f2f 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -375,8 +375,11 @@ public:
     /// Validate all paragraph signatures.
     void ValidateAllParagraphSignatures(bool updateDontRemove);
 
-    /// Restore the metadata fields, if missing, from the RDF metadata.
-    void RestoreMetadataFields();
+    /// Restore the metadata fields, if missing, from the RDF metadata
+    /// and validate the signatures and update the signature metadata fields.
+    /// Needed since deleting the metadata field doesn't remove the RDF
+    /// and editing docs using software that don't support paragraph signing.
+    void RestoreMetadataFieldsAndValidateParagraphSignatures();
 
     /// Ensure that the classification of the doc is never lower than
     /// the paragraph with the highest classification.
diff --git a/sw/source/core/doc/DocumentTimerManager.cxx b/sw/source/core/doc/DocumentTimerManager.cxx
index d290e70942b8..86afcb9107fa 100644
--- a/sw/source/core/doc/DocumentTimerManager.cxx
+++ b/sw/source/core/doc/DocumentTimerManager.cxx
@@ -35,6 +35,7 @@
 #include <fldbas.hxx>
 #include <vcl/scheduler.hxx>
 #include <comphelper/lok.hxx>
+#include <editsh.hxx>
 
 namespace sw
 {
@@ -201,6 +202,9 @@ IMPL_LINK_NOARG( DocumentTimerManager, DoIdleJobs, Timer*, void )
         m_rDoc.getIDocumentFieldsAccess().UpdateTableFields(nullptr);  // Tables
         m_rDoc.getIDocumentFieldsAccess().UpdateRefFields();  // References
 
+        // Validate and update the paragraph signatures.
+        m_rDoc.GetEditShell()->ValidateAllParagraphSignatures(true);
+
         pTmpRoot->EndAllAction();
 
         pShell->LockView( bOldLockView );
diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx
index b97ce353a840..e2014a101966 100644
--- a/sw/source/core/edit/edfcol.cxx
+++ b/sw/source/core/edit/edfcol.cxx
@@ -1902,7 +1902,7 @@ static uno::Reference<text::XTextField> lcl_GetParagraphMetadataFieldAtIndex(con
     return xTextField;
 }
 
-void SwEditShell::RestoreMetadataFields()
+void SwEditShell::RestoreMetadataFieldsAndValidateParagraphSignatures()
 {
     SwDocShell* pDocShell = GetDoc()->GetDocShell();
     if (!pDocShell || !IsParagraphSignatureValidationEnabled())
@@ -2028,6 +2028,7 @@ void SwEditShell::RestoreMetadataFields()
                 }
             }
 
+            lcl_ValidateParagraphSignatures(GetDoc(), xParagraph, true); // Validate and Update signatures.
         }
         catch (const std::exception&)
         {
@@ -2118,7 +2119,7 @@ static OUString lcl_GetHighestClassificationParagraphClass(SwPaM* pCursor)
     while (xParagraphs->hasMoreElements())
     {
         uno::Reference<text::XTextContent> xParagraph(xParagraphs->nextElement(), uno::UNO_QUERY);
-        OUString sCurrentClass = lcl_GetParagraphClassification(aHelper, aKeyCreator, xModel, xParagraph);
+        const OUString sCurrentClass = lcl_GetParagraphClassification(aHelper, aKeyCreator, xModel, xParagraph);
         sHighestClass = aHelper.GetHigherClass(sHighestClass, sCurrentClass);
     }
 
@@ -2131,7 +2132,7 @@ void SwEditShell::ClassifyDocPerHighestParagraphClass()
     if (!pDocShell)
         return;
 
-    // bail out as early as possible if we don't have paragraph classification
+    // Bail out as early as possible if we don't have paragraph classification.
     if (!SwRDFHelper::hasMetadataGraph(pDocShell->GetBaseModel(), MetaNS))
         return;
 
diff --git a/sw/source/core/edit/edws.cxx b/sw/source/core/edit/edws.cxx
index 9ed3970fc164..dd5381cbb9eb 100644
--- a/sw/source/core/edit/edws.cxx
+++ b/sw/source/core/edit/edws.cxx
@@ -17,11 +17,12 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <editsh.hxx>
+
 #include <officecfg/Office/Common.hxx>
 #include <unotools/configmgr.hxx>
 #include <vcl/window.hxx>
 
-#include <editsh.hxx>
 #include <doc.hxx>
 #include <IDocumentUndoRedo.hxx>
 #include <IDocumentState.hxx>
@@ -52,12 +53,8 @@ SwEditShell::SwEditShell( SwDoc& rDoc, vcl::Window *pWindow, const SwViewOption
         GetDoc()->GetIDocumentUndoRedo().DoUndo(true);
     }
 
-    // Restore the tscp metadata fields
-    RestoreMetadataFields();
-
-    // Update the paragraph signatures.
-    // Since this ctor is called only on creating/loading the doc, we validate once only.
-    ValidateAllParagraphSignatures(true);
+    // Restore the paragraph metadata fields and validate signatures.
+    RestoreMetadataFieldsAndValidateParagraphSignatures();
 }
 
 SwEditShell::~SwEditShell() // USED


More information about the Libreoffice-commits mailing list