diff options
author | Andreas Heinisch <andreas.heinisch@yahoo.de> | 2022-02-28 18:40:30 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-03-07 11:27:47 +0100 |
commit | 7c81ce180ddb48cc031be28ef57581d1955d9f1b (patch) | |
tree | c46b068ba70d6120a205c9946c169d1e0551f593 /sd/qa/unit/uiimpress.cxx | |
parent | 2c06fba68d3cd194edfddf49cd2779c761b6bd38 (diff) |
tdf#38669 - Create the key event using a Unicode character
Instead of using a plain char, create a key event using a Unicode
character, otherwise the key event creates texts including rectangles or
wrong characters.
Change-Id: I9ec0d64998927d54eb3ae90a192c3b28e235f56d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130721
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
(cherry picked from commit 9d25f86236885c40662bcd24517f231688361e8c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131018
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'sd/qa/unit/uiimpress.cxx')
-rw-r--r-- | sd/qa/unit/uiimpress.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx index 68786fac3698..286672341a3b 100644 --- a/sd/qa/unit/uiimpress.cxx +++ b/sd/qa/unit/uiimpress.cxx @@ -745,6 +745,37 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testSpellOnlineParameter) CPPUNIT_ASSERT_EQUAL(!bSet, pImpressDocument->GetDoc()->GetOnlineSpell()); } +CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf38669) +{ + mxComponent = loadFromDesktop("private:factory/simpress", + "com.sun.star.presentation.PresentationDocument"); + auto pImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pImpressDocument); + + // Insert shape with ctrl key + uno::Sequence<beans::PropertyValue> aArgs( + comphelper::InitPropertySequence({ { "KeyModifier", uno::makeAny(KEY_MOD1) } })); + dispatchCommand(mxComponent, ".uno:BasicShapes.rectangle", aArgs); + Scheduler::ProcessEventsToIdle(); + + uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xDraws = xDrawPagesSupplier->getDrawPages(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount()); + + // Insert an UTF-8 character (176 is the code of the degree sign, i.e., '°') + pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 176, 0); + pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 176, 0); + Scheduler::ProcessEventsToIdle(); + + uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + uno::Reference<text::XTextRange> xShape(xDrawPage->getByIndex(2), uno::UNO_QUERY); + // Without the fix in place, this test would have failed with: + // - Expected: ° + // - Actual : ㅀ + CPPUNIT_ASSERT_EQUAL(OUString(u"°"), xShape->getString()); +} + CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf123841) { // To check if selecting unfilled rectangle produces unfilled rectangle |