sc/source/ui/inc/gridwin.hxx | 2 +- sc/source/ui/unoobj/docuno.cxx | 1 + sc/source/ui/view/gridwin.cxx | 29 +++++++++++++++++++++++------ 3 files changed, 25 insertions(+), 7 deletions(-)
New commits: commit c26c2ffd0cede448062369c47e85d455f903e0a6 Author: Balazs Varga <[email protected]> AuthorDate: Tue Nov 18 08:33:25 2025 +0100 Commit: Miklos Vajna <[email protected]> CommitDate: Wed Nov 19 10:50:34 2025 +0100 Table Styles ooxml: send TableAutoFillInfo callback state for kit to create new section as an indication of selected database table style range. Change-Id: I0737f90f376e33a1c79cbfda169bddabd366a8dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194152 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index 077b912e72b4..5bc5f2c96023 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -338,7 +338,7 @@ class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::DocWindow, public DropTarget void UpdateFormulaRange(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2); std::unique_ptr<sdr::overlay::OverlayObject> DrawOverlay(const std::vector<tools::Rectangle>& rRects, const Color& rColor, bool bBorder, bool bContrastOutline, sdr::overlay::OverlayType eOverlayType); - std::unique_ptr<sdr::overlay::OverlayObjectList> DrawFillMarker(SCCOL nCol, SCROW nRow, std::optional<tools::Rectangle>& rRect); + std::unique_ptr<sdr::overlay::OverlayObjectList> DrawFillMarker(SCCOL nCol, SCROW nRow, std::optional<tools::Rectangle>& rRect, bool bIsTableArea); protected: virtual void PrePaint(vcl::RenderContext& rRenderContext) override; diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 8f7de5a1c990..3a7545db4f60 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -1138,6 +1138,7 @@ void ScModelObj::setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, int // refresh our view's take on other view's cursors & selections ScGridWindow* pGridWindow = pViewData->GetActiveWin(); pGridWindow->UpdateEditViewPos(); + pGridWindow->UpdateDatabaseOverlay(); pGridWindow->updateKitOtherCursors(); pGridWindow->updateOtherKitSelections(); pGridWindow->resetCachedViewGridOffsets(); diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 4ed7538aff12..2447a31c47be 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -6616,7 +6616,7 @@ void ScGridWindow::updateOtherKitSelections() const namespace { -void updateLibreOfficeKitAutoFill(const ScViewData& rViewData, tools::Rectangle const & rRectangle) +void updateLibreOfficeKitAutoFill(const ScViewData& rViewData, tools::Rectangle const & rRectangle, bool bIsTableArea) { if (!comphelper::LibreOfficeKit::isActive()) return; @@ -6635,7 +6635,19 @@ void updateLibreOfficeKitAutoFill(const ScViewData& rViewData, tools::Rectangle } ScTabViewShell* pViewShell = rViewData.GetViewShell(); - pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CELL_AUTO_FILL_AREA, sRectangleString); + if (bIsTableArea) + { + tools::JsonWriter writer; + writer.put("commandName", "TableAutoFillInfo"); + { + const auto aState = writer.startNode("state"); + writer.put("rectangle", sRectangleString); + } + OString info = writer.finishAndGetAsOString(); + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, info); + } + else + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CELL_AUTO_FILL_AREA, sRectangleString); } } //end anonymous namespace @@ -6972,6 +6984,11 @@ void ScGridWindow::DeleteDatabaseOverlay() { mpDBExpandRect.reset(); mpOODatabase.reset(); + if (comphelper::LibreOfficeKit::isActive()) // notify the LibreOfficeKit + { + tools::Rectangle aEmptyRect; + updateLibreOfficeKitAutoFill(mrViewData, aEmptyRect, true); + } } void ScGridWindow::UpdateDatabaseOverlay() @@ -7027,7 +7044,7 @@ void ScGridWindow::UpdateDatabaseOverlay() true, true)); xOverlayManager->add(*pOverlay); - std::unique_ptr<sdr::overlay::OverlayObjectList> pOverlayList = DrawFillMarker(aCurrRange.aEnd.Col(), aCurrRange.aEnd.Row(), mpDBExpandRect); + std::unique_ptr<sdr::overlay::OverlayObjectList> pOverlayList = DrawFillMarker(aCurrRange.aEnd.Col(), aCurrRange.aEnd.Row(), mpDBExpandRect, true); if (pOverlayList) { mpOODatabase.swap(pOverlayList); @@ -7071,7 +7088,7 @@ void ScGridWindow::DeleteAutoFillOverlay() mpAutoFillRect.reset(); } -std::unique_ptr<sdr::overlay::OverlayObjectList> ScGridWindow::DrawFillMarker(SCCOL nX, SCROW nY, std::optional<tools::Rectangle>& rRect) +std::unique_ptr<sdr::overlay::OverlayObjectList> ScGridWindow::DrawFillMarker(SCCOL nX, SCROW nY, std::optional<tools::Rectangle>& rRect, bool bIsTableArea) { SCTAB nTab = mrViewData.CurrentTabForData(); ScDocument& rDoc = mrViewData.GetDocument(); @@ -7116,7 +7133,7 @@ std::unique_ptr<sdr::overlay::OverlayObjectList> ScGridWindow::DrawFillMarker(SC rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager = getOverlayManager(); if (comphelper::LibreOfficeKit::isActive()) // notify the LibreOfficeKit { - updateLibreOfficeKitAutoFill(mrViewData, aFillRect); + updateLibreOfficeKitAutoFill(mrViewData, aFillRect, bIsTableArea); } else if (xOverlayManager.is()) { @@ -7198,7 +7215,7 @@ void ScGridWindow::UpdateAutoFillOverlay() return; } - mpOOAutoFill = DrawFillMarker(nX, nY, mpAutoFillRect); + mpOOAutoFill = DrawFillMarker(nX, nY, mpAutoFillRect, false); } void ScGridWindow::DeleteDragRectOverlay()
