[Libreoffice-commits] core.git: sd/qa svx/source

Noel Grandin noel at peralex.com
Tue Sep 20 10:48:25 UTC 2016


 sd/qa/unit/tiledrendering/data/tdf102223.odp |binary
 sd/qa/unit/tiledrendering/tiledrendering.cxx |   48 +++++++++++++++++++++++++++
 svx/source/table/svdotable.cxx               |   18 +---------
 3 files changed, 50 insertions(+), 16 deletions(-)

New commits:
commit 5865af093c9698c7358e6f3b8ae37cd2cb1cfaff
Author: Noel Grandin <noel at peralex.com>
Date:   Fri Sep 16 13:20:18 2016 +0200

    tdf#102223 EDITING Deleting all content from a cell changes font formatting
    
    The code in question was added in:
      commit 48ea88c8c8194d65105aa22108583369575926e1
      Author: RĂ¼diger Timm <rt at openoffice.org>
      Date:   Wed Mar 12 09:02:20 2008 +0000
      INTEGRATION: CWS impresstables2 (1.1.2); FILE ADDED
    
    So hard to tell what its original purpose was. Probably trying to clean
    up the model, but had the unintended side effect of removing styles.
    
    Change-Id: I7d774706c22cf72e914b356df9bbc5947ee2c1a5
    Reviewed-on: https://gerrit.libreoffice.org/28950
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
    Tested-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sd/qa/unit/tiledrendering/data/tdf102223.odp b/sd/qa/unit/tiledrendering/data/tdf102223.odp
new file mode 100644
index 0000000..6b8570f
Binary files /dev/null and b/sd/qa/unit/tiledrendering/data/tdf102223.odp differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 37d0607..3f1a08c 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -20,7 +20,11 @@
 #include <comphelper/string.hxx>
 #include <editeng/editids.hrc>
 #include <editeng/editview.hxx>
+#include <editeng/editobj.hxx>
 #include <editeng/outliner.hxx>
+#include <editeng/fontitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/outlobj.hxx>
 #include <osl/conditn.hxx>
 #include <sfx2/dispatch.hxx>
 #include <sfx2/viewfrm.hxx>
@@ -72,6 +76,7 @@ public:
     void testUndoLimiting();
     void testCreateViewGraphicSelection();
     void testCreateViewTextCursor();
+    void testTdf102223();
 
     CPPUNIT_TEST_SUITE(SdTiledRenderingTest);
     CPPUNIT_TEST(testRegisterCallback);
@@ -99,6 +104,7 @@ public:
     CPPUNIT_TEST(testUndoLimiting);
     CPPUNIT_TEST(testCreateViewGraphicSelection);
     CPPUNIT_TEST(testCreateViewTextCursor);
+    CPPUNIT_TEST(testTdf102223);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -1242,6 +1248,48 @@ void SdTiledRenderingTest::testCreateViewTextCursor()
     comphelper::LibreOfficeKit::setActive(false);
 }
 
+void SdTiledRenderingTest::testTdf102223()
+{
+    // Load the document.
+    comphelper::LibreOfficeKit::setActive();
+    SdXImpressDocument* pXImpressDocument = createDoc("tdf102223.odp");
+    sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell();
+    SdPage* pActualPage = pViewShell->GetActualPage();
+    auto pTableObject = dynamic_cast<sdr::table::SdrTableObj*>(pActualPage->GetObj(2));
+    CPPUNIT_ASSERT(pTableObject);
+    SdrView* pView = pViewShell->GetView();
+
+    // select contents of cell
+    Rectangle aRect = pTableObject->GetCurrentBoundRect();
+    pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN,
+                                      convertMm100ToTwip(aRect.getX() + 2), convertMm100ToTwip(aRect.getY() + 2),
+                                      1, MOUSE_LEFT, 0);
+    pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP,
+                                      convertMm100ToTwip(aRect.getX() + 2), convertMm100ToTwip(aRect.getY() + 2),
+                                      1, MOUSE_LEFT, 0);
+    pView->SdrBeginTextEdit(pTableObject);
+    CPPUNIT_ASSERT(pView->GetTextEditObject());
+    EditView& rEditView = pView->GetTextEditOutlinerView()->GetEditView();
+    rEditView.SetSelection(ESelection(0, 0, 0, 3)); // start para, start char, end para, end char.
+    CPPUNIT_ASSERT_EQUAL(OUString("Red"), rEditView.GetSelected());
+    const SvxFontHeightItem& rItem = static_cast<const SvxFontHeightItem&>(rEditView.GetAttribs().Get(EE_CHAR_FONTHEIGHT));
+    CPPUNIT_ASSERT_EQUAL((int)1411, (int)rItem.GetHeight());
+
+    // cut contents of cell
+    uno::Sequence<beans::PropertyValue> aArgs;
+    comphelper::dispatchCommand(".uno:Cut", aArgs);
+
+    pView->SdrBeginTextEdit(pTableObject);
+    CPPUNIT_ASSERT(pView->GetTextEditObject());
+    EditView& rEditView2 = pView->GetTextEditOutlinerView()->GetEditView();
+    rEditView2.SetSelection(ESelection(0, 0, 0, 1)); // start para, start char, end para, end char.
+    const SvxFontHeightItem& rItem2 = static_cast<const SvxFontHeightItem&>(rEditView2.GetAttribs().Get(EE_CHAR_FONTHEIGHT));
+    CPPUNIT_ASSERT_EQUAL((int)1411, (int)rItem2.GetHeight());
+
+    comphelper::LibreOfficeKit::setActive(false);
+}
+
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdTiledRenderingTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
index e4e3087..34b64cd 100644
--- a/svx/source/table/svdotable.cxx
+++ b/svx/source/table/svdotable.cxx
@@ -1823,25 +1823,11 @@ void SdrTableObj::EndTextEdit(SdrOutliner& rOutl)
 
         if(p1stPara)
         {
-            if(nParaAnz == 1)
-            {
-                // if its only one paragraph, check if it is empty
-                OUString aStr(rOutl.GetText(p1stPara));
-                if (aStr.isEmpty())
-                {
-                    // gotcha!
-                    nParaAnz = 0;
-                }
-            }
-
             // to remove the grey field background
             rOutl.UpdateFields();
 
-            if(nParaAnz != 0)
-            {
-                // create new text object
-                pNewText = rOutl.CreateParaObject( 0, nParaAnz );
-            }
+            // create new text object
+            pNewText = rOutl.CreateParaObject( 0, nParaAnz );
         }
         SetOutlinerParaObject(pNewText);
     }


More information about the Libreoffice-commits mailing list