Kaydet (Commit) 5865af09 authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Noel Grandin

tdf#102223 EDITING Deleting all content from a cell changes font formatting

The code in question was added in:
  commit 48ea88c8
  Author: Rüdiger Timm <rt@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/28950Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst b18e1bc6
......@@ -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();
......
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment