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);

Reply via email to