diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-10 12:48:21 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-15 08:24:29 +0100 |
commit | 3588a48a82d37f940595570758bc1d1179d18b84 (patch) | |
tree | daa314ae437771157a53f8a5d5043a685f399ac3 /include/editeng | |
parent | a8f31d5120c2ae9109d316db73b5adf9cb26c892 (diff) |
TypedWhichId
use a strong-typedef template to give which IDs a type, which we can
carry around to do a
(a) little bit more convenience when Get()'ing them
and
(b) a little bit of enforcement of which PoolItem subclass each ID uses
Fix a bug in casting EE_PARA_BULLETSTATE to the wrong subclass
in AccessibleEditableTextPara::_correctValues
Change-Id: I015ce8b3b0f6d21308af182afa3caf122c877a5b
Reviewed-on: https://gerrit.libreoffice.org/44587
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/editeng')
-rw-r--r-- | include/editeng/editeng.hxx | 6 | ||||
-rw-r--r-- | include/editeng/eeitem.hxx | 31 | ||||
-rw-r--r-- | include/editeng/unotext.hxx | 20 |
3 files changed, 36 insertions, 21 deletions
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index e7b33cfd5345..4f0be32b9dee 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -28,6 +28,7 @@ #include <com/sun/star/i18n/CharacterIteratorMode.hpp> #include <svl/style.hxx> +#include <svl/typedwhich.hxx> #include <editeng/editdata.hxx> #include <editeng/editstat.hxx> #include <editeng/editengdllapi.h> @@ -319,6 +320,11 @@ public: bool HasParaAttrib( sal_Int32 nPara, sal_uInt16 nWhich ) const; const SfxPoolItem& GetParaAttrib( sal_Int32 nPara, sal_uInt16 nWhich ); + template<class T> + const T& GetParaAttrib( sal_Int32 nPara, TypedWhichId<T> nWhich ) + { + return static_cast<const T&>(GetParaAttrib(nPara, nWhich.Which())); + } vcl::Font GetStandardFont( sal_Int32 nPara ); SvxFont GetStandardSvxFont( sal_Int32 nPara ); diff --git a/include/editeng/eeitem.hxx b/include/editeng/eeitem.hxx index 19393957e6bf..afc0eb8cd715 100644 --- a/include/editeng/eeitem.hxx +++ b/include/editeng/eeitem.hxx @@ -21,6 +21,15 @@ #define INCLUDED_EDITENG_EEITEM_HXX #include <svl/solar.hrc> +#include <svl/typedwhich.hxx> + +class SvxForbiddenRuleItem; +class SvxFrameDirectionItem; +class SvxHangingPunctuationItem; +class SfxBoolItem; +class SfxInt16Item; +class SvxLRSpaceItem; +class SvxScriptSpaceItem; /* * NOTE: Changes in this file will probably require @@ -32,18 +41,18 @@ // Paragraph attributes: #define EE_PARA_START (EE_ITEMS_START+0) -#define EE_PARA_WRITINGDIR (EE_ITEMS_START+0) +#define EE_PARA_WRITINGDIR TypedWhichId<SvxFrameDirectionItem>(EE_ITEMS_START+0) #define EE_PARA_XMLATTRIBS (EE_ITEMS_START+1) -#define EE_PARA_HANGINGPUNCTUATION (EE_ITEMS_START+2) -#define EE_PARA_FORBIDDENRULES (EE_ITEMS_START+3) -#define EE_PARA_ASIANCJKSPACING (EE_ITEMS_START+4) -#define EE_PARA_NUMBULLET (EE_ITEMS_START+5) -#define EE_PARA_HYPHENATE (EE_ITEMS_START+6) -#define EE_PARA_BULLETSTATE (EE_ITEMS_START+7) -#define EE_PARA_OUTLLRSPACE (EE_ITEMS_START+8) -#define EE_PARA_OUTLLEVEL (EE_ITEMS_START+9) -#define EE_PARA_BULLET (EE_ITEMS_START+10) -#define EE_PARA_LRSPACE (EE_ITEMS_START+11) +#define EE_PARA_HANGINGPUNCTUATION TypedWhichId<SvxHangingPunctuationItem>(EE_ITEMS_START+2) +#define EE_PARA_FORBIDDENRULES TypedWhichId<SvxForbiddenRuleItem>(EE_ITEMS_START+3) +#define EE_PARA_ASIANCJKSPACING TypedWhichId<SvxScriptSpaceItem>(EE_ITEMS_START+4) +#define EE_PARA_NUMBULLET TypedWhichId<SvxNumBulletItem>(EE_ITEMS_START+5) +#define EE_PARA_HYPHENATE TypedWhichId<SfxBoolItem>(EE_ITEMS_START+6) +#define EE_PARA_BULLETSTATE TypedWhichId<SfxBoolItem>(EE_ITEMS_START+7) +#define EE_PARA_OUTLLRSPACE TypedWhichId<SvxLRSpaceItem>(EE_ITEMS_START+8) +#define EE_PARA_OUTLLEVEL TypedWhichId<SfxInt16Item>(EE_ITEMS_START+9) +#define EE_PARA_BULLET TypedWhichId<SvxBulletItem>(EE_ITEMS_START+10) +#define EE_PARA_LRSPACE TypedWhichId<SvxLRSpaceItem>(EE_ITEMS_START+11) #define EE_PARA_ULSPACE (EE_ITEMS_START+12) #define EE_PARA_SBL (EE_ITEMS_START+13) #define EE_PARA_JUST (EE_ITEMS_START+14) diff --git a/include/editeng/unotext.hxx b/include/editeng/unotext.hxx index d2d29a8b0078..d55a5da31123 100644 --- a/include/editeng/unotext.hxx +++ b/include/editeng/unotext.hxx @@ -70,8 +70,8 @@ class SvxItemPropertySet; #define WID_PARAISNUMBERINGRESTART OWN_ATTR_VALUE_START+4 #define SVX_UNOEDIT_NUMBERING_PROPERTIE \ - {OUString(UNO_NAME_NUMBERING_RULES), EE_PARA_NUMBULLET, cppu::UnoType<css::container::XIndexReplace>::get(), 0, 0 }, \ - {OUString(UNO_NAME_NUMBERING), EE_PARA_BULLETSTATE,cppu::UnoType<bool>::get(), 0, 0 } + {OUString(UNO_NAME_NUMBERING_RULES), EE_PARA_NUMBULLET.Which(), cppu::UnoType<css::container::XIndexReplace>::get(), 0, 0 }, \ + {OUString(UNO_NAME_NUMBERING), EE_PARA_BULLETSTATE.Which(),cppu::UnoType<bool>::get(), 0, 0 } #define SVX_UNOEDIT_OUTLINER_PROPERTIES \ SVX_UNOEDIT_NUMBERING_PROPERTIE, \ @@ -138,18 +138,18 @@ class SvxItemPropertySet; #define SVX_UNOEDIT_PARA_PROPERTIES \ {OUString(UNO_NAME_EDIT_PARA_ADJUST), EE_PARA_JUST, ::cppu::UnoType<sal_Int16>::get(), 0, MID_PARA_ADJUST }, \ {OUString(UNO_NAME_EDIT_PARA_BMARGIN), EE_PARA_ULSPACE, ::cppu::UnoType<sal_Int32>::get(), 0, MID_LO_MARGIN|SFX_METRIC_ITEM }, \ - {OUString(UNO_NAME_EDIT_PARA_IS_HYPHEN), EE_PARA_HYPHENATE, cppu::UnoType<bool>::get(), 0, 0 }, \ + {OUString(UNO_NAME_EDIT_PARA_IS_HYPHEN), EE_PARA_HYPHENATE.Which(), ::cppu::UnoType<bool>::get(), 0, 0 }, \ {OUString(UNO_NAME_EDIT_PARA_LASTLINEADJ), EE_PARA_JUST, ::cppu::UnoType<sal_Int16>::get(), 0, MID_LAST_LINE_ADJUST }, \ - {OUString(UNO_NAME_EDIT_PARA_LMARGIN), EE_PARA_LRSPACE, ::cppu::UnoType<sal_Int32>::get(), 0, MID_TXT_LMARGIN|SFX_METRIC_ITEM }, \ + {OUString(UNO_NAME_EDIT_PARA_LMARGIN), EE_PARA_LRSPACE.Which(), ::cppu::UnoType<sal_Int32>::get(), 0, MID_TXT_LMARGIN|SFX_METRIC_ITEM }, \ {OUString(UNO_NAME_EDIT_PARA_LINESPACING), EE_PARA_SBL, cppu::UnoType<css::style::LineSpacing>::get(), 0, CONVERT_TWIPS}, \ - {OUString(UNO_NAME_EDIT_PARA_RMARGIN), EE_PARA_LRSPACE, ::cppu::UnoType<sal_Int32>::get(), 0, MID_R_MARGIN|SFX_METRIC_ITEM }, \ + {OUString(UNO_NAME_EDIT_PARA_RMARGIN), EE_PARA_LRSPACE.Which(), ::cppu::UnoType<sal_Int32>::get(), 0, MID_R_MARGIN|SFX_METRIC_ITEM }, \ {OUString(UNO_NAME_EDIT_PARA_TAPSTOPS), EE_PARA_TABS, cppu::UnoType<css::uno::Sequence< css::style::TabStop >>::get(), 0, 0 }, \ {OUString(UNO_NAME_EDIT_PARA_TMARGIN), EE_PARA_ULSPACE, ::cppu::UnoType<sal_Int32>::get(), 0, MID_UP_MARGIN|SFX_METRIC_ITEM },\ - {OUString(UNO_NAME_EDIT_PARA_FIRST_LINE_INDENT), EE_PARA_LRSPACE, ::cppu::UnoType<sal_Int32>::get(), 0, MID_FIRST_LINE_INDENT|SFX_METRIC_ITEM}, \ - {OUString(UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION),EE_PARA_HANGINGPUNCTUATION, cppu::UnoType<bool>::get(), 0 ,0 }, \ - {OUString(UNO_NAME_EDIT_PARA_IS_CHARACTER_DISTANCE), EE_PARA_ASIANCJKSPACING, cppu::UnoType<bool>::get(), 0 ,0 }, \ - {OUString(UNO_NAME_EDIT_PARA_IS_FORBIDDEN_RULES), EE_PARA_FORBIDDENRULES, cppu::UnoType<bool>::get(), 0 ,0 },\ - {OUString("WritingMode"), EE_PARA_WRITINGDIR, ::cppu::UnoType<sal_Int16>::get(), 0, 0 } + {OUString(UNO_NAME_EDIT_PARA_FIRST_LINE_INDENT), EE_PARA_LRSPACE.Which(), ::cppu::UnoType<sal_Int32>::get(), 0, MID_FIRST_LINE_INDENT|SFX_METRIC_ITEM}, \ + {OUString(UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION),EE_PARA_HANGINGPUNCTUATION.Which(), cppu::UnoType<bool>::get(), 0 ,0 }, \ + {OUString(UNO_NAME_EDIT_PARA_IS_CHARACTER_DISTANCE), EE_PARA_ASIANCJKSPACING.Which(), cppu::UnoType<bool>::get(), 0 ,0 }, \ + {OUString(UNO_NAME_EDIT_PARA_IS_FORBIDDEN_RULES), EE_PARA_FORBIDDENRULES.Which(), cppu::UnoType<bool>::get(), 0 ,0 },\ + {OUString("WritingMode"), EE_PARA_WRITINGDIR.Which(), ::cppu::UnoType<sal_Int16>::get(), 0, 0 } class SvxEditSource; class SvxTextForwarder; |