sd/qa/unit/tiledrendering/data/TextBoxAndRect.odg |binary sd/qa/unit/tiledrendering/data/Type-in-draw.odg |binary sd/qa/unit/tiledrendering/tiledrendering.cxx | 38 ++++++++++++++++++++++ sd/source/ui/view/drviews1.cxx | 2 - 4 files changed, 39 insertions(+), 1 deletion(-)
New commits: commit c5d1aaba6c898c87190b0ca64f463dcf6b0c301f Author: Caolán McNamara <[email protected]> AuthorDate: Thu Jan 15 09:39:14 2026 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Thu Jan 15 16:34:08 2026 +0100 kit: Don't exit shape edit mode due to a view-switch View1 - enters text edit mode in a shape on page A View2 - enters text edit mode in a shape on page B There is a view switch from B to A and back to B, in which case View2 should remain in shape edit mode and not auto-exit. Change-Id: I55f492903c80a347cd7f8287d5a60d20628f69b0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197341 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sd/qa/unit/tiledrendering/data/TextBoxAndRect.odg b/sd/qa/unit/tiledrendering/data/TextBoxAndRect.odg index aa1a37b83147..d715f8180052 100644 Binary files a/sd/qa/unit/tiledrendering/data/TextBoxAndRect.odg and b/sd/qa/unit/tiledrendering/data/TextBoxAndRect.odg differ diff --git a/sd/qa/unit/tiledrendering/data/Type-in-draw.odg b/sd/qa/unit/tiledrendering/data/Type-in-draw.odg new file mode 100644 index 000000000000..afac468f1926 Binary files /dev/null and b/sd/qa/unit/tiledrendering/data/Type-in-draw.odg differ diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx index c0a68aeea3de..64a791b01c02 100644 --- a/sd/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx @@ -2647,6 +2647,44 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testShapeEditInMultipleViews) CPPUNIT_ASSERT_EQUAL(false, pView1->IsTextEdit()); CPPUNIT_ASSERT_EQUAL(false, pView2->IsTextEdit()); } + + // Scenario 4 + // View1 - enters text edit mode in a shape on page A + // View2 - enters text edit mode in a shape on page B + // there is a view switch from B to A and back to B. + // View2 should remain in shape edit mode and not exit + // shape edit mode on switching back to view2 + { + CPPUNIT_ASSERT_EQUAL(false, pView1->IsTextEdit()); + CPPUNIT_ASSERT_EQUAL(false, pView2->IsTextEdit()); + + // Switch to view 1 + SfxLokHelper::setView(nView1); + pView1->SdrBeginTextEdit(pTextBoxObject); + + SfxLokHelper::setView(nView2); + pXImpressDocument->setPart(2); + SdPage* pPage3 = pViewShell2->GetActualPage(); + + CPPUNIT_ASSERT_MESSAGE("Page Change didn't work", pPage1 != pPage3); + + SdrObject* pPage3TextBoxObject = pPage3->GetObj(0); + CPPUNIT_ASSERT_EQUAL(u"Text Box 1"_ustr, pPage3TextBoxObject->GetName()); + + pView2->SdrBeginTextEdit(pPage3TextBoxObject); + CPPUNIT_ASSERT_EQUAL(true, pView2->IsTextEdit()); + + SfxLokHelper::setView(nView1); + pXImpressDocument->setPart(0); + + CPPUNIT_ASSERT_EQUAL(true, pView2->IsTextEdit()); + + SfxLokHelper::setView(nView2); + pXImpressDocument->setPart(2); + + // Fails before fix + CPPUNIT_ASSERT_EQUAL(true, pView2->IsTextEdit()); + } } CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSidebarHide) diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx index 7c5756bdb6ca..0f2102119901 100644 --- a/sd/source/ui/view/drviews1.cxx +++ b/sd/source/ui/view/drviews1.cxx @@ -946,7 +946,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage, bool bAllowChangeFocus, } } - if (bAllowChangeFocus) + if (bAllowChangeFocus && !SfxLokHelper::isSettingView()) mpDrawView->SdrEndTextEdit(); mpActualPage = nullptr;
