[Libreoffice-commits] core.git: Branch 'private/jmux/tdf#102010' - 63 commits - basctl/source chart2/source compilerplugins/clang connectivity/source cui/source dbaccess/source desktop/source extensions/source filter/source forms/source formula/source fpicker/source i18npool/source include/osl include/sfx2 include/svtools include/svx include/toolkit include/tools include/vcl l10ntools/inc l10ntools/source Makefile.in oox/source registry/workben reportdesign/source rsc/inc rsc/source sc/source sd/qa sd/source sfx2/source solenv/gbuild solenv/gbuildtojson solenv/PythonTest_solenv_python.mk solenv/qa starmath/inc starmath/source svtools/source svx/inc svx/source sw/CppunitTest_sw_mailmerge.mk sw/inc sw/qa sw/source toolkit/source unotools/source uui/source vcl/inc vcl/qa vcl/source vcl/unx vcl/win xmlsecurity/CppunitTest_xmlsecurity_signing.mk xmlsecurity/inc xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Library_xsec_fw.mk xmlsecurity/qa xmlsecurity/source

Jan-Marek Glogowski glogow at fbihome.de
Fri Nov 25 13:21:38 UTC 2016


Rebased ref, commits from common ancestor:
commit a1b6dd748098a09dde5c31f1c5f6d3851283e219
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Nov 25 14:02:06 2016 +0100

    KAB loplugin:datamembershadow
    
    Change-Id: I1962ab1d131cf714f8bd540b589e793c4389cfb2

diff --git a/connectivity/source/drivers/kab/KCatalog.cxx b/connectivity/source/drivers/kab/KCatalog.cxx
index 63d0449..06cc13c 100644
--- a/connectivity/source/drivers/kab/KCatalog.cxx
+++ b/connectivity/source/drivers/kab/KCatalog.cxx
@@ -34,8 +34,7 @@ using namespace ::cppu;
 
 KabCatalog::KabCatalog(KabConnection* _pCon)
         : connectivity::sdbcx::OCatalog(_pCon),
-          m_pConnection(_pCon),
-          m_xMetaData(m_pConnection->getMetaData())
+          m_pConnection(_pCon)
 {
 }
 
diff --git a/connectivity/source/drivers/kab/KCatalog.hxx b/connectivity/source/drivers/kab/KCatalog.hxx
index e524b57..c3c45fa 100644
--- a/connectivity/source/drivers/kab/KCatalog.hxx
+++ b/connectivity/source/drivers/kab/KCatalog.hxx
@@ -31,7 +31,6 @@ namespace connectivity
         class KabCatalog : public connectivity::sdbcx::OCatalog
         {
             KabConnection* m_pConnection;       // used to get the metadata
-            css::uno::Reference< css::sdbc::XDatabaseMetaData > m_xMetaData; // just to make things easier
 
         public:
             explicit KabCatalog(KabConnection* _pCon);
diff --git a/connectivity/source/drivers/kab/KStatement.cxx b/connectivity/source/drivers/kab/KStatement.cxx
index a59070c..2b0a3cd 100644
--- a/connectivity/source/drivers/kab/KStatement.cxx
+++ b/connectivity/source/drivers/kab/KStatement.cxx
@@ -66,8 +66,7 @@ KabCommonStatement::KabCommonStatement(KabConnection* _pConnection )
     m_aParser(_pConnection->getComponentContext()),
     m_aSQLIterator(_pConnection, _pConnection->createCatalog()->getTables(), m_aParser),
     m_pParseTree(nullptr),
-    m_pConnection(_pConnection),
-    rBHelper(KabCommonStatement_BASE::rBHelper)
+    m_pConnection(_pConnection)
 {
     m_pConnection->acquire();
 }
diff --git a/connectivity/source/drivers/kab/KStatement.hxx b/connectivity/source/drivers/kab/KStatement.hxx
index d0fe69f..e76522c 100644
--- a/connectivity/source/drivers/kab/KStatement.hxx
+++ b/connectivity/source/drivers/kab/KStatement.hxx
@@ -91,7 +91,7 @@ namespace connectivity
             virtual ~KabCommonStatement() override;
 
         public:
-            ::cppu::OBroadcastHelper& rBHelper;
+            using KabCommonStatement_BASE::rBHelper;
 
             explicit KabCommonStatement(KabConnection *_pConnection);
             using KabCommonStatement_BASE::operator css::uno::Reference< css::uno::XInterface >;
commit 01aaddd4e501f576405d64ccea33f41f1dbbe17b
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Thu Nov 24 13:52:23 2016 +0100

    MM UNO always print single files to printer
    
    Fix a missing hunk from e0ad036eed6b151ea81311fcf9ba46f1726b103c,
    which causes assertion, if MM is used via UNO.
    
    Thanks to Alex Kempshall, finding the assertion when testing MM.
    
    Change-Id: Ia0cd6053838adc6f0a4ce93902f06423849bf851

diff --git a/sw/source/uibase/uno/unomailmerge.cxx b/sw/source/uibase/uno/unomailmerge.cxx
index 0107496..32e2fd1 100644
--- a/sw/source/uibase/uno/unomailmerge.cxx
+++ b/sw/source/uibase/uno/unomailmerge.cxx
@@ -693,7 +693,7 @@ uno::Any SAL_CALL SwXMailMerge::execute(
             // #i25686# printing should not be done asynchronously to prevent dangling offices
             // when mail merge is called as command line macro
             aMergeDesc.aPrintOptions = m_aPrintSettings;
-            aMergeDesc.bCreateSingleFile = false;
+            aMergeDesc.bCreateSingleFile = true;
         }
         break;
     case MailMergeType::SHELL:
commit d3d9d26372b0da5626389aef835f81129bd1882a
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Oct 4 10:13:24 2016 +0000

    tdf#102010 Never overwrite MM files via UNO
    
    Fixes the regression introduced by
      commit e637b6743a506ef74c93ccbe15ab6642f3baa34f
    
    This commit removed the crazy bSubjectIsFilename handling,
    where I didn't understood the case of bSubjectIsFilename
    and a user supplied prefix.
    
    Mail merge to files never overwrites an existing document,
    but there is the special case, when a user selects a target
    filename in the MM dialog for single file MM.
    
    Should be fixed by a successive commmit, reverting this and
    removing an existing file before starting the MM job.
    
    Change-Id: Idda487023e6984de9c1e701fc088a6b7f92e9847

diff --git a/sw/CppunitTest_sw_mailmerge.mk b/sw/CppunitTest_sw_mailmerge.mk
index 693a5e2..8d2a3f8 100644
--- a/sw/CppunitTest_sw_mailmerge.mk
+++ b/sw/CppunitTest_sw_mailmerge.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_mailmerge, \
     sfx \
     sw \
     test \
+    tl \
     unotest \
     utl \
 ))
diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx
index 6078b27..b124106 100644
--- a/sw/inc/dbmgr.hxx
+++ b/sw/inc/dbmgr.hxx
@@ -162,7 +162,23 @@ struct SwMergeDescriptor
      * @defgroup file Mail merge as File settings
      * @addtogroup file
      * @{ */
-    OUString                                            sPath;
+
+    /**
+     * Basename incl. the path for the generated files.
+     *
+     * The final filename will be created by concating a number to prevent
+     * overwriting an existing file and the extension based on the filter
+     * settings.
+     */
+    OUString                                            sPrefix;
+    /**
+     * Use the sPrefix as the target filename also overwriting an existing
+     * target file.
+     *
+     * Just used for the internal mail merge dialogs as mail merge never
+     * overwrites existing files (see SwDBManager::ExecuteFormLetter).
+     */
+    bool                                                bPrefixIsFilename;
     /** @} */
 
     /**
@@ -205,6 +221,7 @@ struct SwMergeDescriptor
         rSh(rShell),
         rDescriptor(rDesc),
         bCreateSingleFile( false ),
+        bPrefixIsFilename( false ),
         bSendAsHTML( true ),
         bSendAsAttachment( false ),
         pMailMergeConfigItem( nullptr )
diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx b/sw/qa/extras/mailmerge/mailmerge.cxx
index 7d45b17..0c35652 100644
--- a/sw/qa/extras/mailmerge/mailmerge.cxx
+++ b/sw/qa/extras/mailmerge/mailmerge.cxx
@@ -25,6 +25,8 @@
 #include <com/sun/star/sdbc/XRowSet.hpp>
 #include <com/sun/star/sdbcx/XRowLocate.hpp>
 
+#include <tools/urlobj.hxx>
+
 #include <wrtsh.hxx>
 #include <ndtxt.hxx>
 #include <swdtflvr.hxx>
@@ -145,7 +147,8 @@ public:
                                          ( OUString( m_directories.getURLFromSrc(mpTestDocumentPath) + OUString::createFromAscii(filename)) ) ) ) );
         mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DATA_SOURCE_NAME ), uno::Any( aDBName ) ) );
         mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_URL ), uno::Any( aWorkDir ) ) );
-        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) );
+        if (file)
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) );
 
         if (bPrefixIsColumn)
             mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_FROM_COLUMN ), uno::Any( true ) ) );
@@ -173,7 +176,7 @@ public:
 
     }
 
-    void executeMailMerge()
+    void executeMailMerge( bool bDontLoadResult = false )
     {
         uno::Sequence< beans::NamedValue > aSeqMailMergeArgs = comphelper::containerToSequence( mMMargs );
         uno::Any res = mxJob->execute( aSeqMailMergeArgs );
@@ -196,6 +199,8 @@ public:
                 bOk &= rValue >>= mnCurOutputType;
             else if (rName == UNO_NAME_FILE_NAME_FROM_COLUMN)
                 bOk &= rValue >>= bMMFilenameFromColumn;
+            else if (rName == UNO_NAME_DOCUMENT_URL)
+                bOk &= rValue >>= msMailMergeDocumentURL;
         }
 
         CPPUNIT_ASSERT(bOk);
@@ -214,7 +219,7 @@ public:
         else
         {
             CPPUNIT_ASSERT(res == true);
-            if( !bMMFilenameFromColumn )
+            if( !bMMFilenameFromColumn && !bDontLoadResult )
                 loadMailMergeDocument( 0 );
         }
     }
@@ -252,7 +257,17 @@ public:
     */
     void loadMailMergeDocument( int number )
     {
-        OUString name = msMailMergeOutputPrefix + OUString::number( number ) + ".odt";
+        OUString name;
+        if (!msMailMergeOutputPrefix.isEmpty())
+            name = msMailMergeOutputPrefix;
+        else
+        {
+            INetURLObject aURLObj;
+            aURLObj.SetSmartProtocol( INetProtocol::File );
+            aURLObj.SetSmartURL( msMailMergeDocumentURL );
+            name = aURLObj.GetBase();
+        }
+        name += OUString::number( number ) + ".odt";
         loadMailMergeDocument( name );
     }
 
@@ -262,6 +277,7 @@ protected:
 
     uno::Reference< css::task::XJob > mxJob;
     std::vector< beans::NamedValue > mMMargs;
+    OUString msMailMergeDocumentURL;
     OUString msMailMergeOutputURL;
     OUString msMailMergeOutputPrefix;
     sal_Int16 mnCurOutputType;
@@ -603,5 +619,27 @@ DECLARE_FILE_MAILMERGE_TEST_COLUMN(testDirMailMerge, "simple-mail-merge.odt", "1
     }
 }
 
+DECLARE_FILE_MAILMERGE_TEST(testTdf102010, "empty.odt", "10-testing-addresses.ods", "testing-addresses")
+{
+    // Create "correct" automatic filename for non-user-supplied-prefix
+    for (auto aNamedValueIter = mMMargs.begin(); aNamedValueIter != mMMargs.end();)
+    {
+        if ( aNamedValueIter->Name == UNO_NAME_FILE_NAME_PREFIX )
+            aNamedValueIter = mMMargs.erase( aNamedValueIter );
+        else
+        {
+            std::cout << aNamedValueIter->Name << ": " << aNamedValueIter->Value << std::endl;
+            ++aNamedValueIter;
+        }
+    }
+    mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_SAVE_AS_SINGLE_FILE ), uno::Any( true ) ) );
+
+    // Generate correct mail merge result filename
+    executeMailMerge();
+    // Don't overwrite previous result
+    executeMailMerge( true );
+    loadMailMergeDocument( 1 );
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx
index 1a3e035..398486c 100644
--- a/sw/source/uibase/dbui/dbmgr.cxx
+++ b/sw/source/uibase/dbui/dbmgr.cxx
@@ -1098,11 +1098,13 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell,
     bool bCheckSingleFile_ = rMergeDescriptor.bCreateSingleFile;
     if( bMT_EMAIL )
     {
+        assert( !rMergeDescriptor.bPrefixIsFilename );
         assert( bMT_EMAIL && !bCheckSingleFile_ );
         bCheckSingleFile_ = false;
     }
     else if( bMT_SHELL || bMT_PRINTER )
     {
+        assert( !rMergeDescriptor.bPrefixIsFilename );
         assert( (bMT_SHELL || bMT_PRINTER) && bCheckSingleFile_ );
         bCheckSingleFile_ = true;
     }
@@ -1318,7 +1320,7 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell,
         // create a new temporary file name - only done once in case of bCreateSingleFile
         if( bNeedsTempFiles && ( !bWorkDocInitialized || !bCreateSingleFile ))
         {
-            OUString sPath = rMergeDescriptor.sPath;
+            OUString sPrefix = rMergeDescriptor.sPrefix;
             OUString sLeading;
 
             //#i97667# if the name is from a database field then it will be used _as is_
@@ -1331,14 +1333,14 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell,
             }
             else
             {
-                INetURLObject aEntry( sPath );
+                INetURLObject aEntry( sPrefix );
                 sLeading = aEntry.GetBase();
                 aEntry.removeSegment();
-                sPath = aEntry.GetMainURL( INetURLObject::NO_DECODE );
+                sPrefix = aEntry.GetMainURL( INetURLObject::NO_DECODE );
             }
 
             OUString sExt(comphelper::string::stripStart(pStoreToFilter->GetDefaultExtension(), '*'));
-            aTempFile.reset( new utl::TempFile(sLeading, sColumnData.isEmpty(), &sExt, &sPath, true) );
+            aTempFile.reset( new utl::TempFile(sLeading, sColumnData.isEmpty(), &sExt, &sPrefix, true) );
             if( !aTempFile->IsValid() )
             {
                 ErrorHandler::HandleError( ERRCODE_IO_NOTSUPPORTED );
@@ -1559,11 +1561,11 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell,
             // save merged document
             assert( aTempFile.get() );
             INetURLObject aTempFileURL;
-            if( rMergeDescriptor.sPath.isEmpty() )
+            if( rMergeDescriptor.sPrefix.isEmpty() || !rMergeDescriptor.bPrefixIsFilename )
                 aTempFileURL.SetURL( aTempFile->GetURL() );
             else
             {
-                aTempFileURL.SetURL( rMergeDescriptor.sPath );
+                aTempFileURL.SetURL( rMergeDescriptor.sPrefix );
                 // remove the unneeded temporary file
                 aTempFile->EnableKillingFile();
             }
@@ -2863,7 +2865,8 @@ void SwDBManager::ExecuteFormLetter( SwWrtShell& rSh,
         SwMergeDescriptor aMergeDesc( pImpl->pMergeDialog->GetMergeType(), rSh, aDescriptor );
         aMergeDesc.sSaveToFilter = pImpl->pMergeDialog->GetSaveFilter();
         aMergeDesc.bCreateSingleFile = pImpl->pMergeDialog->IsSaveSingleDoc();
-        aMergeDesc.sPath = pImpl->pMergeDialog->GetTargetURL();
+        aMergeDesc.bPrefixIsFilename = aMergeDesc.bCreateSingleFile;
+        aMergeDesc.sPrefix = pImpl->pMergeDialog->GetTargetURL();
         if( !aMergeDesc.bCreateSingleFile && pImpl->pMergeDialog->IsGenerateFromDataBase() )
         {
             aMergeDesc.sDBcolumn = pImpl->pMergeDialog->GetColumnName();
diff --git a/sw/source/uibase/uno/unomailmerge.cxx b/sw/source/uibase/uno/unomailmerge.cxx
index 49aaacc..0107496 100644
--- a/sw/source/uibase/uno/unomailmerge.cxx
+++ b/sw/source/uibase/uno/unomailmerge.cxx
@@ -738,7 +738,7 @@ uno::Any SAL_CALL SwXMailMerge::execute(
                 aPath += aCurFileNamePrefix;
             }
 
-            aMergeDesc.sPath = aPath;
+            aMergeDesc.sPrefix = aPath;
             aMergeDesc.sSaveToFilter = m_sSaveFilter;
             aMergeDesc.sSaveToFilterOptions = m_sSaveFilterOptions;
             aMergeDesc.aSaveToFilterData = m_aSaveFilterData;
commit 5c967a92537604a7c0f35f7aed18308dc52b0e98
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Mon Oct 3 21:51:56 2016 +0200

    MM allow easier manipulation of MM test arguments
    
    Keep the beans::NamedValue vector around and convert it to a
    uno::Sequence just before executing the mail merge job.
    
    Change-Id: Ib2b4863337af20fb4423cc1b4ea4223d66d63ae5

diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx b/sw/qa/extras/mailmerge/mailmerge.cxx
index bb4ec55..7d45b17 100644
--- a/sw/qa/extras/mailmerge/mailmerge.cxx
+++ b/sw/qa/extras/mailmerge/mailmerge.cxx
@@ -138,29 +138,29 @@ public:
         uno::Reference< task::XJob > xJob( getMultiServiceFactory()->createInstance( "com.sun.star.text.MailMerge" ), uno::UNO_QUERY_THROW );
         mxJob.set( xJob );
 
-        std::vector< beans::NamedValue > args;
+        mMMargs.reserve( 15 );
 
-        args.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_TYPE ), uno::Any( file ? text::MailMergeType::FILE : text::MailMergeType::SHELL ) ) );
-        args.push_back( beans::NamedValue( OUString( UNO_NAME_DOCUMENT_URL ), uno::Any(
+        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_TYPE ), uno::Any( file ? text::MailMergeType::FILE : text::MailMergeType::SHELL ) ) );
+        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DOCUMENT_URL ), uno::Any(
                                          ( OUString( m_directories.getURLFromSrc(mpTestDocumentPath) + OUString::createFromAscii(filename)) ) ) ) );
-        args.push_back( beans::NamedValue( OUString( UNO_NAME_DATA_SOURCE_NAME ), uno::Any( aDBName ) ) );
-        args.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_URL ), uno::Any( aWorkDir ) ) );
-        args.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) );
+        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DATA_SOURCE_NAME ), uno::Any( aDBName ) ) );
+        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_OUTPUT_URL ), uno::Any( aWorkDir ) ) );
+        mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_PREFIX ), uno::Any( aPrefix )) );
 
         if (bPrefixIsColumn)
-            args.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_FROM_COLUMN ), uno::Any( true ) ) );
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_FILE_NAME_FROM_COLUMN ), uno::Any( true ) ) );
 
         if (tablename)
         {
-            args.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND_TYPE ), uno::Any( sdb::CommandType::TABLE ) ) );
-            args.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND ), uno::Any( OUString::createFromAscii(tablename) ) ) );
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND_TYPE ), uno::Any( sdb::CommandType::TABLE ) ) );
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_DAD_COMMAND ), uno::Any( OUString::createFromAscii(tablename) ) ) );
         }
 
         if (nDataSets > 0)
         {
             uno::Reference< sdbc::XRowSet > xCurResultSet = getXResultFromDataset( tablename, aDBName );
             uno::Reference< sdbcx::XRowLocate > xCurRowLocate( xCurResultSet, uno::UNO_QUERY );
-            args.push_back( beans::NamedValue( OUString( UNO_NAME_RESULT_SET ), uno::Any( xCurResultSet ) ) );
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_RESULT_SET ), uno::Any( xCurResultSet ) ) );
             std::vector< uno::Any > vResult;
             vResult.reserve( nDataSets );
             sal_Int32 i;
@@ -168,20 +168,20 @@ public:
             {
                 vResult.push_back( uno::Any( xCurRowLocate->getBookmark() ) );
             }
-            args.push_back( beans::NamedValue( OUString( UNO_NAME_SELECTION ), uno::Any( comphelper::containerToSequence(vResult) ) ) );
+            mMMargs.push_back( beans::NamedValue( OUString( UNO_NAME_SELECTION ), uno::Any( comphelper::containerToSequence(vResult) ) ) );
         }
 
-        mSeqMailMergeArgs = comphelper::containerToSequence( args );
     }
 
     void executeMailMerge()
     {
-        uno::Any res = mxJob->execute( mSeqMailMergeArgs );
+        uno::Sequence< beans::NamedValue > aSeqMailMergeArgs = comphelper::containerToSequence( mMMargs );
+        uno::Any res = mxJob->execute( aSeqMailMergeArgs );
 
-        const beans::NamedValue *pArguments = mSeqMailMergeArgs.getConstArray();
+        const beans::NamedValue *pArguments = aSeqMailMergeArgs.getConstArray();
         bool bOk = true;
         bool bMMFilenameFromColumn = false;
-        sal_Int32 nArgs = mSeqMailMergeArgs.getLength();
+        sal_Int32 nArgs = aSeqMailMergeArgs.getLength();
 
         for (sal_Int32 i = 0; i < nArgs; ++i) {
             const OUString &rName  = pArguments[i].Name;
@@ -189,9 +189,9 @@ public:
 
             // all error checking was already done by the MM job execution
             if (rName == UNO_NAME_OUTPUT_URL)
-                bOk &= rValue >>= mailMergeOutputURL;
+                bOk &= rValue >>= msMailMergeOutputURL;
             else if (rName == UNO_NAME_FILE_NAME_PREFIX)
-                bOk &= rValue >>= mailMergeOutputPrefix;
+                bOk &= rValue >>= msMailMergeOutputPrefix;
             else if (rName == UNO_NAME_OUTPUT_TYPE)
                 bOk &= rValue >>= mnCurOutputType;
             else if (rName == UNO_NAME_FILE_NAME_FROM_COLUMN)
@@ -227,8 +227,8 @@ public:
         if (mnCurOutputType != text::MailMergeType::FILE)
             return nullptr;
 
-        OUString name = mailMergeOutputPrefix + OUString::number( 0 ) + ".odt";
-        return parseExportInternal( mailMergeOutputURL + "/" + name, rStreamName );
+        OUString name = msMailMergeOutputPrefix + OUString::number( 0 ) + ".odt";
+        return parseExportInternal( msMailMergeOutputURL + "/" + name, rStreamName );
     }
 
     void loadMailMergeDocument( const OUString &filename )
@@ -239,7 +239,7 @@ public:
         // Output name early, so in the case of a hang, the name of the hanging input file is visible.
         std::cout << filename << ",";
         mnStartTime = osl_getGlobalTimer();
-        mxComponent = loadFromDesktop(mailMergeOutputURL + "/" + filename, "com.sun.star.text.TextDocument");
+        mxComponent = loadFromDesktop(msMailMergeOutputURL + "/" + filename, "com.sun.star.text.TextDocument");
         CPPUNIT_ASSERT( mxComponent.is());
         OString name2 = OUStringToOString( filename, RTL_TEXTENCODING_UTF8 );
         discardDumpedLayout();
@@ -252,7 +252,7 @@ public:
     */
     void loadMailMergeDocument( int number )
     {
-        OUString name = mailMergeOutputPrefix + OUString::number( number ) + ".odt";
+        OUString name = msMailMergeOutputPrefix + OUString::number( number ) + ".odt";
         loadMailMergeDocument( name );
     }
 
@@ -261,9 +261,9 @@ protected:
     int documentStartPageNumber( int document ) const;
 
     uno::Reference< css::task::XJob > mxJob;
-    uno::Sequence< beans::NamedValue > mSeqMailMergeArgs;
-    OUString mailMergeOutputURL;
-    OUString mailMergeOutputPrefix;
+    std::vector< beans::NamedValue > mMMargs;
+    OUString msMailMergeOutputURL;
+    OUString msMailMergeOutputPrefix;
     sal_Int16 mnCurOutputType;
     uno::Reference< lang::XComponent > mxMMComponent;
     const char* maMMtestFilename;
commit 9b1d3707106b2eca0e94c4c50dcbec104500dafb
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Nov 25 13:41:50 2016 +0100

    show next free formatindex hint for errors
    
    Change-Id: I4252a572c1cef02ff5e7de0ecc78d84ddc806919

diff --git a/i18npool/source/localedata/LocaleNode.cxx b/i18npool/source/localedata/LocaleNode.cxx
index 26f0e69..9f778e4 100644
--- a/i18npool/source/localedata/LocaleNode.cxx
+++ b/i18npool/source/localedata/LocaleNode.cxx
@@ -661,6 +661,8 @@ void LCFormatNode::generateCode (const OFileWriter &of) const
     NameSet  aDefaultsSet;
     bool bCtypeIsRef = false;
     bool bHaveEngineering = false;
+    bool bShowNextFreeFormatIndex = false;
+    const sal_Int16 nFirstFreeFormatIndex = 60;
 
     for (sal_Int32 i = 0; i< getNumberOfChildren() ; i++, formatCount++)
     {
@@ -707,10 +709,16 @@ void LCFormatNode::generateCode (const OFileWriter &of) const
         sal_Int16 formatindex = (sal_Int16)aFormatIndex.toInt32();
         // Ensure the new reserved range is not used anymore, free usage start
         // was up'ed from 50 to 60.
-        if (50 <= formatindex && formatindex < 60)
-            incErrorInt( "Error: Reserved formatindex=\"%d\" in FormatElement, free usage starts at 60.\n", formatindex);
+        if (50 <= formatindex && formatindex < nFirstFreeFormatIndex)
+        {
+            incErrorInt( "Error: Reserved formatindex=\"%d\" in FormatElement.\n", formatindex);
+            bShowNextFreeFormatIndex = true;
+        }
         if (!aFormatIndexSet.insert( formatindex).second)
+        {
             incErrorInt( "Error: Duplicated formatindex=\"%d\" in FormatElement.\n", formatindex);
+            bShowNextFreeFormatIndex = true;
+        }
         of.writeIntParameter("Formatindex", formatCount, formatindex);
 
         // Ensure only one default per usage and type.
@@ -906,6 +914,22 @@ void LCFormatNode::generateCode (const OFileWriter &of) const
 
     }
 
+    if (bShowNextFreeFormatIndex)
+    {
+        sal_Int16 nNext = nFirstFreeFormatIndex;
+        std::set<sal_Int16>::const_iterator it( aFormatIndexSet.find( nNext));
+        if (it != aFormatIndexSet.end())
+        {
+            // nFirstFreeFormatIndex already used, find next free including gaps.
+            do
+            {
+                ++nNext;
+            }
+            while (++it != aFormatIndexSet.end() && *it == nNext);
+        }
+        fprintf( stderr, "Hint: Next free formatindex is %d.\n", (int)nNext);
+    }
+
     // Check presence of all required format codes only in first section
     // LC_FORMAT, not in optional LC_FORMAT_1
     if (mnSection == 0)
commit f32a75c25b0450eba9cdd9b343e1263c600c0151
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 13:46:51 2016 +0200

    convert LF constants to o3tl::typed_flags
    
    Change-Id: I4fa3a62e53eb02fe60c9ca0675709b76e56a7912

diff --git a/uui/source/iahndl-authentication.cxx b/uui/source/iahndl-authentication.cxx
index fa7d63f..93a1ddc 100644
--- a/uui/source/iahndl-authentication.cxx
+++ b/uui/source/iahndl-authentication.cxx
@@ -72,21 +72,21 @@ executeLoginDialog(
         bool bSavePassword   = rInfo.GetCanRememberPassword();
         bool bCanUseSysCreds = rInfo.GetCanUseSystemCredentials();
 
-        sal_uInt16 nFlags = 0;
+        LoginFlags nFlags = LoginFlags::NONE;
         if (rInfo.GetPath().isEmpty())
-            nFlags |= LF_NO_PATH;
+            nFlags |= LoginFlags::NoPath;
         if (rInfo.GetErrorText().isEmpty())
-            nFlags |= LF_NO_ERRORTEXT;
+            nFlags |= LoginFlags::NoErrorText;
         if (!bAccount)
-            nFlags |= LF_NO_ACCOUNT;
+            nFlags |= LoginFlags::NoAccount;
         if (!(rInfo.GetFlags() & LOGINERROR_FLAG_MODIFY_USER_NAME))
-            nFlags |= LF_USERNAME_READONLY;
+            nFlags |= LoginFlags::UsernameReadonly;
 
         if (!bSavePassword)
-            nFlags |= LF_NO_SAVEPASSWORD;
+            nFlags |= LoginFlags::NoSavePassword;
 
         if (!bCanUseSysCreds)
-            nFlags |= LF_NO_USESYSCREDS;
+            nFlags |= LoginFlags::NoUseSysCreds;
 
         ScopedVclPtrInstance< LoginDialog > xDialog(pParent, nFlags, rInfo.GetServer(), rRealm);
         if (!rInfo.GetErrorText().isEmpty())
diff --git a/uui/source/logindlg.cxx b/uui/source/logindlg.cxx
index 1bdb85f..76465d9 100644
--- a/uui/source/logindlg.cxx
+++ b/uui/source/logindlg.cxx
@@ -67,52 +67,52 @@ void LoginDialog::SetPassword( const OUString& rNew )
     SetRequest();
 }
 
-void LoginDialog::HideControls_Impl( sal_uInt16 nFlags )
+void LoginDialog::HideControls_Impl( LoginFlags nFlags )
 {
-    if ( ( nFlags & LF_NO_PATH ) == LF_NO_PATH )
+    if ( nFlags & LoginFlags::NoPath )
     {
         m_pPathFT->Hide();
         m_pPathED->Hide();
         m_pPathBtn->Hide();
     }
-    else if ( ( nFlags & LF_PATH_READONLY ) == LF_PATH_READONLY )
+    else if ( nFlags & LoginFlags::PathReadonly )
     {
         m_pPathED->Enable( false );
         m_pPathBtn->Enable( false );
     }
 
-    if ( ( nFlags & LF_NO_USERNAME ) == LF_NO_USERNAME )
+    if ( nFlags & LoginFlags::NoUsername )
     {
         m_pNameFT->Hide();
         m_pNameED->Hide();
     }
-    else if ( ( nFlags & LF_USERNAME_READONLY ) == LF_USERNAME_READONLY )
+    else if ( nFlags & LoginFlags::UsernameReadonly )
     {
         m_pNameED->Enable( false );
     }
 
-    if ( ( nFlags & LF_NO_PASSWORD ) == LF_NO_PASSWORD )
+    if ( nFlags & LoginFlags::NoPassword )
     {
         m_pPasswordFT->Hide();
         m_pPasswordED->Hide();
     }
 
-    if ( ( nFlags & LF_NO_SAVEPASSWORD ) == LF_NO_SAVEPASSWORD )
+    if ( nFlags & LoginFlags::NoSavePassword )
         m_pSavePasswdBtn->Hide();
 
-    if ( ( nFlags & LF_NO_ERRORTEXT ) == LF_NO_ERRORTEXT )
+    if ( nFlags & LoginFlags::NoErrorText )
     {
         m_pErrorInfo->Hide();
         m_pErrorFT->Hide();
     }
 
-    if ( ( nFlags & LF_NO_ACCOUNT ) == LF_NO_ACCOUNT )
+    if ( nFlags & LoginFlags::NoAccount )
     {
         m_pAccountFT->Hide();
         m_pAccountED->Hide();
     }
 
-    if ( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS )
+    if ( nFlags & LoginFlags::NoUseSysCreds )
     {
         m_pUseSysCredsCB->Hide();
     }
@@ -186,7 +186,7 @@ IMPL_LINK_NOARG(LoginDialog, UseSysCredsHdl_Impl, Button*, void)
     EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
 }
 
-LoginDialog::LoginDialog(vcl::Window* pParent, sal_uInt16 nFlags,
+LoginDialog::LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
     const OUString& rServer, const OUString& rRealm)
     : ModalDialog(pParent, "LoginDialog", "uui/ui/logindialog.ui"),
       m_server(rServer), m_realm(rRealm)
@@ -207,7 +207,7 @@ LoginDialog::LoginDialog(vcl::Window* pParent, sal_uInt16 nFlags,
     get(m_pUseSysCredsCB, "syscreds");
     get(m_pOKBtn, "ok");
 
-    if ( !( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS ) )
+    if ( !( nFlags & LoginFlags::NoUseSysCreds ) )
       EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
 
     SetRequest();
diff --git a/uui/source/logindlg.hxx b/uui/source/logindlg.hxx
index 01bd2d8..8b6e773 100644
--- a/uui/source/logindlg.hxx
+++ b/uui/source/logindlg.hxx
@@ -24,17 +24,24 @@
 #include <vcl/dialog.hxx>
 #include <vcl/edit.hxx>
 #include <vcl/fixed.hxx>
+#include <o3tl/typed_flags_set.hxx>
 
 
-#define LF_NO_PATH              0x0001  // hide "path"
-#define LF_NO_USERNAME          0x0002  // hide "name"
-#define LF_NO_PASSWORD          0x0004  // hide "password"
-#define LF_NO_SAVEPASSWORD      0x0008  // hide "save password"
-#define LF_NO_ERRORTEXT         0x0010  // hide message
-#define LF_PATH_READONLY        0x0020  // "path" readonly
-#define LF_USERNAME_READONLY    0x0040  // "name" readonly
-#define LF_NO_ACCOUNT           0x0080  // hide "account"
-#define LF_NO_USESYSCREDS       0x0100  // hide "use system credentials"
+enum class LoginFlags {
+    NONE                = 0x0000,
+    NoPath              = 0x0001,  // hide "path"
+    NoUsername          = 0x0002,  // hide "name"
+    NoPassword          = 0x0004,  // hide "password"
+    NoSavePassword      = 0x0008,  // hide "save password"
+    NoErrorText         = 0x0010,  // hide message
+    PathReadonly        = 0x0020,  // "path" readonly
+    UsernameReadonly    = 0x0040,  // "name" readonly
+    NoAccount           = 0x0080,  // hide "account"
+    NoUseSysCreds       = 0x0100,  // hide "use system credentials"
+};
+namespace o3tl {
+    template<> struct typed_flags<LoginFlags> : is_typed_flags<LoginFlags, 0x01ff> {};
+}
 
 
 class LoginDialog : public ModalDialog
@@ -57,7 +64,7 @@ class LoginDialog : public ModalDialog
     OUString m_server;
     OUString m_realm;
 
-    void            HideControls_Impl( sal_uInt16 nFlags );
+    void            HideControls_Impl( LoginFlags nFlags );
     void            EnableUseSysCredsControls_Impl( bool bUseSysCredsEnabled );
     void            SetRequest();
 
@@ -66,7 +73,7 @@ class LoginDialog : public ModalDialog
     DECL_LINK(UseSysCredsHdl_Impl, Button*, void);
 
 public:
-    LoginDialog(vcl::Window* pParent, sal_uInt16 nFlags,
+    LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
         const OUString& rServer, const OUString &rRealm);
     virtual ~LoginDialog() override;
     virtual void    dispose() override;
commit 413e63c301a4a9ca8a4a85d03549fbe240142148
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 13:40:16 2016 +0200

    convert FILTERCFG constants to o3tl::typed_flags
    
    Change-Id: I01a4df6bb9b90177ce72c61fd0d611a63559166e

diff --git a/unotools/source/config/fltrcfg.cxx b/unotools/source/config/fltrcfg.cxx
index c26e4d5..32a61fd 100644
--- a/unotools/source/config/fltrcfg.cxx
+++ b/unotools/source/config/fltrcfg.cxx
@@ -20,6 +20,7 @@
 #include <config_features.h>
 
 #include <o3tl/any.hxx>
+#include <o3tl/typed_flags_set.hxx>
 #include <unotools/fltrcfg.hxx>
 #include <tools/debug.hxx>
 #include <tools/solar.h>
@@ -30,28 +31,34 @@
 using namespace utl;
 using namespace com::sun::star::uno;
 
-#define FILTERCFG_WORD_CODE             0x0001
-#define FILTERCFG_WORD_STORAGE          0x0002
-#define FILTERCFG_EXCEL_CODE            0x0004
-#define FILTERCFG_EXCEL_STORAGE         0x0008
-#define FILTERCFG_PPOINT_CODE           0x0010
-#define FILTERCFG_PPOINT_STORAGE        0x0020
-#define FILTERCFG_MATH_LOAD             0x0100
-#define FILTERCFG_MATH_SAVE             0x0200
-#define FILTERCFG_WRITER_LOAD           0x0400
-#define FILTERCFG_WRITER_SAVE           0x0800
-#define FILTERCFG_CALC_LOAD             0x1000
-#define FILTERCFG_CALC_SAVE             0x2000
-#define FILTERCFG_IMPRESS_LOAD          0x4000
-#define FILTERCFG_IMPRESS_SAVE          0x8000
-#define FILTERCFG_EXCEL_EXECTBL         0x10000
-#define FILTERCFG_ENABLE_PPT_PREVIEW    0x20000
-#define FILTERCFG_ENABLE_EXCEL_PREVIEW  0x40000
-#define FILTERCFG_ENABLE_WORD_PREVIEW   0x80000
-#define FILTERCFG_USE_ENHANCED_FIELDS   0x100000
-#define FILTERCFG_WORD_WBCTBL           0x200000
-#define FILTERCFG_SMARTART_SHAPE_LOAD   0x400000
-#define FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING   0x8000000
+enum class ConfigFlags {
+    NONE                         = 0x0000000,
+    WordCode                     = 0x0000001,
+    WordStorage                  = 0x0000002,
+    ExcelCode                    = 0x0000004,
+    ExcelStorage                 = 0x0000008,
+    PowerPointCode               = 0x0000010,
+    PowerPointStorage            = 0x0000020,
+    MathLoad                     = 0x0000100,
+    MathSave                     = 0x0000200,
+    WriterLoad                   = 0x0000400,
+    WriterSave                   = 0x0000800,
+    CalcLoad                     = 0x0001000,
+    CalcSave                     = 0x0002000,
+    ImpressLoad                  = 0x0004000,
+    ImpressSave                  = 0x0008000,
+    ExcelExecTbl                 = 0x0010000,
+    EnablePowerPointPreview      = 0x0020000,
+    EnableExcelPreview           = 0x0040000,
+    EnableWordPreview            = 0x0080000,
+    UseEnhancedFields            = 0x0100000,
+    WordWbctbl                   = 0x0200000,
+    SmartArtShapeLoad            = 0x0400000,
+    CharBackgroundToHighlighting = 0x8000000
+};
+namespace o3tl {
+    template<> struct typed_flags<ConfigFlags> : is_typed_flags<ConfigFlags, 0x87fff3f> {};
+}
 
 class SvtAppFilterOptions_Impl : public utl::ConfigItem
 {
@@ -213,7 +220,7 @@ void SvtCalcFilterOptions_Impl::Load()
 
 struct SvtFilterOptions_Impl
 {
-    sal_uLong nFlags;
+    ConfigFlags nFlags;
     SvtWriterFilterOptions_Impl aWriterCfg;
     SvtCalcFilterOptions_Impl aCalcCfg;
     SvtAppFilterOptions_Impl aImpressCfg;
@@ -223,28 +230,28 @@ struct SvtFilterOptions_Impl
         aCalcCfg("Office.Calc/Filter/Import/VBA"),
         aImpressCfg("Office.Impress/Filter/Import/VBA")
     {
-        nFlags = FILTERCFG_WORD_CODE |
-            FILTERCFG_WORD_STORAGE |
-            FILTERCFG_EXCEL_CODE |
-            FILTERCFG_EXCEL_STORAGE |
-            FILTERCFG_PPOINT_CODE |
-            FILTERCFG_PPOINT_STORAGE |
-            FILTERCFG_MATH_LOAD |
-            FILTERCFG_MATH_SAVE |
-            FILTERCFG_WRITER_LOAD |
-            FILTERCFG_WRITER_SAVE |
-            FILTERCFG_CALC_LOAD |
-            FILTERCFG_CALC_SAVE |
-            FILTERCFG_IMPRESS_LOAD |
-            FILTERCFG_IMPRESS_SAVE |
-            FILTERCFG_USE_ENHANCED_FIELDS |
-            FILTERCFG_SMARTART_SHAPE_LOAD |
-            FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING;
+        nFlags = ConfigFlags::WordCode |
+            ConfigFlags::WordStorage |
+            ConfigFlags::ExcelCode |
+            ConfigFlags::ExcelStorage |
+            ConfigFlags::PowerPointCode |
+            ConfigFlags::PowerPointStorage |
+            ConfigFlags::MathLoad |
+            ConfigFlags::MathSave |
+            ConfigFlags::WriterLoad |
+            ConfigFlags::WriterSave |
+            ConfigFlags::CalcLoad |
+            ConfigFlags::CalcSave |
+            ConfigFlags::ImpressLoad |
+            ConfigFlags::ImpressSave |
+            ConfigFlags::UseEnhancedFields |
+            ConfigFlags::SmartArtShapeLoad |
+            ConfigFlags::CharBackgroundToHighlighting;
         Load();
     }
 
-    void SetFlag( sal_uLong nFlag, bool bSet );
-    bool IsFlag( sal_uLong nFlag ) const;
+    void SetFlag( ConfigFlags nFlag, bool bSet );
+    bool IsFlag( ConfigFlags nFlag ) const;
     void Load()
     {
         aWriterCfg.Load();
@@ -253,18 +260,18 @@ struct SvtFilterOptions_Impl
     }
 };
 
-void SvtFilterOptions_Impl::SetFlag( sal_uLong nFlag, bool bSet )
+void SvtFilterOptions_Impl::SetFlag( ConfigFlags nFlag, bool bSet )
 {
     switch(nFlag)
     {
-        case FILTERCFG_WORD_CODE:       aWriterCfg.SetLoad(bSet);break;
-        case FILTERCFG_WORD_STORAGE:    aWriterCfg.SetSave(bSet);break;
-        case FILTERCFG_WORD_WBCTBL: aWriterCfg.SetLoadExecutable(bSet);break;
-        case FILTERCFG_EXCEL_CODE:      aCalcCfg.SetLoad(bSet);break;
-        case FILTERCFG_EXCEL_STORAGE:   aCalcCfg.SetSave(bSet);break;
-        case FILTERCFG_EXCEL_EXECTBL:   aCalcCfg.SetLoadExecutable(bSet);break;
-        case FILTERCFG_PPOINT_CODE:     aImpressCfg.SetLoad(bSet);break;
-        case FILTERCFG_PPOINT_STORAGE:  aImpressCfg.SetSave(bSet);break;
+        case ConfigFlags::WordCode:       aWriterCfg.SetLoad(bSet);break;
+        case ConfigFlags::WordStorage:    aWriterCfg.SetSave(bSet);break;
+        case ConfigFlags::WordWbctbl: aWriterCfg.SetLoadExecutable(bSet);break;
+        case ConfigFlags::ExcelCode:      aCalcCfg.SetLoad(bSet);break;
+        case ConfigFlags::ExcelStorage:   aCalcCfg.SetSave(bSet);break;
+        case ConfigFlags::ExcelExecTbl:   aCalcCfg.SetLoadExecutable(bSet);break;
+        case ConfigFlags::PowerPointCode:     aImpressCfg.SetLoad(bSet);break;
+        case ConfigFlags::PowerPointStorage:  aImpressCfg.SetSave(bSet);break;
         default:
             if( bSet )
                 nFlags |= nFlag;
@@ -273,21 +280,21 @@ void SvtFilterOptions_Impl::SetFlag( sal_uLong nFlag, bool bSet )
     }
 }
 
-bool SvtFilterOptions_Impl::IsFlag( sal_uLong nFlag ) const
+bool SvtFilterOptions_Impl::IsFlag( ConfigFlags nFlag ) const
 {
     bool bRet;
     switch(nFlag)
     {
-        case FILTERCFG_WORD_CODE        : bRet = aWriterCfg.IsLoad();break;
-        case FILTERCFG_WORD_STORAGE     : bRet = aWriterCfg.IsSave();break;
-        case FILTERCFG_WORD_WBCTBL      : bRet = aWriterCfg.IsLoadExecutable();break;
-        case FILTERCFG_EXCEL_CODE       : bRet = aCalcCfg.IsLoad();break;
-        case FILTERCFG_EXCEL_STORAGE    : bRet = aCalcCfg.IsSave();break;
-        case FILTERCFG_EXCEL_EXECTBL    : bRet = aCalcCfg.IsLoadExecutable();break;
-        case FILTERCFG_PPOINT_CODE      : bRet = aImpressCfg.IsLoad();break;
-        case FILTERCFG_PPOINT_STORAGE   : bRet = aImpressCfg.IsSave();break;
+        case ConfigFlags::WordCode        : bRet = aWriterCfg.IsLoad();break;
+        case ConfigFlags::WordStorage     : bRet = aWriterCfg.IsSave();break;
+        case ConfigFlags::WordWbctbl      : bRet = aWriterCfg.IsLoadExecutable();break;
+        case ConfigFlags::ExcelCode       : bRet = aCalcCfg.IsLoad();break;
+        case ConfigFlags::ExcelStorage    : bRet = aCalcCfg.IsSave();break;
+        case ConfigFlags::ExcelExecTbl    : bRet = aCalcCfg.IsLoadExecutable();break;
+        case ConfigFlags::PowerPointCode      : bRet = aImpressCfg.IsLoad();break;
+        case ConfigFlags::PowerPointStorage   : bRet = aImpressCfg.IsSave();break;
         default:
-            bRet = 0 != (nFlags & nFlag );
+            bRet = bool(nFlags & nFlag );
     }
     return bRet;
 }
@@ -339,25 +346,25 @@ SvtFilterOptions::~SvtFilterOptions()
 {
 }
 
-static sal_uLong lcl_GetFlag(sal_Int32 nProp)
+static ConfigFlags lcl_GetFlag(sal_Int32 nProp)
 {
-    sal_uLong nFlag = 0;
+    ConfigFlags nFlag = ConfigFlags::NONE;
     switch(nProp)
     {
-        case  0: nFlag = FILTERCFG_MATH_LOAD; break;
-        case  1: nFlag = FILTERCFG_WRITER_LOAD; break;
-        case  2: nFlag = FILTERCFG_IMPRESS_LOAD; break;
-        case  3: nFlag = FILTERCFG_CALC_LOAD; break;
-        case  4: nFlag = FILTERCFG_MATH_SAVE; break;
-        case  5: nFlag = FILTERCFG_WRITER_SAVE; break;
-        case  6: nFlag = FILTERCFG_IMPRESS_SAVE; break;
-        case  7: nFlag = FILTERCFG_CALC_SAVE; break;
-        case  8: nFlag = FILTERCFG_ENABLE_PPT_PREVIEW; break;
-        case  9: nFlag = FILTERCFG_ENABLE_EXCEL_PREVIEW; break;
-        case 10: nFlag = FILTERCFG_ENABLE_WORD_PREVIEW; break;
-        case 11: nFlag = FILTERCFG_USE_ENHANCED_FIELDS; break;
-        case 12: nFlag = FILTERCFG_SMARTART_SHAPE_LOAD; break;
-        case 13: nFlag = FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING; break;
+        case  0: nFlag = ConfigFlags::MathLoad; break;
+        case  1: nFlag = ConfigFlags::WriterLoad; break;
+        case  2: nFlag = ConfigFlags::ImpressLoad; break;
+        case  3: nFlag = ConfigFlags::CalcLoad; break;
+        case  4: nFlag = ConfigFlags::MathSave; break;
+        case  5: nFlag = ConfigFlags::WriterSave; break;
+        case  6: nFlag = ConfigFlags::ImpressSave; break;
+        case  7: nFlag = ConfigFlags::CalcSave; break;
+        case  8: nFlag = ConfigFlags::EnablePowerPointPreview; break;
+        case  9: nFlag = ConfigFlags::EnableExcelPreview; break;
+        case 10: nFlag = ConfigFlags::EnableWordPreview; break;
+        case 11: nFlag = ConfigFlags::UseEnhancedFields; break;
+        case 12: nFlag = ConfigFlags::SmartArtShapeLoad; break;
+        case 13: nFlag = ConfigFlags::CharBackgroundToHighlighting; break;
 
         default: OSL_FAIL("illegal value");
     }
@@ -377,7 +384,7 @@ void SvtFilterOptions::ImplCommit()
 
     for(int nProp = 0; nProp < aNames.getLength(); nProp++)
     {
-        sal_uLong nFlag = lcl_GetFlag(nProp);
+        ConfigFlags nFlag = lcl_GetFlag(nProp);
         pValues[nProp] <<= pImpl->IsFlag(nFlag);
 
     }
@@ -398,7 +405,7 @@ void SvtFilterOptions::Load()
             if(pValues[nProp].hasValue())
             {
                 bool bVal = *o3tl::doAccess<bool>(pValues[nProp]);
-                sal_uLong nFlag = lcl_GetFlag(nProp);
+                ConfigFlags nFlag = lcl_GetFlag(nProp);
                 pImpl->SetFlag( nFlag, bVal);
             }
         }
@@ -407,193 +414,193 @@ void SvtFilterOptions::Load()
 
 void SvtFilterOptions::SetLoadWordBasicCode( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_WORD_CODE, bFlag );
+    pImpl->SetFlag( ConfigFlags::WordCode, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadWordBasicCode() const
 {
-    return pImpl->IsFlag( FILTERCFG_WORD_CODE );
+    return pImpl->IsFlag( ConfigFlags::WordCode );
 }
 
 void SvtFilterOptions::SetLoadWordBasicExecutable( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_WORD_WBCTBL, bFlag );
+    pImpl->SetFlag( ConfigFlags::WordWbctbl, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadWordBasicExecutable() const
 {
-    return pImpl->IsFlag( FILTERCFG_WORD_WBCTBL );
+    return pImpl->IsFlag( ConfigFlags::WordWbctbl );
 }
 
 void SvtFilterOptions::SetLoadWordBasicStorage( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_WORD_STORAGE, bFlag );
+    pImpl->SetFlag( ConfigFlags::WordStorage, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadWordBasicStorage() const
 {
-    return pImpl->IsFlag( FILTERCFG_WORD_STORAGE );
+    return pImpl->IsFlag( ConfigFlags::WordStorage );
 }
 
 void SvtFilterOptions::SetLoadExcelBasicCode( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_EXCEL_CODE, bFlag );
+    pImpl->SetFlag( ConfigFlags::ExcelCode, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadExcelBasicCode() const
 {
-    return pImpl->IsFlag( FILTERCFG_EXCEL_CODE );
+    return pImpl->IsFlag( ConfigFlags::ExcelCode );
 }
 
 void SvtFilterOptions::SetLoadExcelBasicExecutable( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_EXCEL_EXECTBL, bFlag );
+    pImpl->SetFlag( ConfigFlags::ExcelExecTbl, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadExcelBasicExecutable() const
 {
-    return pImpl->IsFlag( FILTERCFG_EXCEL_EXECTBL );
+    return pImpl->IsFlag( ConfigFlags::ExcelExecTbl );
 }
 
 void SvtFilterOptions::SetLoadExcelBasicStorage( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_EXCEL_STORAGE, bFlag );
+    pImpl->SetFlag( ConfigFlags::ExcelStorage, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadExcelBasicStorage() const
 {
-    return pImpl->IsFlag( FILTERCFG_EXCEL_STORAGE );
+    return pImpl->IsFlag( ConfigFlags::ExcelStorage );
 }
 
 void SvtFilterOptions::SetLoadPPointBasicCode( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_PPOINT_CODE, bFlag );
+    pImpl->SetFlag( ConfigFlags::PowerPointCode, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadPPointBasicCode() const
 {
-    return pImpl->IsFlag( FILTERCFG_PPOINT_CODE );
+    return pImpl->IsFlag( ConfigFlags::PowerPointCode );
 }
 
 void SvtFilterOptions::SetLoadPPointBasicStorage( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_PPOINT_STORAGE, bFlag );
+    pImpl->SetFlag( ConfigFlags::PowerPointStorage, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsLoadPPointBasicStorage() const
 {
-    return pImpl->IsFlag( FILTERCFG_PPOINT_STORAGE );
+    return pImpl->IsFlag( ConfigFlags::PowerPointStorage );
 }
 
 bool SvtFilterOptions::IsMathType2Math() const
 {
-    return pImpl->IsFlag( FILTERCFG_MATH_LOAD );
+    return pImpl->IsFlag( ConfigFlags::MathLoad );
 }
 
 void SvtFilterOptions::SetMathType2Math( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_MATH_LOAD, bFlag );
+    pImpl->SetFlag( ConfigFlags::MathLoad, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsMath2MathType() const
 {
-    return pImpl->IsFlag( FILTERCFG_MATH_SAVE );
+    return pImpl->IsFlag( ConfigFlags::MathSave );
 }
 
 void SvtFilterOptions::SetMath2MathType( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_MATH_SAVE, bFlag );
+    pImpl->SetFlag( ConfigFlags::MathSave, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsWinWord2Writer() const
 {
-    return pImpl->IsFlag( FILTERCFG_WRITER_LOAD );
+    return pImpl->IsFlag( ConfigFlags::WriterLoad );
 }
 
 void SvtFilterOptions::SetWinWord2Writer( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_WRITER_LOAD, bFlag );
+    pImpl->SetFlag( ConfigFlags::WriterLoad, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsWriter2WinWord() const
 {
-    return pImpl->IsFlag( FILTERCFG_WRITER_SAVE );
+    return pImpl->IsFlag( ConfigFlags::WriterSave );
 }
 
 void SvtFilterOptions::SetWriter2WinWord( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_WRITER_SAVE, bFlag );
+    pImpl->SetFlag( ConfigFlags::WriterSave, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsUseEnhancedFields() const
 {
-    return pImpl->IsFlag( FILTERCFG_USE_ENHANCED_FIELDS );
+    return pImpl->IsFlag( ConfigFlags::UseEnhancedFields );
 }
 
 bool SvtFilterOptions::IsExcel2Calc() const
 {
-    return pImpl->IsFlag( FILTERCFG_CALC_LOAD );
+    return pImpl->IsFlag( ConfigFlags::CalcLoad );
 }
 
 void SvtFilterOptions::SetExcel2Calc( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_CALC_LOAD, bFlag );
+    pImpl->SetFlag( ConfigFlags::CalcLoad, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsCalc2Excel() const
 {
-    return pImpl->IsFlag( FILTERCFG_CALC_SAVE );
+    return pImpl->IsFlag( ConfigFlags::CalcSave );
 }
 
 void SvtFilterOptions::SetCalc2Excel( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_CALC_SAVE, bFlag );
+    pImpl->SetFlag( ConfigFlags::CalcSave, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsPowerPoint2Impress() const
 {
-    return pImpl->IsFlag( FILTERCFG_IMPRESS_LOAD );
+    return pImpl->IsFlag( ConfigFlags::ImpressLoad );
 }
 
 void SvtFilterOptions::SetPowerPoint2Impress( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_IMPRESS_LOAD, bFlag );
+    pImpl->SetFlag( ConfigFlags::ImpressLoad, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsImpress2PowerPoint() const
 {
-    return pImpl->IsFlag( FILTERCFG_IMPRESS_SAVE );
+    return pImpl->IsFlag( ConfigFlags::ImpressSave );
 }
 
 void SvtFilterOptions::SetImpress2PowerPoint( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_IMPRESS_SAVE, bFlag );
+    pImpl->SetFlag( ConfigFlags::ImpressSave, bFlag );
     SetModified();
 }
 
 bool SvtFilterOptions::IsSmartArt2Shape() const
 {
-    return pImpl->IsFlag( FILTERCFG_SMARTART_SHAPE_LOAD );
+    return pImpl->IsFlag( ConfigFlags::SmartArtShapeLoad );
 }
 
 void SvtFilterOptions::SetSmartArt2Shape( bool bFlag )
 {
-    pImpl->SetFlag( FILTERCFG_SMARTART_SHAPE_LOAD, bFlag );
+    pImpl->SetFlag( ConfigFlags::SmartArtShapeLoad, bFlag );
     SetModified();
 }
 
@@ -612,39 +619,39 @@ SvtFilterOptions& SvtFilterOptions::Get()
 
 bool SvtFilterOptions::IsEnablePPTPreview() const
 {
-    return pImpl->IsFlag( FILTERCFG_ENABLE_PPT_PREVIEW );
+    return pImpl->IsFlag( ConfigFlags::EnablePowerPointPreview );
 }
 
 bool SvtFilterOptions::IsEnableCalcPreview() const
 {
-    return pImpl->IsFlag( FILTERCFG_ENABLE_EXCEL_PREVIEW );
+    return pImpl->IsFlag( ConfigFlags::EnableExcelPreview );
 }
 
 bool SvtFilterOptions::IsEnableWordPreview() const
 {
-    return pImpl->IsFlag( FILTERCFG_ENABLE_WORD_PREVIEW );
+    return pImpl->IsFlag( ConfigFlags::EnableWordPreview );
 }
 
 
 bool SvtFilterOptions::IsCharBackground2Highlighting() const
 {
-    return pImpl->IsFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING );
+    return pImpl->IsFlag( ConfigFlags::CharBackgroundToHighlighting );
 }
 
 bool SvtFilterOptions::IsCharBackground2Shading() const
 {
-    return !pImpl->IsFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING );
+    return !pImpl->IsFlag( ConfigFlags::CharBackgroundToHighlighting );
 }
 
 void SvtFilterOptions::SetCharBackground2Highlighting()
 {
-    pImpl->SetFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING, true );
+    pImpl->SetFlag( ConfigFlags::CharBackgroundToHighlighting, true );
     SetModified();
 }
 
 void SvtFilterOptions::SetCharBackground2Shading()
 {
-    pImpl->SetFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING, false );
+    pImpl->SetFlag( ConfigFlags::CharBackgroundToHighlighting, false );
     SetModified();
 }
 
commit d39bb268eaf3c3aeca2492a6ef8c0c9d0163ec3d
Author: yossizahn <yossizahn at gmail.com>
Date:   Fri Nov 25 02:23:40 2016 +0300

    Correct spelling of "kislev" for he_IL locale data
    
    See e.g. https://he.wikipedia.org/wiki/%D7%9B%D7%A1%D7%9C%D7%95
    
    Change-Id: I3bf935db50037ff418f269d81004bce4e7388097
    Reviewed-on: https://gerrit.libreoffice.org/31178
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/i18npool/source/localedata/data/he_IL.xml b/i18npool/source/localedata/data/he_IL.xml
index 541bfe8..8b8f6e3 100644
--- a/i18npool/source/localedata/data/he_IL.xml
+++ b/i18npool/source/localedata/data/he_IL.xml
@@ -374,8 +374,8 @@
         </Month>
         <Month>
           <MonthID>Kislev</MonthID>
-          <DefaultAbbrvName>כסליו</DefaultAbbrvName>
-          <DefaultFullName>כסליו</DefaultFullName>
+          <DefaultAbbrvName>כסלו</DefaultAbbrvName>
+          <DefaultFullName>כסלו</DefaultFullName>
         </Month>
         <Month>
           <MonthID>Tevet</MonthID>
commit f1eb0bf75296ee9c59241507a1e03f4de770afa1
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 25 11:24:12 2016 +0100

    Clean up CLANG_VERSION check
    
    Change-Id: Idfdffd73e9029216775d2a6ad46293ee1a4f1308

diff --git a/compilerplugins/clang/test/datamembershadow.cxx b/compilerplugins/clang/test/datamembershadow.cxx
index 24a0da9..5965421 100644
--- a/compilerplugins/clang/test/datamembershadow.cxx
+++ b/compilerplugins/clang/test/datamembershadow.cxx
@@ -7,9 +7,12 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+#include <sal/config.h>
+
+#include <config_clang.h>
 
 // '#if CLANG_VERSION >= 30800' covers large parts of compilerplugins/clang/datamembershadow.cxx
-#if (__clang_major__ == 3 && __clang_minor__ >= 8) || __clang_major__ > 3
+#if CLANG_VERSION >= 30800
 struct Bar {
     int x; // expected-note {{superclass member here [loplugin:datamembershadow]}}
 };
commit bf53daa49aee46c1e0a5c4117841bc5b9b992f6d
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 25 11:22:14 2016 +0100

    Clean up PPCallbacks compatiblity fix
    
    Change-Id: I91f1db18b7876c4ecc30f7f97283e0ef0369eba5

diff --git a/compilerplugins/clang/checkconfigmacros.cxx b/compilerplugins/clang/checkconfigmacros.cxx
index 1a92765..3d6dc98 100644
--- a/compilerplugins/clang/checkconfigmacros.cxx
+++ b/compilerplugins/clang/checkconfigmacros.cxx
@@ -35,20 +35,10 @@ class CheckConfigMacros
         explicit CheckConfigMacros( const InstantiationData& data );
         virtual void run() override;
         virtual void MacroDefined( const Token& macroToken, const MacroDirective* info ) override;
-#if CLANG_VERSION < 30700
-        virtual void MacroUndefined( const Token& macroToken, const MacroDirective* info ) override;
-        virtual void Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override;
-        virtual void Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override;
-#else
-        virtual void MacroUndefined( const Token& macroToken, const MacroDefinition& info ) override;
-        virtual void Ifdef( SourceLocation location, const Token& macroToken, const MacroDefinition& info ) override;
-        virtual void Ifndef( SourceLocation location, const Token& macroToken, const MacroDefinition& info ) override;
-#endif
-#if CLANG_VERSION < 30700
-        virtual void Defined( const Token& macroToken, const MacroDirective* info, SourceRange Range ) override;
-#else
-        virtual void Defined( const Token& macroToken, const MacroDefinition& info, SourceRange Range ) override;
-#endif
+        virtual void MacroUndefined( const Token& macroToken, compat::MacroDefinitionParam ) override;
+        virtual void Ifdef( SourceLocation location, const Token& macroToken, compat::MacroDefinitionParam ) override;
+        virtual void Ifndef( SourceLocation location, const Token& macroToken, compat::MacroDefinitionParam ) override;
+        virtual void Defined( const Token& macroToken, compat::MacroDefinitionParam, SourceRange Range ) override;
         enum { isPPCallback = true };
     private:
         void checkMacro( const Token& macroToken, SourceLocation location );
@@ -79,38 +69,22 @@ void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroDirect
         }
     }
 
-#if CLANG_VERSION < 30700
-void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroDirective* )
-#else
-void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroDefinition& )
-#endif
+void CheckConfigMacros::MacroUndefined( const Token& macroToken, compat::MacroDefinitionParam )
     {
     configMacros.erase( macroToken.getIdentifierInfo()->getName());
     }
 
-#if CLANG_VERSION < 30700
-void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* )
-#else
-void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken, const MacroDefinition& )
-#endif
+void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken, compat::MacroDefinitionParam )
     {
     checkMacro( macroToken, location );
     }
 
-#if CLANG_VERSION < 30700
-void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* )
-#else
-void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken, const MacroDefinition& )
-#endif
+void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken, compat::MacroDefinitionParam )
     {
     checkMacro( macroToken, location );
     }
 
-#if CLANG_VERSION < 30700
-void CheckConfigMacros::Defined( const Token& macroToken, const MacroDirective* , SourceRange )
-#else
-void CheckConfigMacros::Defined( const Token& macroToken, const MacroDefinition& , SourceRange )
-#endif
+void CheckConfigMacros::Defined( const Token& macroToken, compat::MacroDefinitionParam , SourceRange )
     {
     checkMacro( macroToken, macroToken.getLocation());
     }
diff --git a/compilerplugins/clang/compat.hxx b/compilerplugins/clang/compat.hxx
index 063d0ce..28dbeec 100644
--- a/compilerplugins/clang/compat.hxx
+++ b/compilerplugins/clang/compat.hxx
@@ -179,6 +179,12 @@ inline std::unique_ptr<llvm::raw_fd_ostream> create_raw_fd_ostream(
 #endif
 }
 
+#if CLANG_VERSION >= 30700
+using MacroDefinitionParam = clang::MacroDefinition const &;
+#else
+using MacroDefinitionParam = clang::MacroDirective const *;
+#endif
+
 inline void addPPCallbacks(
     clang::Preprocessor & preprocessor, clang::PPCallbacks * C)
 {
diff --git a/compilerplugins/clang/oslendian.cxx b/compilerplugins/clang/oslendian.cxx
index 2bac848..705a7bc 100644
--- a/compilerplugins/clang/oslendian.cxx
+++ b/compilerplugins/clang/oslendian.cxx
@@ -14,12 +14,6 @@
 
 namespace {
 
-#if CLANG_VERSION < 30700
-using MacroDefinitionParam = MacroDirective const *;
-#else
-using MacroDefinitionParam = MacroDefinition const &;
-#endif
-
 class OslEndian: public loplugin::Plugin, public PPCallbacks {
 public:
     explicit OslEndian(InstantiationData const & data): Plugin(data) {
@@ -64,8 +58,8 @@ private:
         }
     }
 
-    void MacroUndefined(Token const & MacroNameTok, MacroDefinitionParam)
-        override
+    void MacroUndefined(
+        Token const & MacroNameTok, compat::MacroDefinitionParam) override
     {
         auto id = MacroNameTok.getIdentifierInfo()->getName();
         if (id == "OSL_BIGENDIAN" || id == "OSL_LITENDIAN") {
@@ -76,21 +70,23 @@ private:
         }
     }
 
-    void Defined(Token const & MacroNameTok, MacroDefinitionParam, SourceRange)
+    void Defined(
+        Token const & MacroNameTok, compat::MacroDefinitionParam, SourceRange)
         override
     {
         check(MacroNameTok);
     }
 
-    void Ifdef(SourceLocation, Token const & MacroNameTok, MacroDefinitionParam)
-        override
+    void Ifdef(
+        SourceLocation, Token const & MacroNameTok,
+        compat::MacroDefinitionParam) override
     {
         check(MacroNameTok);
     }
 
     void Ifndef(
-        SourceLocation, Token const & MacroNameTok, MacroDefinitionParam)
-        override
+        SourceLocation, Token const & MacroNameTok,
+        compat::MacroDefinitionParam) override
     {
         check(MacroNameTok);
     }
commit d63f42bd2a5827a47e7aeae78dfb53da8c718934
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 12:11:24 2016 +0200

    declaration of nAllFlags shadows a member of 'this' [-Werror=shadow]
    
    Change-Id: Ifb5adba642e777e5d515c6088c128d31778ecaff

diff --git a/sw/source/filter/html/htmlfly.cxx b/sw/source/filter/html/htmlfly.cxx
index 14cd01e..700c7d7 100644
--- a/sw/source/filter/html/htmlfly.cxx
+++ b/sw/source/filter/html/htmlfly.cxx
@@ -37,13 +37,13 @@ using namespace css;
 
 SwHTMLPosFlyFrame::SwHTMLPosFlyFrame( const SwPosFlyFrame& rPosFly,
                                   const SdrObject *pSdrObj,
-                                  AllHtmlFlags nAllFlags ) :
+                                  AllHtmlFlags nFlags ) :
     pFrameFormat( &rPosFly.GetFormat() ),
     pSdrObject( pSdrObj ),
     pNdIdx( new SwNodeIndex( rPosFly.GetNdIndex() ) ),
     nOrdNum( rPosFly.GetOrdNum() ),
     nContentIdx( 0 ),
-    nAllFlags( nAllFlags )
+    nAllFlags( nFlags )
 {
     const SwFormatAnchor& rAnchor = rPosFly.GetFormat().GetAnchor();
     if ((FLY_AT_CHAR == rAnchor.GetAnchorId()) &&
commit b19e71231322a6790759135f3aaab6499d6293dd
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 12:02:14 2016 +0200

    convert ENABLE flags to o3tl::typed_flags
    
    Change-Id: I47cb052c7437e127c237beee0f2d95948b7c3ad1

diff --git a/sw/source/uibase/inc/conttree.hxx b/sw/source/uibase/inc/conttree.hxx
index 98aedef..86068a1 100644
--- a/sw/source/uibase/inc/conttree.hxx
+++ b/sw/source/uibase/inc/conttree.hxx
@@ -28,6 +28,7 @@
 #include <memory>
 
 #include <o3tl/enumarray.hxx>
+#include <o3tl/typed_flags_set.hxx>
 
 class SwWrtShell;
 class SwContentType;
@@ -50,6 +51,22 @@ enum class EditEntryMode
     RENAME        = 5,
 };
 
+// Flags for PopupMenu-enable/disable
+enum class MenuEnableFlags {
+    NONE        = 0x0000,
+    InsertIdx   = 0x0001,
+    InsertFile  = 0x0002,
+    InsertText  = 0x0004,
+    Edit        = 0x0008,
+    Delete      = 0x0010,
+    Update      = 0x0020,
+    UpdateSel   = 0x0040,
+    EditLink    = 0x0080
+};
+namespace o3tl {
+    template<> struct typed_flags<MenuEnableFlags> : is_typed_flags<MenuEnableFlags, 0x00ff> {};
+}
+
 /** TreeListBox for content indicator */
 class SwContentTree
     : public SvTreeListBox
@@ -318,7 +335,7 @@ protected:
 
     void            OpenDoc(const SwGlblDocContent*);
     void            GotoContent(const SwGlblDocContent*);
-    sal_uInt16          GetEnableFlags() const;
+    MenuEnableFlags GetEnableFlags() const;
 
     static void     SetShowShell(const SfxObjectShell*pSet) {pShowShell = pSet;}
     DECL_STATIC_LINK(SwGlobalTree, ShowFrameHdl, void*, void);
diff --git a/sw/source/uibase/utlui/glbltree.cxx b/sw/source/uibase/utlui/glbltree.cxx
index 06f44ef..649517d 100644
--- a/sw/source/uibase/utlui/glbltree.cxx
+++ b/sw/source/uibase/utlui/glbltree.cxx
@@ -81,16 +81,6 @@ using namespace ::com::sun::star::uno;
 
 #define GLOBAL_UPDATE_TIMEOUT 2000
 
-// Flags for PopupMenu-enable/disable
-#define ENABLE_INSERT_IDX   0x0001
-#define ENABLE_INSERT_FILE  0x0002
-#define ENABLE_INSERT_TEXT  0x0004
-#define ENABLE_EDIT         0x0008
-#define ENABLE_DELETE       0x0010
-#define ENABLE_UPDATE       0x0020
-#define ENABLE_UPDATE_SEL   0x0040
-#define ENABLE_EDIT_LINK    0x0080
-
 // TabPos: push to left
 #define  GLBL_TABPOS_SUB 5
 
@@ -338,7 +328,7 @@ VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu()
     if(pActiveShell &&
         !pActiveShell->GetView().GetDocShell()->IsReadOnly())
     {
-        const sal_uInt16 nEnableFlags = GetEnableFlags();
+        const MenuEnableFlags nEnableFlags = GetEnableFlags();
         pPop = VclPtr<PopupMenu>::Create();
         VclPtrInstance<PopupMenu> pSubPop1;
         VclPtrInstance<PopupMenu> pSubPop2;
@@ -348,7 +338,7 @@ VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu()
             pSubPop2->InsertItem( i, aContextStrings[STR_UPDATE_SEL - STR_GLOBAL_CONTEXT_FIRST - CTX_UPDATE_SEL+ i] );
             pSubPop2->SetHelpId(i, aHelpForMenu[i]);
         }
-        pSubPop2->EnableItem(CTX_UPDATE_SEL, 0 != (nEnableFlags & ENABLE_UPDATE_SEL));
+        pSubPop2->EnableItem(CTX_UPDATE_SEL, bool(nEnableFlags & MenuEnableFlags::UpdateSel));
 
         pSubPop1->InsertItem(CTX_INSERT_ANY_INDEX, aContextStrings[STR_INDEX  - STR_GLOBAL_CONTEXT_FIRST]);
         pSubPop1->SetHelpId(CTX_INSERT_ANY_INDEX, aHelpForMenu[CTX_INSERT_ANY_INDEX]);
@@ -363,7 +353,7 @@ VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu()
         pPop->SetHelpId(CTX_UPDATE, aHelpForMenu[CTX_UPDATE]);
         pPop->InsertItem(CTX_EDIT, aContextStrings[STR_EDIT_CONTENT - STR_GLOBAL_CONTEXT_FIRST]);
         pPop->SetHelpId(CTX_EDIT, aHelpForMenu[CTX_EDIT]);
-        if(nEnableFlags&ENABLE_EDIT_LINK)
+        if(nEnableFlags&MenuEnableFlags::EditLink)
         {
             pPop->InsertItem(CTX_EDIT_LINK, aContextStrings[STR_EDIT_LINK - STR_GLOBAL_CONTEXT_FIRST]);
             pPop->SetHelpId(CTX_EDIT_LINK, aHelpForMenu[CTX_EDIT_LINK]);
@@ -375,15 +365,15 @@ VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu()
         pPop->SetHelpId(CTX_DELETE, aHelpForMenu[CTX_DELETE]);
 
         //disabling if applicable
-        pSubPop1->EnableItem(CTX_INSERT_ANY_INDEX,  0 != (nEnableFlags & ENABLE_INSERT_IDX ));
-        pSubPop1->EnableItem(CTX_INSERT_TEXT,       0 != (nEnableFlags & ENABLE_INSERT_TEXT));
-        pSubPop1->EnableItem(CTX_INSERT_FILE,       0 != (nEnableFlags & ENABLE_INSERT_FILE));
-        pSubPop1->EnableItem(CTX_INSERT_NEW_FILE,   0 != (nEnableFlags & ENABLE_INSERT_FILE));
+        pSubPop1->EnableItem(CTX_INSERT_ANY_INDEX,  bool(nEnableFlags & MenuEnableFlags::InsertIdx ));
+        pSubPop1->EnableItem(CTX_INSERT_TEXT,       bool(nEnableFlags & MenuEnableFlags::InsertText));
+        pSubPop1->EnableItem(CTX_INSERT_FILE,       bool(nEnableFlags & MenuEnableFlags::InsertFile));
+        pSubPop1->EnableItem(CTX_INSERT_NEW_FILE,   bool(nEnableFlags & MenuEnableFlags::InsertFile));
 
-        pPop->EnableItem(CTX_UPDATE,    0 != (nEnableFlags & ENABLE_UPDATE));
-        pPop->EnableItem(CTX_INSERT,    0 != (nEnableFlags & ENABLE_INSERT_IDX));
-        pPop->EnableItem(CTX_EDIT,      0 != (nEnableFlags & ENABLE_EDIT));
-        pPop->EnableItem(CTX_DELETE,    0 != (nEnableFlags & ENABLE_DELETE));
+        pPop->EnableItem(CTX_UPDATE,    bool(nEnableFlags & MenuEnableFlags::Update));
+        pPop->EnableItem(CTX_INSERT,    bool(nEnableFlags & MenuEnableFlags::InsertIdx));
+        pPop->EnableItem(CTX_EDIT,      bool(nEnableFlags & MenuEnableFlags::Edit));
+        pPop->EnableItem(CTX_DELETE,    bool(nEnableFlags & MenuEnableFlags::Delete));
 
         pPop->SetPopupMenu( CTX_INSERT, pSubPop1 );
         pPop->SetPopupMenu( CTX_UPDATE, pSubPop2 );
@@ -393,7 +383,7 @@ VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu()
 
 void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox)
 {
-    const sal_uInt16 nEnableFlags = GetEnableFlags();
+    const MenuEnableFlags nEnableFlags = GetEnableFlags();
     const OUString sCommand(pBox->GetItemCommand(nTbxId));
     if (sCommand == "insert")
     {
@@ -403,10 +393,10 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox)
             pMenu->InsertItem( i, aContextStrings[STR_INDEX  - STR_GLOBAL_CONTEXT_FIRST - CTX_INSERT_ANY_INDEX + i] );
             pMenu->SetHelpId(i, aHelpForMenu[i] );
         }
-        pMenu->EnableItem(CTX_INSERT_ANY_INDEX, 0 != (nEnableFlags & ENABLE_INSERT_IDX ));
-        pMenu->EnableItem(CTX_INSERT_TEXT,      0 != (nEnableFlags & ENABLE_INSERT_TEXT));
-        pMenu->EnableItem(CTX_INSERT_FILE,      0 != (nEnableFlags & ENABLE_INSERT_FILE));
-        pMenu->EnableItem(CTX_INSERT_NEW_FILE,  0 != (nEnableFlags & ENABLE_INSERT_FILE));
+        pMenu->EnableItem(CTX_INSERT_ANY_INDEX, bool(nEnableFlags & MenuEnableFlags::InsertIdx ));
+        pMenu->EnableItem(CTX_INSERT_TEXT,      bool(nEnableFlags & MenuEnableFlags::InsertText));
+        pMenu->EnableItem(CTX_INSERT_FILE,      bool(nEnableFlags & MenuEnableFlags::InsertFile));
+        pMenu->EnableItem(CTX_INSERT_NEW_FILE,  bool(nEnableFlags & MenuEnableFlags::InsertFile));
         pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl));
         pMenu->Execute(pBox, pBox->GetItemRect(nTbxId));
         pMenu.disposeAndClear();
@@ -421,7 +411,7 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox)
             pMenu->InsertItem( i, aContextStrings[STR_UPDATE_SEL - STR_GLOBAL_CONTEXT_FIRST - CTX_UPDATE_SEL+ i] );
             pMenu->SetHelpId(i, aHelpForMenu[i] );
         }
-        pMenu->EnableItem(CTX_UPDATE_SEL, 0 != (nEnableFlags & ENABLE_UPDATE_SEL));
+        pMenu->EnableItem(CTX_UPDATE_SEL, bool(nEnableFlags & MenuEnableFlags::UpdateSel));
         pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl));
         pMenu->Execute(pBox, pBox->GetItemRect(nTbxId));
         pMenu.disposeAndClear();
@@ -430,33 +420,33 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox)
     }
 }
 
-sal_uInt16  SwGlobalTree::GetEnableFlags() const
+MenuEnableFlags  SwGlobalTree::GetEnableFlags() const
 {
     SvTreeListEntry* pEntry = FirstSelected();
     sal_uLong nSelCount = GetSelectionCount();
     sal_uLong nEntryCount = GetEntryCount();
     SvTreeListEntry* pPrevEntry = pEntry ? Prev(pEntry) : nullptr;
 
-    sal_uInt16 nRet = 0;
+    MenuEnableFlags nRet = MenuEnableFlags::NONE;
     if(nSelCount == 1 || !nEntryCount)
-        nRet |= ENABLE_INSERT_IDX|ENABLE_INSERT_FILE;
+        nRet |= MenuEnableFlags::InsertIdx|MenuEnableFlags::InsertFile;
     if(nSelCount == 1)
     {
-        nRet |= ENABLE_EDIT;
+        nRet |= MenuEnableFlags::Edit;
         if (pEntry && static_cast<SwGlblDocContent*>(pEntry->GetUserData())->GetType() != GLBLDOC_UNKNOWN &&
                     (!pPrevEntry || static_cast<SwGlblDocContent*>(pPrevEntry->GetUserData())->GetType() != GLBLDOC_UNKNOWN))
-            nRet |= ENABLE_INSERT_TEXT;
+            nRet |= MenuEnableFlags::InsertText;
         if (pEntry && GLBLDOC_SECTION == static_cast<SwGlblDocContent*>(pEntry->GetUserData())->GetType())
-            nRet |= ENABLE_EDIT_LINK;
+            nRet |= MenuEnableFlags::EditLink;
     }
     else if(!nEntryCount)
     {
-        nRet |= ENABLE_INSERT_TEXT;
+        nRet |= MenuEnableFlags::InsertText;
     }
     if(nEntryCount)
-        nRet |= ENABLE_UPDATE|ENABLE_DELETE;
+        nRet |= MenuEnableFlags::Update|MenuEnableFlags::Delete;
     if(nSelCount)
-        nRet |= ENABLE_UPDATE_SEL;
+        nRet |= MenuEnableFlags::UpdateSel;
     return nRet;
 }
 
commit 8cd2334da9e8e19ef7e22081e722563612a1f32d
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 11:54:02 2016 +0200

    convert SW_CREATE to scoped enum
    
    Change-Id: I003785715df7e72cbf398902aabb5c3fe900a2d7

diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index 47e29ad..36ef233 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -577,6 +577,10 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( css::uno::RuntimeException, std::exception ) override;
 };
 
+enum class SwCreateDrawTable {
+    Dash = 1, Gradient, Hatch, Bitmap, TransGradient, Marker, Defaults
+};
+
 class SwXDocumentPropertyHelper : public SvxUnoForbiddenCharsTable
 {
     css::uno::Reference < css::uno::XInterface > xDashTable;
@@ -591,7 +595,7 @@ class SwXDocumentPropertyHelper : public SvxUnoForbiddenCharsTable
 public:
     SwXDocumentPropertyHelper(SwDoc& rDoc);
     virtual ~SwXDocumentPropertyHelper() override;
-    css::uno::Reference<css::uno::XInterface> GetDrawTable(short nWhich);
+    css::uno::Reference<css::uno::XInterface> GetDrawTable(SwCreateDrawTable nWhich);
     void Invalidate();
 
     virtual void onChange() override;
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 8ea5fdf..3aa6ec2 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -167,14 +167,6 @@ using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::document;
 using ::osl::FileBase;
 
-#define SW_CREATE_DASH_TABLE            0x01
-#define SW_CREATE_GRADIENT_TABLE        0x02
-#define SW_CREATE_HATCH_TABLE           0x03
-#define SW_CREATE_BITMAP_TABLE          0x04
-#define SW_CREATE_TRANSGRADIENT_TABLE   0x05
-#define SW_CREATE_MARKER_TABLE          0x06
-#define SW_CREATE_DRAW_DEFAULTS         0x07
-
 static SwPrintUIOptions * lcl_GetPrintUIOptions(
     SwDocShell * pDocShell,
     const SfxViewShell * pView )
@@ -1629,31 +1621,31 @@ css::uno::Reference<css::uno::XInterface> SwXTextDocument::create(
     }
     if (rServiceName == "com.sun.star.drawing.DashTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_DASH_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Dash);
     }
     if (rServiceName == "com.sun.star.drawing.GradientTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_GRADIENT_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Gradient);
     }
     if (rServiceName == "com.sun.star.drawing.HatchTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_HATCH_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Hatch);
     }
     if (rServiceName == "com.sun.star.drawing.BitmapTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_BITMAP_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Bitmap);
     }
     if (rServiceName == "com.sun.star.drawing.TransparencyGradientTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_TRANSGRADIENT_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::TransGradient);
     }
     if (rServiceName == "com.sun.star.drawing.MarkerTable")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_MARKER_TABLE);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Marker);
     }
     if (rServiceName == "com.sun.star.drawing.Defaults")
     {
-        return GetPropertyHelper()->GetDrawTable(SW_CREATE_DRAW_DEFAULTS);
+        return GetPropertyHelper()->GetDrawTable(SwCreateDrawTable::Defaults);
     }
     if (rServiceName == "com.sun.star.document.Settings")
     {
@@ -4217,7 +4209,7 @@ SwXDocumentPropertyHelper::~SwXDocumentPropertyHelper()
 {
 }
 
-Reference<XInterface> SwXDocumentPropertyHelper::GetDrawTable(short nWhich)
+Reference<XInterface> SwXDocumentPropertyHelper::GetDrawTable(SwCreateDrawTable nWhich)
 {
     Reference<XInterface> xRet;
     if(m_pDoc)
@@ -4226,37 +4218,37 @@ Reference<XInterface> SwXDocumentPropertyHelper::GetDrawTable(short nWhich)
         {
             // #i52858#
             // assure that Draw model is created, if it doesn't exist.
-            case SW_CREATE_DASH_TABLE         :
+            case SwCreateDrawTable::Dash         :
                 if(!xDashTable.is())
                     xDashTable = SvxUnoDashTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xDashTable;
             break;
-            case SW_CREATE_GRADIENT_TABLE     :
+            case SwCreateDrawTable::Gradient     :
                 if(!xGradientTable.is())
                     xGradientTable = SvxUnoGradientTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xGradientTable;
             break;
-            case SW_CREATE_HATCH_TABLE        :
+            case SwCreateDrawTable::Hatch        :
                 if(!xHatchTable.is())
                     xHatchTable = SvxUnoHatchTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xHatchTable;
             break;
-            case SW_CREATE_BITMAP_TABLE       :
+            case SwCreateDrawTable::Bitmap       :
                 if(!xBitmapTable.is())
                     xBitmapTable = SvxUnoBitmapTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xBitmapTable;
             break;
-            case SW_CREATE_TRANSGRADIENT_TABLE:
+            case SwCreateDrawTable::TransGradient:
                 if(!xTransGradientTable.is())
                     xTransGradientTable = SvxUnoTransGradientTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xTransGradientTable;
             break;
-            case SW_CREATE_MARKER_TABLE       :
+            case SwCreateDrawTable::Marker       :
                 if(!xMarkerTable.is())
                     xMarkerTable = SvxUnoMarkerTable_createInstance( m_pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel() );
                 xRet = xMarkerTable;
             break;
-            case  SW_CREATE_DRAW_DEFAULTS:
+            case  SwCreateDrawTable::Defaults:
                 if(!xDrawDefaults.is())
                     xDrawDefaults = static_cast<cppu::OWeakObject*>(new SwSvxUnoDrawPool(m_pDoc));
                 xRet = xDrawDefaults;
commit 678041c48fe3f03fd4f12a92b6a66cff33d6382b
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Fri Nov 25 11:16:25 2016 +0200

    convert HTML_FRM_OPTS to o3tl::typed_flags
    
    Change-Id: I3d8ac978ff626f792e3cff6e2b12a7680addf303

diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index b3e3711..eb0aaac 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -1969,7 +1969,7 @@ Writer& OutCSS1_NumBulListStyleOpt( Writer& rWrt, const SwNumRule& rNumRule,
 }
 
 void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat,
-                                          sal_uInt32 nFrameOpts,
+                                          HtmlFrmOpts nFrameOpts,
                                           const SdrObject *pSdrObj,
                                           const SfxItemSet *pItemSet )
 {
@@ -1980,7 +1980,7 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
     const SwFormatHoriOrient& rHoriOri = rFrameFormat.GetHoriOrient();
     SvxLRSpaceItem aLRItem( rFrameFormat.GetLRSpace() );
     SvxULSpaceItem aULItem( rFrameFormat.GetULSpace() );
-    if( nFrameOpts & HTML_FRMOPT_S_ALIGN )
+    if( nFrameOpts & HtmlFrmOpts::SAlign )
     {
         const SwFormatAnchor& rAnchor = rFrameFormat.GetAnchor();
         switch( rAnchor.GetAnchorId() )
@@ -1990,7 +1990,7 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
             if( text::RelOrientation::FRAME == rHoriOri.GetRelationOrient() ||
                 text::RelOrientation::PRINT_AREA == rHoriOri.GetRelationOrient() )
             {
-                if( !(nFrameOpts & HTML_FRMOPT_ALIGN) )
+                if( !(nFrameOpts & HtmlFrmOpts::Align) )
                 {
                     // float
                     const sal_Char *pStr = text::HoriOrientation::RIGHT==rHoriOri.GetHoriOrient()
@@ -2082,7 +2082,7 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
     }
 
     // width/height
-    if( nFrameOpts & HTML_FRMOPT_S_SIZE )
+    if( nFrameOpts & HtmlFrmOpts::SSize )
     {
         if( RES_DRAWFRMFMT == rFrameFormat.Which() )
         {
@@ -2093,17 +2093,17 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
             if( pSdrObj )
             {
                 Size aTwipSz( pSdrObj->GetLogicRect().GetSize() );
-                if( nFrameOpts & HTML_FRMOPT_S_WIDTH )
+                if( nFrameOpts & HtmlFrmOpts::SWidth )
                 {
-                    if( nFrameOpts & HTML_FRMOPT_S_PIXSIZE )
+                    if( nFrameOpts & HtmlFrmOpts::SPixSize )
                         OutCSS1_PixelProperty( sCSS1_P_width, aTwipSz.Width(),
                                                false );
                     else
                         OutCSS1_UnitProperty( sCSS1_P_width, aTwipSz.Width() );
                 }
-                if( nFrameOpts & HTML_FRMOPT_S_HEIGHT )
+                if( nFrameOpts & HtmlFrmOpts::SHeight )
                 {
-                    if( nFrameOpts & HTML_FRMOPT_S_PIXSIZE )
+                    if( nFrameOpts & HtmlFrmOpts::SPixSize )
                         OutCSS1_PixelProperty( sCSS1_P_height, aTwipSz.Height(),
                                                true );
                     else
@@ -2113,16 +2113,16 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
         }
         else
         {
-            OSL_ENSURE( HTML_FRMOPT_ABSSIZE & nFrameOpts,
+            OSL_ENSURE( HtmlFrmOpts::AbsSize & nFrameOpts,
                     "Export absolute size" );
-            OSL_ENSURE( HTML_FRMOPT_ANYSIZE & nFrameOpts,
+            OSL_ENSURE( HtmlFrmOpts::AnySize & nFrameOpts,
                     "Export every size" );
             Css1FrameSize nMode = Css1FrameSize::NONE;
-            if( nFrameOpts & HTML_FRMOPT_S_WIDTH )
+            if( nFrameOpts & HtmlFrmOpts::SWidth )
                 nMode |= Css1FrameSize::Width;
-            if( nFrameOpts & HTML_FRMOPT_S_HEIGHT )
+            if( nFrameOpts & HtmlFrmOpts::SHeight )
                 nMode |= (Css1FrameSize::MinHeight|Css1FrameSize::FixHeight);
-            if( nFrameOpts & HTML_FRMOPT_S_PIXSIZE )
+            if( nFrameOpts & HtmlFrmOpts::SPixSize )
                 nMode |= Css1FrameSize::Pixel;
 
             OutCSS1_SwFormatFrameSize( *this, rFrameFormat.GetFrameSize(), nMode );
@@ -2131,7 +2131,7 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
 
     const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet();
     // margin-*
-    if( (nFrameOpts & HTML_FRMOPT_S_SPACE) &&
+    if( (nFrameOpts & HtmlFrmOpts::SSpace) &&
         IsHTMLMode( HTMLMODE_FLY_MARGINS) )
     {
         const SvxLRSpaceItem *pLRItem = nullptr;
@@ -2145,17 +2145,17 @@ void SwHTMLWriter::OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat
     }
 
     // border
-    if( nFrameOpts & HTML_FRMOPT_S_BORDER )
+    if( nFrameOpts & HtmlFrmOpts::SBorder )
     {
         const SfxPoolItem* pItem;
-        if( nFrameOpts & HTML_FRMOPT_S_NOBORDER )
+        if( nFrameOpts & HtmlFrmOpts::SNoBorder )
             OutCSS1_SvxBox( *this, rFrameFormat.GetBox() );
         else if( SfxItemState::SET==rItemSet.GetItemState( RES_BOX, true, &pItem ) )
             OutCSS1_SvxBox( *this, *pItem );
     }
 
     // background (if, then the color must be set also)
-    if( nFrameOpts & HTML_FRMOPT_S_BACKGROUND )
+    if( nFrameOpts & HtmlFrmOpts::SBackground )
         OutCSS1_FrameFormatBackground( rFrameFormat );
 
     if( pItemSet )
diff --git a/sw/source/filter/html/htmldrawwriter.cxx b/sw/source/filter/html/htmldrawwriter.cxx
index 2debe01..083f6a2 100644
--- a/sw/source/filter/html/htmldrawwriter.cxx
+++ b/sw/source/filter/html/htmldrawwriter.cxx
@@ -55,13 +55,13 @@
 
 using namespace css;
 
-const sal_uInt32 HTML_FRMOPTS_MARQUEE   =
-    HTML_FRMOPT_ALIGN |
-    HTML_FRMOPT_SPACE;
+const HtmlFrmOpts HTML_FRMOPTS_MARQUEE   =
+    HtmlFrmOpts::Align |
+    HtmlFrmOpts::Space;
 
-const sal_uInt32 HTML_FRMOPTS_MARQUEE_CSS1  =
-    HTML_FRMOPT_S_ALIGN |
-    HTML_FRMOPT_S_SPACE;
+const HtmlFrmOpts HTML_FRMOPTS_MARQUEE_CSS1  =
+    HtmlFrmOpts::SAlign |
+    HtmlFrmOpts::SSpace;
 
 const SdrObject *SwHTMLWriter::GetMarqueeTextObj( const SwDrawFrameFormat& rFormat )
 {
@@ -283,7 +283,7 @@ Writer& OutHTML_DrawFrameFormatAsMarquee( Writer& rWrt,
         rWrt.Strm().WriteCharPtr( sOut.makeStringAndClear().getStr() );
 
     // und nun noch ALIGN, HSPACE und VSPACE
-    sal_uInt32 nFrameFlags = HTML_FRMOPTS_MARQUEE;
+    HtmlFrmOpts nFrameFlags = HTML_FRMOPTS_MARQUEE;
     if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_DRAW ) )
         nFrameFlags |= HTML_FRMOPTS_MARQUEE_CSS1;
     OString aEndTags = rHTMLWrt.OutFrameFormatOptions( rFormat, aEmptyOUStr, nFrameFlags );
diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx
index 22b900c..a70d868 100644
--- a/sw/source/filter/html/htmlflywriter.cxx
+++ b/sw/source/filter/html/htmlflywriter.cxx
@@ -65,66 +65,66 @@
 
 using namespace css;
 
-const sal_uLong HTML_FRMOPTS_IMG_ALL        =
-    HTML_FRMOPT_ALT |
-    HTML_FRMOPT_SIZE |
-    HTML_FRMOPT_ANYSIZE |
-    HTML_FRMOPT_BORDER |
-    HTML_FRMOPT_NAME;
-const sal_uLong HTML_FRMOPTS_IMG_CNTNR      =
+const HtmlFrmOpts HTML_FRMOPTS_IMG_ALL        =
+    HtmlFrmOpts::Alt |
+    HtmlFrmOpts::Size |
+    HtmlFrmOpts::AnySize |
+    HtmlFrmOpts::Border |
+    HtmlFrmOpts::Name;
+const HtmlFrmOpts HTML_FRMOPTS_IMG_CNTNR      =
     HTML_FRMOPTS_IMG_ALL |
-    HTML_FRMOPT_ABSSIZE;
-const sal_uLong HTML_FRMOPTS_IMG            =
+    HtmlFrmOpts::AbsSize;
+const HtmlFrmOpts HTML_FRMOPTS_IMG            =
     HTML_FRMOPTS_IMG_ALL |
-    HTML_FRMOPT_ALIGN |
-    HTML_FRMOPT_SPACE |
-    HTML_FRMOPT_BRCLEAR;
-const sal_uLong HTML_FRMOPTS_IMG_CSS1       =
-    HTML_FRMOPT_S_ALIGN |
-    HTML_FRMOPT_S_SPACE;
-
-const sal_uLong HTML_FRMOPTS_DIV            =
-    HTML_FRMOPT_ID |
-    HTML_FRMOPT_S_ALIGN |
-    HTML_FRMOPT_S_SIZE |
-    HTML_FRMOPT_ANYSIZE |
-    HTML_FRMOPT_ABSSIZE |
-    HTML_FRMOPT_S_SPACE |
-    HTML_FRMOPT_S_BORDER |
-    HTML_FRMOPT_S_BACKGROUND |
-    HTML_FRMOPT_BRCLEAR |
-    HTML_FRMOPT_DIR;
-
-const sal_uLong HTML_FRMOPTS_MULTICOL       =
-    HTML_FRMOPT_ID |
-    HTML_FRMOPT_WIDTH |
-    HTML_FRMOPT_ANYSIZE |
-    HTML_FRMOPT_ABSSIZE |
-    HTML_FRMOPT_DIR;
-const sal_uLong HTML_FRMOPTS_MULTICOL_CNTNR =
+    HtmlFrmOpts::Align |
+    HtmlFrmOpts::Space |
+    HtmlFrmOpts::BrClear;
+const HtmlFrmOpts HTML_FRMOPTS_IMG_CSS1       =
+    HtmlFrmOpts::SAlign |
+    HtmlFrmOpts::SSpace;
+
+const HtmlFrmOpts HTML_FRMOPTS_DIV            =
+    HtmlFrmOpts::Id |
+    HtmlFrmOpts::SAlign |
+    HtmlFrmOpts::SSize |
+    HtmlFrmOpts::AnySize |
+    HtmlFrmOpts::AbsSize |
+    HtmlFrmOpts::SSpace |
+    HtmlFrmOpts::SBorder |
+    HtmlFrmOpts::SBackground |
+    HtmlFrmOpts::BrClear |
+    HtmlFrmOpts::Dir;
+
+const HtmlFrmOpts HTML_FRMOPTS_MULTICOL       =
+    HtmlFrmOpts::Id |
+    HtmlFrmOpts::Width |
+    HtmlFrmOpts::AnySize |
+    HtmlFrmOpts::AbsSize |
+    HtmlFrmOpts::Dir;
+const HtmlFrmOpts HTML_FRMOPTS_MULTICOL_CNTNR =
     HTML_FRMOPTS_MULTICOL;
-const sal_uLong HTML_FRMOPTS_MULTICOL_CSS1  =
-    HTML_FRMOPT_S_ALIGN |
-    HTML_FRMOPT_S_SIZE |
-    HTML_FRMOPT_S_SPACE |
-    HTML_FRMOPT_S_BORDER|
-    HTML_FRMOPT_S_BACKGROUND;
-
-const sal_uLong HTML_FRMOPTS_SPACER         =
-    HTML_FRMOPT_ALIGN |
-    HTML_FRMOPT_SIZE |
-    HTML_FRMOPT_ANYSIZE |
-    HTML_FRMOPT_BRCLEAR |
-    HTML_FRMOPT_MARGINSIZE |
-    HTML_FRMOPT_ABSSIZE;
-
-const sal_uLong HTML_FRMOPTS_CNTNR          =
-    HTML_FRMOPT_S_ALIGN |
-    HTML_FRMOPT_S_SPACE |
-    HTML_FRMOPT_S_WIDTH |
-    HTML_FRMOPT_ANYSIZE |
-    HTML_FRMOPT_ABSSIZE |
-    HTML_FRMOPT_S_PIXSIZE;
+const HtmlFrmOpts HTML_FRMOPTS_MULTICOL_CSS1  =
+    HtmlFrmOpts::SAlign |
+    HtmlFrmOpts::SSize |
+    HtmlFrmOpts::SSpace |
+    HtmlFrmOpts::SBorder|
+    HtmlFrmOpts::SBackground;
+
+const HtmlFrmOpts HTML_FRMOPTS_SPACER         =
+    HtmlFrmOpts::Align |
+    HtmlFrmOpts::Size |
+    HtmlFrmOpts::AnySize |
+    HtmlFrmOpts::BrClear |
+    HtmlFrmOpts::MarginSize |
+    HtmlFrmOpts::AbsSize;
+
+const HtmlFrmOpts HTML_FRMOPTS_CNTNR          =
+    HtmlFrmOpts::SAlign |
+    HtmlFrmOpts::SSpace |
+    HtmlFrmOpts::SWidth |
+    HtmlFrmOpts::AnySize |
+    HtmlFrmOpts::AbsSize |
+    HtmlFrmOpts::SPixSize;
 
 static Writer& OutHTML_FrameFormatTableNode( Writer& rWrt, const SwFrameFormat& rFrameFormat );
 static Writer& OutHTML_FrameFormatAsMulticol( Writer& rWrt, const SwFrameFormat& rFormat,
@@ -443,14 +443,14 @@ void SwHTMLWriter::OutFrameFormat( AllHtmlFlags nMode, const SwFrameFormat& rFra
         Strm().WriteCharPtr( sOut.makeStringAndClear().getStr() );
 
         // Output a width for non-draw objects
-        sal_uLong nFrameFlags = HTML_FRMOPTS_CNTNR;
+        HtmlFrmOpts nFrameFlags = HTML_FRMOPTS_CNTNR;
 
         // For frames with columns we can also output the background
         if( HtmlOut::MultiCol == nOutMode )
-            nFrameFlags |= HTML_FRMOPT_S_BACKGROUND|HTML_FRMOPT_S_BORDER;
+            nFrameFlags |= HtmlFrmOpts::SBackground|HtmlFrmOpts::SBorder;
 
         if( IsHTMLMode( HTMLMODE_BORDER_NONE ) )
-           nFrameFlags |= HTML_FRMOPT_S_NOBORDER;
+           nFrameFlags |= HtmlFrmOpts::SNoBorder;
         OutCSS1_FrameFormatOptions( rFrameFormat, nFrameFlags, pSdrObject );
         Strm().WriteChar( '>' );
 
@@ -520,7 +520,7 @@ void SwHTMLWriter::OutFrameFormat( AllHtmlFlags nMode, const SwFrameFormat& rFra
 
 OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
                                      const OUString& rAlternateText,
-                                     sal_uInt32 nFrameOpts )
+                                     HtmlFrmOpts nFrameOpts )
 {
     OString sRetEndTags;
     OStringBuffer sOut;
@@ -528,11 +528,11 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
     const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet();
 
     // Name
-    if( (nFrameOpts & (HTML_FRMOPT_ID|HTML_FRMOPT_NAME)) &&
+    if( (nFrameOpts & (HtmlFrmOpts::Id|HtmlFrmOpts::Name)) &&
         !rFrameFormat.GetName().isEmpty() )
     {
         const sal_Char *pStr =
-            (nFrameOpts & HTML_FRMOPT_ID) ? OOO_STRING_SVTOOLS_HTML_O_id : OOO_STRING_SVTOOLS_HTML_O_name;
+            (nFrameOpts & HtmlFrmOpts::Id) ? OOO_STRING_SVTOOLS_HTML_O_id : OOO_STRING_SVTOOLS_HTML_O_name;
         sOut.append(' ').append(pStr).
             append("=\"");
         Strm().WriteCharPtr( sOut.makeStringAndClear().getStr() );
@@ -541,7 +541,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
     }
 
     // Name
-    if( nFrameOpts & HTML_FRMOPT_DIR )
+    if( nFrameOpts & HtmlFrmOpts::Dir )
     {
         sal_uInt16 nDir = GetHTMLDirection( rItemSet );
         Strm().WriteCharPtr( sOut.makeStringAndClear().getStr() );
@@ -549,7 +549,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
     }
 
     // ALT
-    if( (nFrameOpts & HTML_FRMOPT_ALT) && !rAlternateText.isEmpty() )
+    if( (nFrameOpts & HtmlFrmOpts::Alt) && !rAlternateText.isEmpty() )
     {
         sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_alt).
             append("=\"");
@@ -561,14 +561,14 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
     // ALIGN
     const sal_Char *pStr = nullptr;
     RndStdIds eAnchorId = rFrameFormat.GetAnchor().GetAnchorId();
-    if( (nFrameOpts & HTML_FRMOPT_ALIGN) &&
+    if( (nFrameOpts & HtmlFrmOpts::Align) &&
         ((FLY_AT_PARA == eAnchorId) || (FLY_AT_CHAR == eAnchorId)) )
     {
         // MIB 12.3.98: Wouldn't it be more clever to left-align frames that
         // are anchored to a paragraph if necessary, instead of inserting them
         // as being anchored to characters?
         const SwFormatHoriOrient& rHoriOri = rFrameFormat.GetHoriOrient();
-        if( !(nFrameOpts & HTML_FRMOPT_S_ALIGN) ||
+        if( !(nFrameOpts & HtmlFrmOpts::SAlign) ||
             text::RelOrientation::FRAME == rHoriOri.GetRelationOrient() ||
             text::RelOrientation::PRINT_AREA == rHoriOri.GetRelationOrient() )
         {
@@ -577,8 +577,8 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
                         : OOO_STRING_SVTOOLS_HTML_AL_left;
         }
     }
-    if( (nFrameOpts & HTML_FRMOPT_ALIGN) && !pStr &&
-        ( (nFrameOpts & HTML_FRMOPT_S_ALIGN) == 0 ||
+    if( (nFrameOpts & HtmlFrmOpts::Align) && !pStr &&
+        ( !(nFrameOpts & HtmlFrmOpts::SAlign) ||
           (FLY_AS_CHAR == eAnchorId) ) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_VERT_ORIENT, true, &pItem ))
     {
@@ -604,7 +604,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
 
     // HSPACE und VSPACE
     Size aTwipSpc( 0, 0 );
-    if( (nFrameOpts & (HTML_FRMOPT_SPACE|HTML_FRMOPT_MARGINSIZE)) &&
+    if( (nFrameOpts & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, true, &pItem ))
     {
         aTwipSpc.Width() =
@@ -612,7 +612,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
                 static_cast<const SvxLRSpaceItem*>(pItem)->GetRight() ) / 2;
         m_nDfltLeftMargin = m_nDfltRightMargin = aTwipSpc.Width();
     }
-    if( (nFrameOpts & (HTML_FRMOPT_SPACE|HTML_FRMOPT_MARGINSIZE)) &&
+    if( (nFrameOpts & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_UL_SPACE, true, &pItem ))
     {
         aTwipSpc.Height()  =
@@ -621,7 +621,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
         m_nDfltTopMargin = m_nDfltBottomMargin = (sal_uInt16)aTwipSpc.Height();
     }
 
-    if( (nFrameOpts & HTML_FRMOPT_SPACE) &&
+    if( (nFrameOpts & HtmlFrmOpts::Space) &&
         (aTwipSpc.Width() || aTwipSpc.Height()) &&
         Application::GetDefaultDevice() )
     {
@@ -648,7 +648,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
 
     // The spacing must be considered for the size, if the corresponding flag
     // is set.
-    if( (nFrameOpts & HTML_FRMOPT_MARGINSIZE) )
+    if( (nFrameOpts & HtmlFrmOpts::MarginSize) )
     {
         aTwipSpc.Width() *= -2;
         aTwipSpc.Height() *= -2;
@@ -659,7 +659,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
         aTwipSpc.Height() = 0;
     }
 
-    if( !(nFrameOpts & HTML_FRMOPT_ABSSIZE) &&
+    if( !(nFrameOpts & HtmlFrmOpts::AbsSize) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_BOX, true, &pItem ))
     {
         const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem);
@@ -672,9 +672,9 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
 
     // WIDTH and/or HEIGHT
     // Output ATT_VAR_SIZE/ATT_MIN_SIZE only, if ANYSIZE is set
-    if( (nFrameOpts & HTML_FRMOPT_SIZE) &&
+    if( (nFrameOpts & HtmlFrmOpts::Size) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_FRM_SIZE, true, &pItem ) &&
-        ( (nFrameOpts & HTML_FRMOPT_ANYSIZE) ||
+        ( (nFrameOpts & HtmlFrmOpts::AnySize) ||
           ATT_FIX_SIZE == static_cast<const SwFormatFrameSize *>(pItem)->GetHeightSizeType()) )
     {
         const SwFormatFrameSize *pFSItem = static_cast<const SwFormatFrameSize *>(pItem);
@@ -707,7 +707,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
                 aPixelSz.Height() = 1;
         }
 
-        if( (nFrameOpts & HTML_FRMOPT_WIDTH) &&
+        if( (nFrameOpts & HtmlFrmOpts::Width) &&
             ((nPrcWidth && nPrcWidth!=255) || aPixelSz.Width()) )
         {
             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_width).
@@ -719,7 +719,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
             sOut.append("\"");
         }
 
-        if( (nFrameOpts & HTML_FRMOPT_HEIGHT) &&
+        if( (nFrameOpts & HtmlFrmOpts::Height) &&
             ((nPrcHeight && nPrcHeight!=255) || aPixelSz.Height()) )
         {
             sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_height).
@@ -737,7 +737,7 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
 
     // Insert wrap for graphics that are anchored to a paragraph as
     // <BR CLEAR=...> in the string
-    if( (nFrameOpts & HTML_FRMOPT_BRCLEAR) &&
+    if( (nFrameOpts & HtmlFrmOpts::BrClear) &&
         ((FLY_AT_PARA == rFrameFormat.GetAnchor().GetAnchorId()) ||
          (FLY_AT_CHAR == rFrameFormat.GetAnchor().GetAnchorId())) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_SURROUND, true, &pItem ))
@@ -802,21 +802,21 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat,
     return sRetEndTags;
 }
 
-void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameFormat& rFrameFormat, const OUString& rAlternateText, sal_uInt32 nFrameOptions)
+void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameFormat& rFrameFormat, const OUString& rAlternateText, HtmlFrmOpts nFrameOptions)
 {
     const SfxPoolItem* pItem;
     const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet();
 
     // Name
-    if( (nFrameOptions & (HTML_FRMOPT_ID|HTML_FRMOPT_NAME)) &&
+    if( (nFrameOptions & (HtmlFrmOpts::Id|HtmlFrmOpts::Name)) &&
         !rFrameFormat.GetName().isEmpty() )
     {
-        const sal_Char* pAttributeName = (nFrameOptions & HTML_FRMOPT_ID) ? OOO_STRING_SVTOOLS_HTML_O_id : OOO_STRING_SVTOOLS_HTML_O_name;
+        const sal_Char* pAttributeName = (nFrameOptions & HtmlFrmOpts::Id) ? OOO_STRING_SVTOOLS_HTML_O_id : OOO_STRING_SVTOOLS_HTML_O_name;
         aHtml.attribute(pAttributeName, rFrameFormat.GetName());
     }
 
     // Name
-    if (nFrameOptions & HTML_FRMOPT_DIR)
+    if (nFrameOptions & HtmlFrmOpts::Dir)
     {
         sal_uInt16 nCurrentDirection = GetHTMLDirection(rItemSet);
         OString sDirection = convertDirection(nCurrentDirection);
@@ -824,7 +824,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
     }
 
     // alt
-    if( (nFrameOptions & HTML_FRMOPT_ALT) && !rAlternateText.isEmpty() )
+    if( (nFrameOptions & HtmlFrmOpts::Alt) && !rAlternateText.isEmpty() )
     {
         aHtml.attribute(OOO_STRING_SVTOOLS_HTML_O_alt, rAlternateText);
     }
@@ -832,11 +832,11 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
     // align
     const sal_Char* pAlignString = nullptr;
     RndStdIds eAnchorId = rFrameFormat.GetAnchor().GetAnchorId();
-    if( (nFrameOptions & HTML_FRMOPT_ALIGN) &&
+    if( (nFrameOptions & HtmlFrmOpts::Align) &&
         ((FLY_AT_PARA == eAnchorId) || (FLY_AT_CHAR == eAnchorId)) )
     {
         const SwFormatHoriOrient& rHoriOri = rFrameFormat.GetHoriOrient();
-        if( !(nFrameOptions & HTML_FRMOPT_S_ALIGN) ||
+        if( !(nFrameOptions & HtmlFrmOpts::SAlign) ||
             text::RelOrientation::FRAME == rHoriOri.GetRelationOrient() ||
             text::RelOrientation::PRINT_AREA == rHoriOri.GetRelationOrient() )
         {
@@ -845,8 +845,8 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
                         : OOO_STRING_SVTOOLS_HTML_AL_left;
         }
     }
-    if( (nFrameOptions & HTML_FRMOPT_ALIGN) && !pAlignString &&
-        ( (nFrameOptions & HTML_FRMOPT_S_ALIGN) == 0 ||
+    if( (nFrameOptions & HtmlFrmOpts::Align) && !pAlignString &&
+        ( !(nFrameOptions & HtmlFrmOpts::SAlign) ||
           (FLY_AS_CHAR == eAnchorId) ) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_VERT_ORIENT, true, &pItem ))
     {
@@ -871,7 +871,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
 
     // hspace and vspace
     Size aTwipSpc( 0, 0 );
-    if( (nFrameOptions & (HTML_FRMOPT_SPACE | HTML_FRMOPT_MARGINSIZE)) &&
+    if( (nFrameOptions & (HtmlFrmOpts::Space | HtmlFrmOpts::MarginSize)) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, true, &pItem ))
     {
         aTwipSpc.Width() =
@@ -879,7 +879,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
                 static_cast<const SvxLRSpaceItem*>(pItem)->GetRight() ) / 2;
         m_nDfltLeftMargin = m_nDfltRightMargin = aTwipSpc.Width();
     }
-    if( (nFrameOptions & (HTML_FRMOPT_SPACE|HTML_FRMOPT_MARGINSIZE)) &&
+    if( (nFrameOptions & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_UL_SPACE, true, &pItem ))
     {
         aTwipSpc.Height()  =
@@ -888,7 +888,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
         m_nDfltTopMargin = m_nDfltBottomMargin = (sal_uInt16)aTwipSpc.Height();
     }
 
-    if( (nFrameOptions & HTML_FRMOPT_SPACE) &&
+    if( (nFrameOptions & HtmlFrmOpts::Space) &&
         (aTwipSpc.Width() || aTwipSpc.Height()) &&
         Application::GetDefaultDevice() )
     {
@@ -913,7 +913,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
 
     // The spacing must be considered for the size, if the corresponding flag
     // is set.
-    if( (nFrameOptions & HTML_FRMOPT_MARGINSIZE) )
+    if( (nFrameOptions & HtmlFrmOpts::MarginSize) )
     {
         aTwipSpc.Width() *= -2;
         aTwipSpc.Height() *= -2;
@@ -924,7 +924,7 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
         aTwipSpc.Height() = 0;
     }
 
-    if( !(nFrameOptions & HTML_FRMOPT_ABSSIZE) &&
+    if( !(nFrameOptions & HtmlFrmOpts::AbsSize) &&
         SfxItemState::SET == rItemSet.GetItemState( RES_BOX, true, &pItem ))
     {
         const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem);
@@ -937,9 +937,9 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma
 
     // "width" and/or "height"
     // Only output ATT_VAR_SIZE/ATT_MIN_SIZE if ANYSIZE is set

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list