sc/source/ui/docshell/dbdocfun.cxx |   19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

New commits:
commit 91527a056e011546edaab178c8c46ce2c2478f40
Author:     Markus Mohrhard <[email protected]>
AuthorDate: Thu Jul 24 23:17:00 2025 +0800
Commit:     Andras Timar <[email protected]>
CommitDate: Mon Nov 17 18:59:00 2025 +0100

    update the filter buttons if the area of a DB range changes
    
    Change-Id: I032a734a6097994f769fc27b1211e0078799eefc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193665
    Tested-by: Andras Timar <[email protected]>
    Reviewed-by: Andras Timar <[email protected]>

diff --git a/sc/source/ui/docshell/dbdocfun.cxx 
b/sc/source/ui/docshell/dbdocfun.cxx
index 16e9e1b1cd48..6c22458f3a63 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -230,14 +230,31 @@ void ScDBDocFunc::ModifyDBData( const ScDBData& rNewData )
     pData->GetArea(aOldRange);
     rNewData.GetArea(aNewRange);
     bool bAreaChanged = ( aOldRange != aNewRange );     // then a 
recompilation is needed
+    bool bOldAutoFilter = pData->HasAutoFilter();
+    bool bNewAutoFilter = rNewData.HasAutoFilter();
 
     std::unique_ptr<ScDBCollection> pUndoColl;
     if (bUndo)
         pUndoColl.reset( new ScDBCollection( *pDocColl ) );
 
     *pData = rNewData;
-    if (bAreaChanged)
+    if (bAreaChanged) {
         rDoc.CompileDBFormula();
+        if (bOldAutoFilter && !bNewAutoFilter)
+        {
+            rDoc.RemoveFlagsTab(aOldRange.aStart.Col(), 
aOldRange.aStart.Row(), aOldRange.aEnd.Col(), aOldRange.aEnd.Row(), 
aOldRange.aStart.Tab(), ScMF::Auto);
+        }
+        else if (bOldAutoFilter && bNewAutoFilter)
+        {
+            rDoc.RemoveFlagsTab(aOldRange.aStart.Col(), 
aOldRange.aStart.Row(), aOldRange.aEnd.Col(), aOldRange.aEnd.Row(), 
aOldRange.aStart.Tab(), ScMF::Auto);
+            rDoc.ApplyFlagsTab(aNewRange.aStart.Col(), aNewRange.aStart.Row(), 
aNewRange.aEnd.Col(), aNewRange.aStart.Row(), aNewRange.aStart.Tab(), 
ScMF::Auto);
+        }
+        else if (!bOldAutoFilter && bNewAutoFilter)
+        {
+            rDoc.ApplyFlagsTab(aNewRange.aStart.Col(), aNewRange.aStart.Row(), 
aNewRange.aEnd.Col(), aNewRange.aStart.Row(), aNewRange.aStart.Tab(), 
ScMF::Auto);
+        }
+        rDocShell.PostPaint(aOldRange, PaintPartFlags::Grid);
+    }
 
     if (bUndo)
     {

Reply via email to