[Libreoffice-commits] core.git: editeng/source include/svl svl/source
Noel Grandin
noel.grandin at collabora.co.uk
Fri Jan 5 12:02:01 UTC 2018
editeng/source/editeng/editdoc.cxx | 9 ++++++++-
include/svl/itempool.hxx | 1 +
svl/source/items/itempool.cxx | 15 +++++++++++++++
3 files changed, 24 insertions(+), 1 deletion(-)
New commits:
commit ec920ed0ecc9cb42b900138a299bf070dc86103c
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Fri Jan 5 11:10:36 2018 +0200
Revert "GetTrueSlotId is dead"
This reverts commit 4f11182566b02f9f1c1821985a94b4b4de363fbb.
Turns out I was wrong, there are tons of place defining
slotid<->whichid mappings.
Change-Id: I2a124ecba02c45f14ee917727adb993c39994881
Reviewed-on: https://gerrit.libreoffice.org/47454
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx
index 0896b62af791..07a495d2bb1f 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -886,7 +886,14 @@ void ConvertAndPutItems( SfxItemSet& rDest, const SfxItemSet& rSource, const Map
{
// If possible go through SlotID ...
- sal_uInt16 const nSourceWhich = nWhich;
+ sal_uInt16 nSourceWhich = nWhich;
+ sal_uInt16 nSlot = pDestPool->GetTrueSlotId( nWhich );
+ if ( nSlot )
+ {
+ sal_uInt16 nW = pSourcePool->GetTrueWhich( nSlot );
+ if ( nW )
+ nSourceWhich = nW;
+ }
if ( rSource.GetItemState( nSourceWhich, false ) == SfxItemState::SET )
{
diff --git a/include/svl/itempool.hxx b/include/svl/itempool.hxx
index 5b1d8b9af27c..f4f5d86f3a08 100644
--- a/include/svl/itempool.hxx
+++ b/include/svl/itempool.hxx
@@ -186,6 +186,7 @@ public:
sal_uInt16 GetWhich( sal_uInt16 nSlot, bool bDeep = true ) const;
sal_uInt16 GetSlotId( sal_uInt16 nWhich ) const;
sal_uInt16 GetTrueWhich( sal_uInt16 nSlot, bool bDeep = true ) const;
+ sal_uInt16 GetTrueSlotId( sal_uInt16 nWhich ) const;
static bool IsWhich(sal_uInt16 nId) {
return nId && nId <= SFX_WHICH_MAX; }
diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index e82a5ea4a496..4357342dd499 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -939,6 +939,21 @@ sal_uInt16 SfxItemPool::GetTrueWhich( sal_uInt16 nSlotId, bool bDeep ) const
}
+sal_uInt16 SfxItemPool::GetTrueSlotId( sal_uInt16 nWhich ) const
+{
+ if ( !IsWhich(nWhich) )
+ return 0;
+
+ if ( !IsInRange( nWhich ) )
+ {
+ if ( pImpl->mpSecondary )
+ return pImpl->mpSecondary->GetTrueSlotId(nWhich);
+ assert(false && "unknown WhichId - cannot get slot-id");
+ return 0;
+ }
+ return pItemInfos[nWhich - pImpl->mnStart]._nSID;
+}
+
void SfxItemPool::dumpAsXml(xmlTextWriterPtr pWriter) const
{
xmlTextWriterStartElement(pWriter, BAD_CAST("SfxItemPool"));
More information about the Libreoffice-commits
mailing list