drawinglayer/source/processor2d/textaspolygonextractor2d.cxx |    2 
 drawinglayer/source/processor2d/textextractor2d.cxx          |   24 ++++++++++-
 include/drawinglayer/processor2d/textextractor2d.hxx         |    6 ++
 3 files changed, 28 insertions(+), 4 deletions(-)

New commits:
commit 9165ec1e7428f34fe73f598973929717e0b67f80
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Tue Feb 27 11:33:42 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Wed Feb 28 13:14:21 2024 +0100

    if a SdrTextObj is being edited then TextHierarchyEditPrimitive2D exists
    
    instead of the usual content, so actively edited shapes are different.
    
    Change-Id: I8c65a59b1724152d488f3b0ca83ec744207b0fa0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164074
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx 
b/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
index 1a091d027a85..28dd1f5970f9 100644
--- a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
+++ b/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
@@ -188,7 +188,7 @@ namespace drawinglayer::processor2d
         }
 
         TextAsPolygonExtractor2D::TextAsPolygonExtractor2D(const 
geometry::ViewInformation2D& rViewInformation)
-        :   TextExtractor2D(rViewInformation),
+        :   TextExtractor2D(rViewInformation, false),
             maBColorModifierStack(),
             mnInText(0)
         {
diff --git a/drawinglayer/source/processor2d/textextractor2d.cxx 
b/drawinglayer/source/processor2d/textextractor2d.cxx
index 105014a750ca..546ef4edb7cc 100644
--- a/drawinglayer/source/processor2d/textextractor2d.cxx
+++ b/drawinglayer/source/processor2d/textextractor2d.cxx
@@ -17,8 +17,9 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <drawinglayer/processor2d/textextractor2d.hxx>
 #include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+#include <drawinglayer/processor2d/textextractor2d.hxx>
+#include <drawinglayer/primitive2d/texthierarchyprimitive2d.hxx>
 #include <drawinglayer/primitive2d/transformprimitive2d.hxx>
 
 namespace drawinglayer::processor2d
@@ -68,6 +69,23 @@ void TextExtractor2D::processBasePrimitive2D(const 
primitive2d::BasePrimitive2D&
         case PRIMITIVE2D_ID_MASKPRIMITIVE2D:
             break;
 
+        // This primitive is created if a text edit is active and contains its 
current content
+        // by default this is skipped
+        case PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D:
+        {
+            if (m_bIncludeActiveTextEdit)
+            {
+                process(static_cast<const 
primitive2d::TextHierarchyEditPrimitive2D&>(rCandidate)
+                            .getContent());
+            }
+            else
+            {
+                // same as default
+                process(rCandidate);
+            }
+            break;
+        }
+
         default:
         {
             // process recursively
@@ -77,8 +95,10 @@ void TextExtractor2D::processBasePrimitive2D(const 
primitive2d::BasePrimitive2D&
     }
 }
 
-TextExtractor2D::TextExtractor2D(const geometry::ViewInformation2D& 
rViewInformation)
+TextExtractor2D::TextExtractor2D(const geometry::ViewInformation2D& 
rViewInformation,
+                                 bool bIncludeActiveTextEdit)
     : BaseProcessor2D(rViewInformation)
+    , m_bIncludeActiveTextEdit(bIncludeActiveTextEdit)
 {
 }
 
diff --git a/include/drawinglayer/processor2d/textextractor2d.hxx 
b/include/drawinglayer/processor2d/textextractor2d.hxx
index 8f68f7ec8026..794ecfe02437 100644
--- a/include/drawinglayer/processor2d/textextractor2d.hxx
+++ b/include/drawinglayer/processor2d/textextractor2d.hxx
@@ -22,8 +22,12 @@ namespace drawinglayer::processor2d
      */
 class DRAWINGLAYER_DLLPUBLIC TextExtractor2D : public BaseProcessor2D
 {
+private:
+    bool m_bIncludeActiveTextEdit;
+
 public:
-    explicit TextExtractor2D(const geometry::ViewInformation2D& 
rViewInformation);
+    explicit TextExtractor2D(const geometry::ViewInformation2D& 
rViewInformation,
+                             bool bIncludeActiveTextEdit);
     void processBasePrimitive2D(const primitive2d::BasePrimitive2D& 
rCandidate) override;
     virtual void processTextPrimitive2D(const primitive2d::BasePrimitive2D& 
rCandidate) = 0;
     virtual ~TextExtractor2D() override;

Reply via email to