summaryrefslogtreecommitdiff
path: root/include/editeng
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-11-10 12:48:21 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-11-15 08:24:29 +0100
commit3588a48a82d37f940595570758bc1d1179d18b84 (patch)
treedaa314ae437771157a53f8a5d5043a685f399ac3 /include/editeng
parenta8f31d5120c2ae9109d316db73b5adf9cb26c892 (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.hxx6
-rw-r--r--include/editeng/eeitem.hxx31
-rw-r--r--include/editeng/unotext.hxx20
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;