framework/inc/properties.h                       |   62 ++++++++++++-----------
 framework/source/layoutmanager/layoutmanager.cxx |   29 +++++-----
 framework/source/services/autorecovery.cxx       |   14 ++---
 framework/source/services/frame.cxx              |    2 
 4 files changed, 58 insertions(+), 49 deletions(-)

New commits:
commit 56343500ee0512015fcc1e4ea9ec83649c725c1a
Author:     Mo Amr <[email protected]>
AuthorDate: Tue Feb 24 08:16:43 2026 +0000
Commit:     Ilmari Lauhakangas <[email protected]>
CommitDate: Sat Feb 28 12:07:10 2026 +0100

    tdf#169155 use o3tl::enumarray for AutoRecovery and LayoutManager
    
    using modern C++ enum classes instead of traditional #define macros
    
    Change-Id: I2e2e32e26ac14dcde77de1c0853a2a03eb284e3a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200143
    Tested-by: Jenkins
    Reviewed-by: Ilmari Lauhakangas <[email protected]>

diff --git a/framework/inc/properties.h b/framework/inc/properties.h
index f6132e81e1a3..cf6a76f11906 100644
--- a/framework/inc/properties.h
+++ b/framework/inc/properties.h
@@ -49,24 +49,28 @@ inline constexpr o3tl::enumarray<FramePropHandle, OUString> 
FramePropNames =
 };
 
 /** properties for "LayoutManager" class */
+enum class LayoutManagerPropHandle
+{
+    MenuBarCloser,
+    AutomaticToolbars,
+    RefreshVisibility,
+    HideCurrentUI,
+    LockCount,
+    PreserveContentSize,
+    RefreshToolTip,
+    LAST = RefreshToolTip
+};
 
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_MENUBARCLOSER = 
u"MenuBarCloser"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_AUTOMATICTOOLBARS = 
u"AutomaticToolbars"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_REFRESHVISIBILITY = 
u"RefreshContextToolbarVisibility"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_HIDECURRENTUI = 
u"HideCurrentUI"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_LOCKCOUNT = 
u"LockCount"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_PRESERVE_CONTENT_SIZE = 
u"PreserveContentSize"_ustr;
-inline constexpr OUString LAYOUTMANAGER_PROPNAME_ASCII_REFRESHTOOLTIP = 
u"RefreshContextToolbarToolTip"_ustr;
-
-#define LAYOUTMANAGER_PROPNAME_MENUBARCLOSER            
LAYOUTMANAGER_PROPNAME_ASCII_MENUBARCLOSER
-
-#define LAYOUTMANAGER_PROPHANDLE_MENUBARCLOSER          0
-#define LAYOUTMANAGER_PROPHANDLE_AUTOMATICTOOLBARS      1
-#define LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY      2
-#define LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI          3
-#define LAYOUTMANAGER_PROPHANDLE_LOCKCOUNT              4
-#define LAYOUTMANAGER_PROPHANDLE_PRESERVE_CONTENT_SIZE  5
-#define LAYOUTMANAGER_PROPHANDLE_REFRESHTOOLTIP         6
+inline constexpr o3tl::enumarray<LayoutManagerPropHandle, OUString> 
LayoutManagerPropNames =
+{
+    u"MenuBarCloser"_ustr,
+    u"AutomaticToolbars"_ustr,
+    u"RefreshContextToolbarVisibility"_ustr,
+    u"HideCurrentUI"_ustr,
+    u"LockCount"_ustr,
+    u"PreserveContentSize"_ustr,
+    u"RefreshContextToolbarToolTip"_ustr
+};
 
 /** properties for "UICommandDescription" class */
 inline constexpr OUString UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDIMAGELIST = 
u"private:resource/image/commandimagelist"_ustr;
@@ -77,18 +81,20 @@ inline constexpr OUString 
UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDMIRRORIMAGELIST
 #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON            8
 
 /** properties for "AutoRecovery" class */
+enum class AutoRecoveryPropHandle
+{
+    ExistsRecoveryData,
+    ExistsSessionData,
+    Crashed,
+    LAST = Crashed
+};
 
-inline constexpr OUString AUTORECOVERY_PROPNAME_ASCII_EXISTS_RECOVERYDATA = 
u"ExistsRecoveryData"_ustr;
-inline constexpr OUString AUTORECOVERY_PROPNAME_ASCII_EXISTS_SESSIONDATA = 
u"ExistsSessionData"_ustr;
-inline constexpr OUString AUTORECOVERY_PROPNAME_ASCII_CRASHED = 
u"Crashed"_ustr;
-
-#define AUTORECOVERY_PROPNAME_EXISTS_RECOVERYDATA       
AUTORECOVERY_PROPNAME_ASCII_EXISTS_RECOVERYDATA
-#define AUTORECOVERY_PROPNAME_EXISTS_SESSIONDATA        
AUTORECOVERY_PROPNAME_ASCII_EXISTS_SESSIONDATA
-#define AUTORECOVERY_PROPNAME_CRASHED                   
AUTORECOVERY_PROPNAME_ASCII_CRASHED
-
-#define AUTORECOVERY_PROPHANDLE_EXISTS_RECOVERYDATA     0
-#define AUTORECOVERY_PROPHANDLE_EXISTS_SESSIONDATA      1
-#define AUTORECOVERY_PROPHANDLE_CRASHED                 2
+inline constexpr o3tl::enumarray<AutoRecoveryPropHandle, OUString> 
AutoRecoveryPropNames =
+{
+    u"ExistsRecoveryData"_ustr,
+    u"ExistsSessionData"_ustr,
+    u"Crashed"_ustr
+};
 
 /** properties for Filter config */
 
diff --git a/framework/source/layoutmanager/layoutmanager.cxx 
b/framework/source/layoutmanager/layoutmanager.cxx
index ba6b95136c59..12b34ccf870a 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -126,13 +126,13 @@ LayoutManager::LayoutManager( const Reference< 
XComponentContext >& xContext ) :
     m_aAsyncLayoutTimer.SetTimeout( 50 );
     m_aAsyncLayoutTimer.SetInvokeHandler( LINK( this, LayoutManager, 
AsyncLayoutHdl ) );
 
-    registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_AUTOMATICTOOLBARS, 
LAYOUTMANAGER_PROPHANDLE_AUTOMATICTOOLBARS, 
css::beans::PropertyAttribute::TRANSIENT, &m_bAutomaticToolbars, 
cppu::UnoType<decltype(m_bAutomaticToolbars)>::get() );
-    registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_HIDECURRENTUI, 
LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI, beans::PropertyAttribute::TRANSIENT, 
&m_bHideCurrentUI, cppu::UnoType<decltype(m_bHideCurrentUI)>::get() );
-    registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_LOCKCOUNT, 
LAYOUTMANAGER_PROPHANDLE_LOCKCOUNT, beans::PropertyAttribute::TRANSIENT | 
beans::PropertyAttribute::READONLY, &m_nLockCount, 
cppu::UnoType<decltype(m_nLockCount)>::get()  );
-    registerProperty( LAYOUTMANAGER_PROPNAME_MENUBARCLOSER, 
LAYOUTMANAGER_PROPHANDLE_MENUBARCLOSER, beans::PropertyAttribute::TRANSIENT, 
&m_bMenuBarCloseButton, cppu::UnoType<decltype(m_bMenuBarCloseButton)>::get() );
-    registerPropertyNoMember( LAYOUTMANAGER_PROPNAME_ASCII_REFRESHVISIBILITY, 
LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY, 
beans::PropertyAttribute::TRANSIENT, cppu::UnoType<bool>::get(), 
css::uno::Any(false) );
-    registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_PRESERVE_CONTENT_SIZE, 
LAYOUTMANAGER_PROPHANDLE_PRESERVE_CONTENT_SIZE, 
beans::PropertyAttribute::TRANSIENT, &m_bPreserveContentSize, 
cppu::UnoType<decltype(m_bPreserveContentSize)>::get() );
-    registerPropertyNoMember( LAYOUTMANAGER_PROPNAME_ASCII_REFRESHTOOLTIP, 
LAYOUTMANAGER_PROPHANDLE_REFRESHTOOLTIP, beans::PropertyAttribute::TRANSIENT, 
cppu::UnoType<bool>::get(), css::uno::Any(false) );
+    registerProperty( 
LayoutManagerPropNames[LayoutManagerPropHandle::AutomaticToolbars], 
static_cast<sal_Int32>(LayoutManagerPropHandle::AutomaticToolbars), 
css::beans::PropertyAttribute::TRANSIENT, &m_bAutomaticToolbars, 
cppu::UnoType<decltype(m_bAutomaticToolbars)>::get() );
+    registerProperty( 
LayoutManagerPropNames[LayoutManagerPropHandle::HideCurrentUI], 
static_cast<sal_Int32>(LayoutManagerPropHandle::HideCurrentUI), 
beans::PropertyAttribute::TRANSIENT, &m_bHideCurrentUI, 
cppu::UnoType<decltype(m_bHideCurrentUI)>::get() );
+    registerProperty( 
LayoutManagerPropNames[LayoutManagerPropHandle::LockCount], 
static_cast<sal_Int32>(LayoutManagerPropHandle::LockCount), 
beans::PropertyAttribute::TRANSIENT | beans::PropertyAttribute::READONLY, 
&m_nLockCount, cppu::UnoType<decltype(m_nLockCount)>::get()  );
+    registerProperty( 
LayoutManagerPropNames[LayoutManagerPropHandle::MenuBarCloser], 
static_cast<sal_Int32>(LayoutManagerPropHandle::MenuBarCloser), 
beans::PropertyAttribute::TRANSIENT, &m_bMenuBarCloseButton, 
cppu::UnoType<decltype(m_bMenuBarCloseButton)>::get() );
+    registerPropertyNoMember( 
LayoutManagerPropNames[LayoutManagerPropHandle::RefreshVisibility], 
static_cast<sal_Int32>(LayoutManagerPropHandle::RefreshVisibility), 
beans::PropertyAttribute::TRANSIENT, cppu::UnoType<bool>::get(), 
css::uno::Any(false) );
+    registerProperty( 
LayoutManagerPropNames[LayoutManagerPropHandle::PreserveContentSize], 
static_cast<sal_Int32>(LayoutManagerPropHandle::PreserveContentSize), 
beans::PropertyAttribute::TRANSIENT, &m_bPreserveContentSize, 
cppu::UnoType<decltype(m_bPreserveContentSize)>::get() );
+    registerPropertyNoMember( 
LayoutManagerPropNames[LayoutManagerPropHandle::RefreshToolTip], 
static_cast<sal_Int32>(LayoutManagerPropHandle::RefreshToolTip), 
beans::PropertyAttribute::TRANSIENT, cppu::UnoType<bool>::get(), 
css::uno::Any(false) );
 }
 
 LayoutManager::~LayoutManager()
@@ -3035,16 +3035,19 @@ void SAL_CALL LayoutManager::elementReplaced( const 
ui::ConfigurationEvent& Even
 void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32       
nHandle,
                                                                const uno::Any& 
aValue  )
 {
-    if ( (nHandle != LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY) && (nHandle 
!= LAYOUTMANAGER_PROPHANDLE_REFRESHTOOLTIP) )
+    if ( (nHandle != 
static_cast<sal_Int32>(LayoutManagerPropHandle::RefreshVisibility)) &&
+         (nHandle != 
static_cast<sal_Int32>(LayoutManagerPropHandle::RefreshToolTip)) )
+    {
         LayoutManager_PBase::setFastPropertyValue_NoBroadcast( nHandle, aValue 
);
+    }
 
-    switch( nHandle )
+    switch( static_cast<LayoutManagerPropHandle>(nHandle) )
     {
-        case LAYOUTMANAGER_PROPHANDLE_MENUBARCLOSER:
+        case LayoutManagerPropHandle::MenuBarCloser:
             implts_updateMenuBarClose();
             break;
 
-        case LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY:
+        case LayoutManagerPropHandle::RefreshVisibility:
         {
             bool bValue(false);
             if (( aValue >>= bValue ) && bValue )
@@ -3060,11 +3063,11 @@ void SAL_CALL 
LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32       n
             break;
         }
 
-        case LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI:
+        case LayoutManagerPropHandle::HideCurrentUI:
             implts_setCurrentUIVisibility( !m_bHideCurrentUI );
             break;
 
-        case LAYOUTMANAGER_PROPHANDLE_REFRESHTOOLTIP:
+        case LayoutManagerPropHandle::RefreshToolTip:
             if (m_xToolbarManager.is())
                 m_xToolbarManager->updateToolbarsTips();
             break;
diff --git a/framework/source/services/autorecovery.cxx 
b/framework/source/services/autorecovery.cxx
index f7b7a1d5c413..1518e973befb 100644
--- a/framework/source/services/autorecovery.cxx
+++ b/framework/source/services/autorecovery.cxx
@@ -4012,9 +4012,9 @@ void SAL_CALL 
AutoRecovery::setFastPropertyValue_NoBroadcast(      sal_Int32
 void SAL_CALL AutoRecovery::getFastPropertyValue(css::uno::Any& aValue ,
                                                  sal_Int32      nHandle) const
 {
-    switch(nHandle)
+    switch(static_cast<AutoRecoveryPropHandle>(nHandle))
     {
-        case AUTORECOVERY_PROPHANDLE_EXISTS_RECOVERYDATA :
+        case AutoRecoveryPropHandle::ExistsRecoveryData :
                 {
                     bool bSessionData = 
officecfg::Office::Recovery::RecoveryInfo::SessionData::get();
                     bool bRecoveryData = !m_lDocCache.empty();
@@ -4028,11 +4028,11 @@ void SAL_CALL 
AutoRecovery::getFastPropertyValue(css::uno::Any& aValue ,
                 }
                 break;
 
-        case AUTORECOVERY_PROPHANDLE_CRASHED :
+        case AutoRecoveryPropHandle::Crashed :
                 aValue <<= 
officecfg::Office::Recovery::RecoveryInfo::Crashed::get();
                 break;
 
-        case AUTORECOVERY_PROPHANDLE_EXISTS_SESSIONDATA :
+        case AutoRecoveryPropHandle::ExistsSessionData :
                 aValue <<= 
officecfg::Office::Recovery::RecoveryInfo::SessionData::get();
                 break;
     }
@@ -4042,9 +4042,9 @@ css::uno::Sequence< css::beans::Property > 
impl_getStaticPropertyDescriptor()
 {
     return
     {
-        css::beans::Property( AUTORECOVERY_PROPNAME_CRASHED            , 
AUTORECOVERY_PROPHANDLE_CRASHED            , cppu::UnoType<bool>::get() , 
css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
-        css::beans::Property( AUTORECOVERY_PROPNAME_EXISTS_RECOVERYDATA, 
AUTORECOVERY_PROPHANDLE_EXISTS_RECOVERYDATA, cppu::UnoType<bool>::get() , 
css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
-        css::beans::Property( AUTORECOVERY_PROPNAME_EXISTS_SESSIONDATA , 
AUTORECOVERY_PROPHANDLE_EXISTS_SESSIONDATA , cppu::UnoType<bool>::get() , 
css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
+        css::beans::Property( 
AutoRecoveryPropNames[AutoRecoveryPropHandle::Crashed]            , 
static_cast<sal_Int32>(AutoRecoveryPropHandle::Crashed)            , 
cppu::UnoType<bool>::get() , css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
+        css::beans::Property( 
AutoRecoveryPropNames[AutoRecoveryPropHandle::ExistsRecoveryData] , 
static_cast<sal_Int32>(AutoRecoveryPropHandle::ExistsRecoveryData) , 
cppu::UnoType<bool>::get() , css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
+        css::beans::Property( 
AutoRecoveryPropNames[AutoRecoveryPropHandle::ExistsSessionData]  , 
static_cast<sal_Int32>(AutoRecoveryPropHandle::ExistsSessionData)  , 
cppu::UnoType<bool>::get() , css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
     };
 }
 
diff --git a/framework/source/services/frame.cxx 
b/framework/source/services/frame.cxx
index 0ab73de39035..400d102185fa 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -3222,7 +3222,7 @@ void XFrameImpl::impl_setCloser( /*IN*/ const 
css::uno::Reference< css::frame::X
         css::uno::Reference< css::frame::XLayoutManager > xLayoutManager;
         
xFrameProps->getPropertyValue(FramePropNames[FramePropHandle::LayoutManager]) 
>>= xLayoutManager;
         css::uno::Reference< css::beans::XPropertySet > 
xLayoutProps(xLayoutManager, css::uno::UNO_QUERY_THROW);
-        xLayoutProps->setPropertyValue(LAYOUTMANAGER_PROPNAME_MENUBARCLOSER, 
css::uno::Any(bState));
+        
xLayoutProps->setPropertyValue(LayoutManagerPropNames[LayoutManagerPropHandle::MenuBarCloser],
 css::uno::Any(bState));
     }
     catch(const css::uno::RuntimeException&)
         { throw; }

Reply via email to