sc/qa/unit/tiledrendering/SheetViewTest.cxx | 51 ++++++++++++++++++ sc/source/ui/inc/docfunc.hxx | 2 sc/source/ui/operation/TransliterateTextOperation.cxx | 7 +- 3 files changed, 55 insertions(+), 5 deletions(-)
New commits: commit 577ebb795555b4af4a63193952df9a87a79b3b58 Author: Tomaž Vajngerl <[email protected]> AuthorDate: Sat Mar 7 03:36:44 2026 +0000 Commit: Miklos Vajna <[email protected]> CommitDate: Tue Mar 10 15:52:01 2026 +0100 sc: Add sheet view sync support and test for TransliterateTextOperation Added sync support to TransliterateTextOperation and written a test case for this. Change-Id: I5b82e48662d800fdb2e76b3491d3d791fe45c496 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201333 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/sc/qa/unit/tiledrendering/SheetViewTest.cxx b/sc/qa/unit/tiledrendering/SheetViewTest.cxx index fe6417d772d4..e8003d0a02e5 100644 --- a/sc/qa/unit/tiledrendering/SheetViewTest.cxx +++ b/sc/qa/unit/tiledrendering/SheetViewTest.cxx @@ -24,6 +24,7 @@ #include <SheetViewManager.hxx> #include <attrib.hxx> #include <editeng/brushitem.hxx> +#include <i18nutil/transliteration.hxx> #include <paramisc.hxx> using namespace css; @@ -2182,6 +2183,56 @@ CPPUNIT_TEST_FIXTURE(SyncTest, testSync_FillAuto_DefaultAndSheetView) } } +CPPUNIT_TEST_FIXTURE(SyncTest, testSync_TransliterateText_DefaultAndSheetView) +{ + ScModelObj* pModelObj = createDoc("SheetView_AutoFilter_Extended.ods"); + pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>()); + ScDocument* pDocument = pModelObj->GetDocument(); + ScDocShell* pDocShell = dynamic_cast<ScDocShell*>(pModelObj->GetEmbeddedObject()); + + setupViews(); + + // Create new sheet view and sort ascending + { + switchToSheetView(); + createNewSheetViewInCurrentView(); + sortAscendingForCell(u"A1"); + } + + // Sort descending in default view + { + switchToDefaultView(); + sortDescendingForCell(u"A1"); + } + + // Default view at Column B: aaa, rrr, ccc, sss + CPPUNIT_ASSERT_EQUAL(expectedValues({ u"aaa", u"rrr", u"ccc", u"sss" }), + getValues(mpTabViewDefaultView, 1, 1, 4)); + // Sheet view at Column B: sss, ccc, rrr, aaa + CPPUNIT_ASSERT_EQUAL(expectedValues({ u"sss", u"ccc", u"rrr", u"aaa" }), + getValues(mpTabViewSheetView, 1, 1, 4)); + + // Transliterate B2:B5 to uppercase from sheet view + { + switchToSheetView(); + + SCTAB nSheetViewTab = mpTabViewSheetView->GetViewData().GetTabNumber(); + ScMarkData aMark(pDocument->GetSheetLimits()); + aMark.SelectTable(nSheetViewTab, true); + aMark.SetMarkArea(ScRange(1, 1, nSheetViewTab, 1, 4, nSheetViewTab)); + pDocShell->GetDocFunc().TransliterateText(aMark, TransliterationFlags::LOWERCASE_UPPERCASE, + true); + } + + // Sheet view: text is uppercased, ascending order + CPPUNIT_ASSERT_EQUAL(expectedValues({ u"SSS", u"CCC", u"RRR", u"AAA" }), + getValues(mpTabViewSheetView, 1, 1, 4)); + + // Default view: synced, descending order, uppercased + CPPUNIT_ASSERT_EQUAL(expectedValues({ u"AAA", u"RRR", u"CCC", u"SSS" }), + getValues(mpTabViewDefaultView, 1, 1, 4)); +} + CPPUNIT_TEST_FIXTURE(SyncTest, testSync_ChangeIndent_DefaultAndSheetView) { ScModelObj* pModelObj = createDoc("SheetView_AutoFilter.ods"); diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx index 6279fdc2fd47..ac384fd58236 100644 --- a/sc/source/ui/inc/docfunc.hxx +++ b/sc/source/ui/inc/docfunc.hxx @@ -108,7 +108,7 @@ public: bool DeleteCell( const ScAddress& rPos, const ScMarkData& rMark, InsertDeleteFlags nFlags, bool bRecord, bool bApi ); - bool TransliterateText( const ScMarkData& rMark, TransliterationFlags nType, + SC_DLLPUBLIC bool TransliterateText( const ScMarkData& rMark, TransliterationFlags nType, bool bApi ); bool SetNormalString( bool& o_rbNumFmtSet, const ScAddress& rPos, const OUString& rText, bool bApi ); diff --git a/sc/source/ui/operation/TransliterateTextOperation.cxx b/sc/source/ui/operation/TransliterateTextOperation.cxx index d0cd960b9250..0c15fe779da0 100644 --- a/sc/source/ui/operation/TransliterateTextOperation.cxx +++ b/sc/source/ui/operation/TransliterateTextOperation.cxx @@ -39,10 +39,7 @@ bool TransliterateTextOperation::runImplementation() if (mbRecord && !rDoc.IsUndoEnabled()) mbRecord = false; - if (!checkSheetViewProtection()) - return false; - - ScMarkData aMultiMark = mrMark; + ScMarkData aMultiMark = convertMark(mrMark); aMultiMark.SetMarking(false); // for MarkToMulti aMultiMark.MarkToMulti(); const ScRange& aMarkRange = aMultiMark.GetMultiMarkArea(); @@ -82,6 +79,8 @@ bool TransliterateTextOperation::runImplementation() rDoc.TransliterateText(aMultiMark, mnType); + syncSheetViews(); + if (!mrDocFunc.AdjustRowHeight(aMarkRange, true, true)) mrDocShell.PostPaint(aMarkRange, PaintPartFlags::Grid);
