use more concrete UNO classes

Change-Id: I7323b845b2088186a7239fb86af34ac8723bfafd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198372
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
Noel Grandin
2026-01-29 19:00:22 +01:00
parent 47f06e904e
commit 4344720b31
5 changed files with 19 additions and 12 deletions
+3
View File
@@ -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,
+2 -2
View File
@@ -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(); }
+5
View File
@@ -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();
+2 -1
View File
@@ -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;
+7 -9
View File
@@ -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);