diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-06-11 12:07:44 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-06-13 19:23:28 +0200 |
commit | 8aaa28ed43978a9a4a20d62368410a57ec05c23f (patch) | |
tree | 16706bd93e2af74db7220a099a1391bf7cdd1bd4 /svx/source/svdraw | |
parent | f7c7e4c63f5479de66d2fbed9db34972a5bd05aa (diff) |
Assert on valid order of which ids in ranges on SfxItemSet creation
This allows to make sure we actually use sorted which ranges,
and then it's safe to call SfxItemSet::MergeRange when needed.
Also this change relaxes the previous requirement that ranges
must be separated by at least one; this allows to have adjacent
ranges, like in
RES_FRMATR_BEGIN, RES_FRMATR_END-1,
RES_GRFATR_BEGIN, RES_GRFATR_END-1,
where RES_FRMATR_END is equal to RES_GRFATR_BEGIN. Allowing this
makes possible to (1) self-document the ranges, so it's clear
which ranges are included; and (2) be safe in case when these
constants would change, so that the one merged range would not
unexpectedly contain everything inserted between RES_FRMATR_END
and RES_GRFATR_BEGIN.
Change-Id: Iaad0f099b85059b3aa318a347aa7fbd3f6d455c7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116909
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r-- | svx/source/svdraw/svdedxv.cxx | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index a8da538afbb4..50ac7499ee85 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -2628,25 +2628,21 @@ bool SdrObjEditView::SupportsFormatPaintbrush(SdrInventor nObjectInventor, static const sal_uInt16* GetFormatRangeImpl(bool bTextOnly) { - static const sal_uInt16 gRanges[] = { SDRATTR_SHADOW_FIRST, - SDRATTR_SHADOW_LAST, - SDRATTR_GRAF_FIRST, - SDRATTR_GRAF_LAST, - SDRATTR_TABLE_FIRST, - SDRATTR_TABLE_LAST, - XATTR_LINE_FIRST, - XATTR_LINE_LAST, - XATTR_FILL_FIRST, - XATTRSET_FILL, - EE_PARA_START, - EE_PARA_END, // text-only from here on - EE_CHAR_START, - EE_CHAR_END, - SDRATTR_MISC_FIRST, - SDRATTR_MISC_LAST, // table cell formats - 0, - 0 }; - return &gRanges[bTextOnly ? 10 : 0]; + static constexpr auto gFull + = svl::ItemsArray({ { XATTR_LINE_FIRST, XATTR_LINE_LAST }, + { XATTR_FILL_FIRST, XATTRSET_FILL }, + { SDRATTR_SHADOW_FIRST, SDRATTR_SHADOW_LAST }, + { SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST }, // table cell formats + { SDRATTR_GRAF_FIRST, SDRATTR_GRAF_LAST }, + { SDRATTR_TABLE_FIRST, SDRATTR_TABLE_LAST }, + { EE_PARA_START, EE_PARA_END }, + { EE_CHAR_START, EE_CHAR_END } }); + + static constexpr auto gTextOnly = svl::ItemsArray({ { SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST }, + { EE_PARA_START, EE_PARA_END }, + { EE_CHAR_START, EE_CHAR_END } }); + + return bTextOnly ? gTextOnly.data() : gFull.data(); } void SdrObjEditView::TakeFormatPaintBrush(std::shared_ptr<SfxItemSet>& rFormatSet) |