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