From 7de16ecd1e7afda4fd043128289cc9f9cd75aa22 Mon Sep 17 00:00:00 2001
From: Slávek Banko <slavek.banko@axis.cz>
Date: Mon, 3 Nov 2025 15:50:00 +0100
Subject: Add support for Poppler >= 25.10. Fix confusing formatting in
 DocumentData::addTocChildren.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
---
 .../dependencies/poppler-tqt/poppler-document.cpp  | 14 ++++++-
 .../dependencies/poppler-tqt/poppler-private.cpp   | 45 ++++++++++++++--------
 2 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/tdefile-plugins/dependencies/poppler-tqt/poppler-document.cpp b/tdefile-plugins/dependencies/poppler-tqt/poppler-document.cpp
index 5ed02af6..81c6b04a 100644
--- a/tdefile-plugins/dependencies/poppler-tqt/poppler-document.cpp
+++ b/tdefile-plugins/dependencies/poppler-tqt/poppler-document.cpp
@@ -88,7 +88,10 @@ bool Document::unlock(const TQCString &password)
 {
   if (data->locked) {
     /* racier then it needs to be */
-#   if (POPPLER_VERSION_C >= 22003000)
+#   if (POPPLER_VERSION_C >= 25010000)
+    DocumentData *doc2 = new DocumentData(data->doc.getFileName()->copy(),
+                                          GooString(password.data()));
+#   elif (POPPLER_VERSION_C >= 22003000)
     DocumentData *doc2 = new DocumentData(std::make_unique<GooString>(data->doc.getFileName()),
                                           GooString(password.data()));
 #   else
@@ -225,7 +228,14 @@ TQString Document::getInfo( const TQString & type ) const
       isUnicode = gFalse;
       i = 0;
     }
-    while ( i < obj.getString()->getLength() )
+    while
+    (
+#       if (POPPLER_VERSION_C >= 25010000)
+        i < obj.getString()->size()
+#       else
+        i < obj.getString()->getLength()
+#       endif
+    )
     {
       if ( isUnicode )
       {
diff --git a/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp b/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp
index 42ec0899..d5c028d1 100644
--- a/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp
+++ b/tdefile-plugins/dependencies/poppler-tqt/poppler-private.cpp
@@ -57,7 +57,14 @@ TQString UnicodeParsedString(CONST_064 GooString *s1)
         isUnicode = gFalse;
         i = 0;
     }
-    while ( i < s1->getLength() )
+    while
+    (
+#       if (POPPLER_VERSION_C >= 25010000)
+        i < s1->size()
+#       else
+        i < s1->getLength()
+#       endif
+    )
     {
         if ( isUnicode )
         {
@@ -129,23 +136,31 @@ void DocumentData::addTocChildren( TQDomDocument * docSyn, TQDomNode * parent, O
                 // get the destination for the page now, but it's VERY time consuming,
                 // so better storing the reference and provide the viewport on demand
                 CONST_064 GooString *s = g->getNamedDest();
-                TQChar *charArray = new TQChar[s->getLength()];
-                for (int i = 0; i < s->getLength(); ++i) charArray[i] = TQChar(s->GOO_GET_CSTR()[i]);
-                    TQString aux(charArray, s->getLength());
-                    item.setAttribute( "DestinationName", aux );
-                    delete[] charArray;
-                }
-                else if ( destination && destination->isOk() )
-                {
-                    LinkDestinationData ldd(destination, NULL, this);
-                    item.setAttribute( "Destination", LinkDestination(ldd).toString() );
-                }
-                if ( a->getKind() == actionGoToR )
+#               if (POPPLER_VERSION_C >= 25010000)
+                int sLen = s->size();
+#               else
+                int sLen = s->getLength();
+#               endif
+                TQChar *charArray = new TQChar[sLen];
+                for (int i = 0; i < sLen; ++i)
                 {
-                    CONST_064 LinkGoToR * g2 = static_cast< CONST_064 LinkGoToR * >( a );
-                    item.setAttribute( "ExternalFileName", g2->getFileName()->GOO_GET_CSTR() );
+                    charArray[i] = TQChar(s->GOO_GET_CSTR()[i]);
                 }
+                TQString aux(charArray, sLen);
+                item.setAttribute( "DestinationName", aux );
+                delete[] charArray;
+            }
+            else if ( destination && destination->isOk() )
+            {
+                LinkDestinationData ldd(destination, NULL, this);
+                item.setAttribute( "Destination", LinkDestination(ldd).toString() );
+            }
+            if ( a->getKind() == actionGoToR )
+            {
+                CONST_064 LinkGoToR * g2 = static_cast< CONST_064 LinkGoToR * >( a );
+                item.setAttribute( "ExternalFileName", g2->getFileName()->GOO_GET_CSTR() );
             }
+        }
 
         // 3. recursively descend over children
         outlineItem->open();
-- 
cgit v1.2.3

