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

Reply via email to