sw/source/core/text/porlay.cxx |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

New commits:
commit 4b3f9c6a06650532df34af6388fa62d659eabd90
Author:     Serge Krot <serge.k...@cib.de>
AuthorDate: Mon Jun 8 12:43:53 2020 +0200
Commit:     Thorsten Behrens <thorsten.behr...@cib.de>
CommitDate: Wed Jun 10 23:53:16 2020 +0200

    tdf#101856 evaluate condition to expand / collapse bookmarks
    
    Change-Id: I7c135eab0feeca0ede794f6c88a2b06e339d6a14
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95795
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96003
    Reviewed-by: Michael Stahl <michael.st...@cib.de>

diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index d9406a4e28c1..2bb9e87bd2c9 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -54,9 +54,11 @@
 #include <doc.hxx>
 #include <swscanner.hxx>
 #include <txatbase.hxx>
+#include <calc.hxx>
 #include <IDocumentRedlineAccess.hxx>
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentContentOperations.hxx>
+#include <IDocumentFieldsAccess.hxx>
 #include <IMark.hxx>
 
 using namespace ::com::sun::star;
@@ -2283,7 +2285,29 @@ void SwScriptInfo::selectHiddenTextProperty(const 
SwTextNode& rNode, MultiSelect
     {
         const sw::mark::IMark* pMark = pIndex->GetMark();
         const sw::mark::IBookmark* pBookmark = dynamic_cast<const 
sw::mark::IBookmark*>(pMark);
+
+        bool bHide = false;
         if (pBookmark && pBookmark->IsHidden())
+        {
+            // bookmark is marked as hidden
+            bHide = true;
+
+            // bookmark is marked as hidden with conditions
+            if (!pBookmark->GetHideCondition().isEmpty())
+            {
+                SwDoc& rDoc = *const_cast<SwDoc*>(rNode.GetDoc());
+                SwCalc aCalc(rDoc);
+                rDoc.getIDocumentFieldsAccess().FieldsToCalc(aCalc, 
rNode.GetIndex(), USHRT_MAX);
+
+                SwSbxValue aValue = 
aCalc.Calculate(pBookmark->GetHideCondition());
+                if(!aValue.IsVoidValue())
+                {
+                    bHide = aValue.GetBool();
+                }
+            }
+        }
+
+        if (bHide)
         {
             // intersect bookmark range with textnode range and add the 
intersection to rHiddenMulti
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to