sc/inc/viewuno.hxx | 3 +++ sc/source/ui/inc/tabvwsh.hxx | 4 ++-- sc/source/ui/unoobj/viewuno.cxx | 5 +++++ sc/source/ui/view/tabvwsh3.cxx | 3 ++- sc/source/ui/view/tabvwsh4.cxx | 16 +++++++--------- 5 files changed, 19 insertions(+), 12 deletions(-)
New commits: commit 4344720b313ab12cc3093541b4e2f21176d9aaaf Author: Noel Grandin <[email protected]> AuthorDate: Thu Jan 29 16:50:53 2026 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Thu Jan 29 19:00:22 2026 +0100 use more concrete UNO classes Change-Id: I7323b845b2088186a7239fb86af34ac8723bfafd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198372 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sc/inc/viewuno.hxx b/sc/inc/viewuno.hxx index c1f75beeb2a9..2310a558b063 100644 --- a/sc/inc/viewuno.hxx +++ b/sc/inc/viewuno.hxx @@ -48,6 +48,7 @@ namespace com::sun::star::view { class XSelectionChangeListener; } class ScTabViewShell; class ScPreviewShell; +class ScTableSheetObj; #define SC_VIEWPANE_ACTIVE 0xFFFF @@ -283,6 +284,8 @@ public: // XSelectedSheetsSupplier virtual css::uno::Sequence<sal_Int32> SAL_CALL getSelectedSheets() override; + + rtl::Reference< ScTableSheetObj > getActiveScSheet(); }; class ScPreviewObj final : public SfxBaseController, diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx index b9597ccedb21..a7ba9ed4b659 100644 --- a/sc/source/ui/inc/tabvwsh.hxx +++ b/sc/source/ui/inc/tabvwsh.hxx @@ -273,11 +273,11 @@ public: SC_DLLPUBLIC bool IsRefInputMode() const; void ExecuteInputDirect(); - void HandleDuplicateRecords(const css::uno::Reference<css::sheet::XSpreadsheet>& ActiveSheet, + void HandleDuplicateRecords(const rtl::Reference<ScTableSheetObj>& ActiveSheet, const css::table::CellRangeAddress& aRange, bool bRemove, bool bIncludesHeaders, bool bDuplicateRows, const std::vector<int>& rSelectedEntries); - css::uno::Reference<css::sheet::XSpreadsheet> GetRangeWithSheet(css::table::CellRangeAddress& rRangeData, bool& bHasData, bool bHasUnoArguments); + rtl::Reference<ScTableSheetObj> GetRangeWithSheet(css::table::CellRangeAddress& rRangeData, bool& bHasData, bool bHasUnoArguments); void ExtendSingleSelection(css::table::CellRangeAddress& rRangeData); const ScInputHandler* GetInputHandler() const { return mpInputHandler.get(); } diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx index 34384201c7f1..2ad439ac16a5 100644 --- a/sc/source/ui/unoobj/viewuno.cxx +++ b/sc/source/ui/unoobj/viewuno.cxx @@ -1082,6 +1082,11 @@ rtl::Reference<ScViewPaneObj> ScTabViewObj::GetObjectByIndex_Impl(sal_uInt16 nIn } uno::Reference<sheet::XSpreadsheet> SAL_CALL ScTabViewObj::getActiveSheet() +{ + return getActiveScSheet(); +} + +rtl::Reference<ScTableSheetObj> ScTabViewObj::getActiveScSheet() { SolarMutexGuard aGuard; ScTabViewShell* pViewSh = GetViewShell(); diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx index c15d7c56c0b8..a4536393a88b 100644 --- a/sc/source/ui/view/tabvwsh3.cxx +++ b/sc/source/ui/view/tabvwsh3.cxx @@ -47,6 +47,7 @@ #include <protectiondlg.hxx> #include <duplicaterecordsdlg.hxx> #include <markdata.hxx> +#include <cellsuno.hxx> #include <svl/ilstitem.hxx> #include <vector> @@ -839,7 +840,7 @@ void ScTabViewShell::Execute( SfxRequest& rReq ) { using namespace com::sun::star; table::CellRangeAddress aCellRange; - uno::Reference<sheet::XSpreadsheet> xActiveSheet; + rtl::Reference<ScTableSheetObj> xActiveSheet; DuplicatesResponse aResponse; bool bHasData = true; diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx index 9431577b5a4b..dc26f75673da 100644 --- a/sc/source/ui/view/tabvwsh4.cxx +++ b/sc/source/ui/view/tabvwsh4.cxx @@ -78,6 +78,7 @@ #include <preview.hxx> #include <documentlinkmgr.hxx> #include <gridwin.hxx> +#include <cellsuno.hxx> #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/configuration/theDefaultProvider.hpp> @@ -1860,7 +1861,7 @@ static bool lcl_CheckInArray(std::vector<uno::Sequence<uno::Any>>& nUniqueRecord return false; } -uno::Reference<css::sheet::XSpreadsheet> ScTabViewShell::GetRangeWithSheet(css::table::CellRangeAddress& rRangeData, bool& bHasData, bool bHasUnoArguments) +rtl::Reference<ScTableSheetObj> ScTabViewShell::GetRangeWithSheet(css::table::CellRangeAddress& rRangeData, bool& bHasData, bool bHasUnoArguments) { // get spreadsheet document model & controller uno::Reference<frame::XModel> xModel(GetViewData().GetDocShell()->GetModel()); @@ -1869,7 +1870,7 @@ uno::Reference<css::sheet::XSpreadsheet> ScTabViewShell::GetRangeWithSheet(css:: // spreadsheet's extension of com.sun.star.frame.Controller service ScTabViewObj* pSpreadsheetDocument = dynamic_cast<ScTabViewObj*>(xController.get()); assert(pSpreadsheetDocument); - uno::Reference<sheet::XSpreadsheet> ActiveSheet = pSpreadsheetDocument->getActiveSheet(); + rtl::Reference<ScTableSheetObj> ActiveSheet = pSpreadsheetDocument->getActiveScSheet(); if (!bHasUnoArguments) { @@ -1924,7 +1925,7 @@ void ScTabViewShell::ExtendSingleSelection(css::table::CellRangeAddress& rRangeD } /* bool bRemove == false ==> highlight duplicate rows */ -void ScTabViewShell::HandleDuplicateRecords(const css::uno::Reference<css::sheet::XSpreadsheet>& ActiveSheet, +void ScTabViewShell::HandleDuplicateRecords(const rtl::Reference<ScTableSheetObj>& ActiveSheet, const css::table::CellRangeAddress& aRange, bool bRemove, bool bIncludesHeaders, bool bDuplicateRows, const std::vector<int>& rSelectedEntries) @@ -1936,13 +1937,10 @@ void ScTabViewShell::HandleDuplicateRecords(const css::uno::Reference<css::sheet } uno::Reference<frame::XModel> xModel(GetViewData().GetDocShell()->GetModel()); - uno::Reference<sheet::XSheetCellRange> xSheetRange( - ActiveSheet->getCellRangeByPosition(aRange.StartColumn, aRange.StartRow, aRange.EndColumn, aRange.EndRow), - uno::UNO_QUERY); + rtl::Reference<ScCellRangeObj> xSheetRange( + ActiveSheet->getScCellRangeByPosition(aRange.StartColumn, aRange.StartRow, aRange.EndColumn, aRange.EndRow)); - - uno::Reference<sheet::XCellRangeData> xCellRangeData(xSheetRange, uno::UNO_QUERY); - uno::Sequence<uno::Sequence<uno::Any>> aDataArray = xCellRangeData->getDataArray(); + uno::Sequence<uno::Sequence<uno::Any>> aDataArray = xSheetRange->getDataArray(); uno::Reference< document::XUndoManagerSupplier > xUndoManager( xModel, uno::UNO_QUERY ); uno::Reference<document::XActionLockable> xLockable(xModel, uno::UNO_QUERY);
