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;