This is an automated email from the ASF dual-hosted git repository.

ardovm pushed a commit to branch bug35578
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit e4261b3f576e1ecd15352e270e6c8ceccdfd4a13
Author: Arrigo Marchiori <[email protected]>
AuthorDate: Wed Mar 16 21:55:52 2022 +0100

    Add "empty" and "not empty" autofilters
    
    Patch by Srinivasa Ragavan (sragavan), adapted to current sources
---
 main/sc/source/ui/view/gridwin.cxx | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/main/sc/source/ui/view/gridwin.cxx 
b/main/sc/source/ui/view/gridwin.cxx
index c40d38d..c343059 100644
--- a/main/sc/source/ui/view/gridwin.cxx
+++ b/main/sc/source/ui/view/gridwin.cxx
@@ -136,6 +136,8 @@ const sal_uInt8 SC_NESTEDBUTTON_UP   = 2;
 #define SC_AUTOFILTER_ALL              0
 #define        SC_AUTOFILTER_TOP10     1
 #define        SC_AUTOFILTER_CUSTOM    2
+#define SC_AUTOFILTER_EMPTY     3
+#define SC_AUTOFILTER_NOTEMPTY  4
 
 //     Modi fuer die FilterListBox
 enum ScFilterBoxMode
@@ -975,7 +977,7 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW 
nRow, sal_Bool bDataSele
                long nMaxText = 0;
 
                //      default entries
-        static const sal_uInt16 nDefIDs[] = { SCSTR_ALLFILTER, 
SCSTR_TOP10FILTER, SCSTR_STDFILTER };
+        static const sal_uInt16 nDefIDs[] = { SCSTR_ALLFILTER, 
SCSTR_TOP10FILTER, SCSTR_STDFILTER, SCSTR_EMPTY, SCSTR_NOTEMPTY };
                const sal_uInt16 nDefCount = sizeof(nDefIDs) / 
sizeof(sal_uInt16);
                for (i=0; i<nDefCount; i++)
                {
@@ -1311,7 +1313,20 @@ void ScGridWindow::ExecFilter( sal_uLong nSel,
                                                rNewEntry.eOp   = SC_TOPVAL;
                                                *rNewEntry.pStr = 
String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("10"));
                                        }
-                                       else
+                                       else if ( nSel == SC_AUTOFILTER_EMPTY) {
+                        rNewEntry.pStr->Erase();
+                        rNewEntry.bQueryByString = sal_False;
+                        rNewEntry.eOp   = SC_EQUAL;
+                        rNewEntry.nVal  = SC_EMPTYFIELDS;
+                    }
+                    else if (nSel == SC_AUTOFILTER_NOTEMPTY)
+                    {
+                        rNewEntry.pStr->Erase();
+                        rNewEntry.bQueryByString = sal_False;
+                        rNewEntry.eOp   = SC_EQUAL;
+                        rNewEntry.nVal  = SC_NONEMPTYFIELDS;
+                    }
+                    else
                                        {
                                                rNewEntry.eOp   = SC_EQUAL;
                                                *rNewEntry.pStr = aValue;

Reply via email to