[Libreoffice-commits] core.git: Branch 'feature/textbox' - sw/inc sw/source

Miklos Vajna vmiklos at collabora.co.uk
Wed May 14 08:05:42 PDT 2014


 sw/inc/textboxhelper.hxx             |    2 ++
 sw/source/core/doc/textboxhelper.cxx |   16 ++++++++++++++++
 sw/source/core/unocore/unodraw.cxx   |    3 ++-
 3 files changed, 20 insertions(+), 1 deletion(-)

New commits:
commit f5731a1e78896bf32fe5e7fd36b38cc21553db5a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed May 14 17:03:45 2014 +0200

    SwXShape: allow setting TextBox property to false
    
    Change-Id: I3b501d6928cded0f4684817c24674423c1d6c2da

diff --git a/sw/inc/textboxhelper.hxx b/sw/inc/textboxhelper.hxx
index 93a459d..0c992dc 100644
--- a/sw/inc/textboxhelper.hxx
+++ b/sw/inc/textboxhelper.hxx
@@ -26,6 +26,8 @@ class SwTextBoxHelper
 public:
     /// Create a TextBox for a shape.
     static void create(SwFrmFmt* pShape);
+    /// Destroy a TextBox for a shape.
+    static void destroy(SwFrmFmt* pShape);
     /// Get XTextAppend of a shape's TextBox, if there is any.
     static css::uno::Any getXTextAppend(SwFrmFmt* pShape, const css::uno::Type& rType);
     /// Sync property of TextBox with the one of the shape.
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index 9937778..faadb5f 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -65,6 +65,22 @@ void SwTextBoxHelper::create(SwFrmFmt* pShape)
     }
 }
 
+void SwTextBoxHelper::destroy(SwFrmFmt* pShape)
+{
+    // If a TextBox was enabled previously
+    if (pShape->GetAttrSet().HasItem(RES_CNTNT))
+    {
+        SwFrmFmt* pFmt = findTextBox(pShape);
+
+        // Unlink the TextBox's text range from the original shape.
+        pShape->ResetFmtAttr(RES_CNTNT);
+
+        // Delete the associated TextFrame.
+        if (pFmt)
+            pShape->GetDoc()->DelLayoutFmt(pFmt);
+    }
+}
+
 SwFrmFmt* SwTextBoxHelper::findTextBox(SwFrmFmt* pShape)
 {
     SwFrmFmt* pRet = 0;
diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx
index 5ece513..6a3261b 100644
--- a/sw/source/core/unocore/unodraw.cxx
+++ b/sw/source/core/unocore/unodraw.cxx
@@ -1182,9 +1182,10 @@ void SwXShape::setPropertyValue(const OUString& rPropertyName, const uno::Any& a
                 {
                     bool bValue;
                     aValue >>= bValue;
-                    // If TextBox is to be enabled.
                     if (bValue)
                         SwTextBoxHelper::create(pFmt);
+                    else
+                        SwTextBoxHelper::destroy(pFmt);
 
                 }
                 // #i28749#


More information about the Libreoffice-commits mailing list