[Libreoffice-commits] core.git: 2 commits - include/tools include/vcl rsc/inc rsc/source vcl/source

Noel Grandin noelgrandin at gmail.com
Mon May 16 06:42:59 UTC 2016


 include/tools/rc.h             |   24 +++++++++++++++++++-----
 include/vcl/window.hxx         |    5 +++--
 rsc/inc/rscdb.hxx              |    2 ++
 rsc/source/parser/rscicpx.cxx  |   10 +++++-----
 vcl/source/window/menu.cxx     |    8 ++++----
 vcl/source/window/resource.cxx |    8 ++++----
 6 files changed, 37 insertions(+), 20 deletions(-)

New commits:
commit 743cdf36d128bc1d0ea3315675b0bb5f85388099
Author: Noel Grandin <noelgrandin at gmail.com>
Date:   Sat May 14 19:52:29 2016 +0200

    convert RSC_MENU to scoped enum
    
    Change-Id: Ice3784b4168738550d2c0f5ee6da1bd49d15becf
    Reviewed-on: https://gerrit.libreoffice.org/24997
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/include/tools/rc.h b/include/tools/rc.h
index 211eb25..6b5c900 100644
--- a/include/tools/rc.h
+++ b/include/tools/rc.h
@@ -53,6 +53,7 @@ namespace o3tl {
 #define WINDOW_HELPID                   0x4000
 
 // For "WorkWindow" resources:
+
 #define WORKWIN_SHOWNORMAL              0
 #define WORKWIN_SHOWMINIMIZED           1
 #define WORKWIN_SHOWMAXIMIZED           2
@@ -61,9 +62,14 @@ namespace o3tl {
 #define RSC_FIXEDIMAGE_IMAGE            0x0001
 
 // For all menu resources:
-#define RSC_MENU_ITEMS                  0x01
-#define RSC_MENU_TEXT                   0x02
-#define RSC_MENU_DEFAULTITEMID          0x04
+enum class RscMenu {
+    Items                  = 0x01,
+    Text                   = 0x02,
+    DefaultItemId          = 0x04
+};
+namespace o3tl {
+    template<> struct typed_flags<RscMenu> : is_typed_flags<RscMenu, 0x07> {};
+}
 
 // "MenuItem" resource options:
 #define RSC_MENUITEM_SEPARATOR          0x001
diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx
index 4b48624..1bbd9fd 100644
--- a/rsc/source/parser/rscicpx.cxx
+++ b/rsc/source/parser/rscicpx.cxx
@@ -899,13 +899,13 @@ RscTop * RscTypCont::InitClassMenu( RscTop * pSuper,
         aBaseLst.push_back( pCont = new RscCont( pHS->getID( "ContMenuItem" ), RSC_NOTYPE ) );
         pCont->SetTypeClass( pClassMenuItem );
         nId = aNmTb.Put( "ItemList", VARNAME );
-        pClassMenu->SetVariable( nId, pCont, nullptr, 0, RSC_MENU_ITEMS );
+        pClassMenu->SetVariable( nId, pCont, nullptr, 0, (sal_uInt32)RscMenu::Items );
     }
     nId = aNmTb.Put( "Text", VARNAME );
-    pClassMenu->SetVariable( nId, &aLangString, nullptr, 0, RSC_MENU_TEXT );
+    pClassMenu->SetVariable( nId, &aLangString, nullptr, 0, (sal_uInt32)RscMenu::Text );
     nId = aNmTb.Put( "DefaultItemId", VARNAME );
     pClassMenu->SetVariable( nId, &aIdUShort, nullptr, 0,
-                                 RSC_MENU_DEFAULTITEMID );
+                                 (sal_uInt32)RscMenu::DefaultItemId );
 
     return pClassMenu;
 }
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 096faee..075c53b 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2805,9 +2805,9 @@ PopupMenu::PopupMenu( const ResId& rResId )
     rResId.SetRT( RSC_MENU );
     GetRes( rResId );
 
-    sal_uLong nObjMask = ReadLongRes();
+    RscMenu nObjMask = (RscMenu)ReadLongRes();
 
-    if( nObjMask & RSC_MENU_ITEMS )
+    if( nObjMask & RscMenu::Items )
     {
         sal_uLong nObjFollows = ReadLongRes();
         // insert menu items
@@ -2818,11 +2818,11 @@ PopupMenu::PopupMenu( const ResId& rResId )
         }
     }
 
-    if( nObjMask & RSC_MENU_TEXT )
+    if( nObjMask & RscMenu::Text )
     {
         aTitleText = ReadStringRes();
     }
-    if( nObjMask & RSC_MENU_DEFAULTITEMID )
+    if( nObjMask & RscMenu::DefaultItemId )
         SetDefaultItem( sal::static_int_cast<sal_uInt16>(ReadLongRes()) );
 }
 
commit 1938fd869b8226af00925caa7ac991618d35ee0c
Author: Noel Grandin <noelgrandin at gmail.com>
Date:   Sat May 14 16:17:25 2016 +0200

    Convert RSWND to scoped enum
    
    Change-Id: If6e5753ade8b096a4ba1c10b47c2360ff26d181f
    Reviewed-on: https://gerrit.libreoffice.org/24993
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/include/tools/rc.h b/include/tools/rc.h
index 49f6ebd..211eb25 100644
--- a/include/tools/rc.h
+++ b/include/tools/rc.h
@@ -21,14 +21,22 @@
 #define INCLUDED_TOOLS_RC_H
 
 #include <tools/rcid.h>
+#include <o3tl/typed_flags_set.hxx>
 
 // Defines for all "Window" resources.
 // (Here are all window styles that are not in WinBits)
 #define RSC_EXTRAMAPUNIT                0xFFFF // do not change that value!
 
 
-#define RSWND_DISABLED                  0x01
-#define RSWND_CLIENTSIZE                0x02
+// Attributes in *.src files
+enum class RSWND {
+    NONE         = 0x00,
+    DISABLED     = 0x01, // "Disable" attribute
+    CLIENTSIZE   = 0x02  // "OutputSize" attribute
+};
+namespace o3tl {
+    template<> struct typed_flags<RSWND> : is_typed_flags<RSWND, 0x03> {};
+}
 
 #define WINDOW_XYMAPMODE                0x0001
 #define WINDOW_X                        0x0002
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 9f4a8dc..d9f9d91 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -465,12 +465,13 @@ class MenuFloatingWindow;
 class LifecycleTest;
 
 namespace svt { class PopupWindowControllerImpl; }
+enum class RSWND;
 
 struct WindowResHeader
 {
     sal_uLong nObjMask;
-    OString aHelpId;
-    sal_uLong nRSStyle;
+    OString   aHelpId;
+    RSWND     nRSStyle;
 };
 
 namespace vcl {
diff --git a/rsc/inc/rscdb.hxx b/rsc/inc/rscdb.hxx
index ea4cdd0..07db859 100644
--- a/rsc/inc/rscdb.hxx
+++ b/rsc/inc/rscdb.hxx
@@ -45,6 +45,7 @@ enum class ToolBoxItemType;
 enum class ButtonType;
 enum class WindowAlign;
 enum class SfxStyleFamily;
+enum class RSWND;
 
 struct WriteRcContext
 {
@@ -146,6 +147,7 @@ class RscTypCont
     void        SETCONST( RscConst *, Atom, sal_uInt32 );
     inline void SETCONST( RscConst *p1, const char * p2, SymbolType p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
     inline void SETCONST( RscConst *p1, Atom p2, ToolBoxItemBits p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
+    inline void SETCONST( RscConst *p1, Atom p2, RSWND p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
     inline void SETCONST( RscConst *p1, Atom p2, WindowBorderStyle p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
     inline void SETCONST( RscConst *p1, const char * p2, KeyFuncType p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
     inline void SETCONST( RscConst *p1, Atom p2, MenuItemBits p3 ) { SETCONST(p1, p2, static_cast<sal_uInt32>(p3)); }
diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx
index 2060798..4b48624 100644
--- a/rsc/source/parser/rscicpx.cxx
+++ b/rsc/source/parser/rscicpx.cxx
@@ -219,9 +219,9 @@ RscTop * RscTypCont::InitClassWindow( RscTop * pSuper, RscEnum * pMapUnit,
 
         // set the constants in table
         nDisableId = pHS->getID( "RSWND_DISABLE" );
-        SETCONST( pFlag, nDisableId, RSWND_DISABLED );
+        SETCONST( pFlag, nDisableId, RSWND::DISABLED );
         nOutputSizeId = pHS->getID( "RSWND_OUTPUTSIZE" );
-        SETCONST( pFlag, nOutputSizeId, RSWND_CLIENTSIZE );
+        SETCONST( pFlag, nOutputSizeId, RSWND::CLIENTSIZE );
 
         // add variable
         nVarId = aNmTb.Put( "_RscExtraFlags", VARNAME );
diff --git a/vcl/source/window/resource.cxx b/vcl/source/window/resource.cxx
index 4550162..332d163 100644
--- a/vcl/source/window/resource.cxx
+++ b/vcl/source/window/resource.cxx
@@ -59,7 +59,7 @@ WindowResHeader Window::ImplLoadResHeader( const ResId& rResId )
     aHeader.aHelpId = ImplAutoHelpID( rResId.GetResMgr() );
 
     // ResourceStyle
-    aHeader.nRSStyle = ReadLongRes();
+    aHeader.nRSStyle = (RSWND)ReadLongRes();
     // WinBits
     ReadLongRes();
 
@@ -112,10 +112,10 @@ void Window::ImplLoadRes( const ResId& rResId )
             aSize.Height() = ImplLogicUnitToPixelY( ReadLongRes(), eSizeMap );
     }
 
-    sal_uLong nRSStyle = aHeader.nRSStyle;
+    RSWND nRSStyle = aHeader.nRSStyle;
 
     // looks bad due to optimization
-    if ( nRSStyle & RSWND_CLIENTSIZE )
+    if ( nRSStyle & RSWND::CLIENTSIZE )
     {
         if ( bPos )
             SetPosPixel( aPos );
@@ -129,7 +129,7 @@ void Window::ImplLoadRes( const ResId& rResId )
     else if ( bSize )
         SetSizePixel( aSize );
 
-    if ( nRSStyle & RSWND_DISABLED )
+    if ( nRSStyle & RSWND::DISABLED )
         Enable( false );
 
     if ( nObjMask & WINDOW_TEXT )


More information about the Libreoffice-commits mailing list