From 7c81ce180ddb48cc031be28ef57581d1955d9f1b Mon Sep 17 00:00:00 2001 From: Andreas Heinisch Date: Mon, 28 Feb 2022 18:40:30 +0100 Subject: 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 (cherry picked from commit 9d25f86236885c40662bcd24517f231688361e8c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131018 Reviewed-by: Xisco Fauli --- sd/qa/unit/uiimpress.cxx | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'sd/qa/unit/uiimpress.cxx') 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(mxComponent.get()); + CPPUNIT_ASSERT(pImpressDocument); + + // Insert shape with ctrl key + uno::Sequence aArgs( + comphelper::InitPropertySequence({ { "KeyModifier", uno::makeAny(KEY_MOD1) } })); + dispatchCommand(mxComponent, ".uno:BasicShapes.rectangle", aArgs); + Scheduler::ProcessEventsToIdle(); + + uno::Reference xDrawPagesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference 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 xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0), + uno::UNO_QUERY); + uno::Reference 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 -- cgit