merge EditTextObjectImpl into EditTextObject
this is a weird kind of pimpl pattern, lets just simplify it. Which means we can remove the Clone() method in favour of a normal copy constructor. Change-Id: Ib5793c66df4729f48def8b3cead0f39f2ba94830 Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10550 Tested-by: Jenkins CPCI <releng@collaboraoffice.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> (cherry picked from commit dd8a795b5aed4c44e11eef86eaf19b1f88edf0f8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210320 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
committed by
Xisco Fauli
parent
3fe7aaf9ac
commit
3b52fbc96f
@@ -54,7 +54,6 @@ maybe merge DocumentSettingsSerializer with sd::(anonymous namespace)::DocumentS
|
||||
merge DownloadInteractionHandler with UpdateCheck
|
||||
merge E3DObjGeoData with E3DSceneGeoData
|
||||
merge E3dUndoAction with E3dRotateUndoAction
|
||||
merge EditTextObject with EditTextObjectImpl
|
||||
maybe merge ErrorContext with SfxErrorContext, in modules vcl and svtools
|
||||
maybe merge EscherExClientAnchor_Base with XclExpDffAnchorBase, in modules filter and sc
|
||||
merge EscherPersistTable with EscherEx
|
||||
|
||||
@@ -206,19 +206,12 @@ bool ContentInfo::Equals(const ContentInfo& rCompare, bool bComparePool) const
|
||||
&& maCharAttribs == rCompare.maCharAttribs;
|
||||
}
|
||||
|
||||
EditTextObject::~EditTextObject() = default;
|
||||
|
||||
std::unique_ptr<EditTextObject> EditTextObjectImpl::Clone() const
|
||||
{
|
||||
return std::make_unique<EditTextObjectImpl>(*this);
|
||||
}
|
||||
|
||||
bool EditTextObject::Equals( const EditTextObject& rCompare ) const
|
||||
{
|
||||
return toImpl(*this).Equals(toImpl(rCompare), false /*bComparePool*/);
|
||||
return Equals(rCompare, false /*bComparePool*/);
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::dumpAsXml(xmlTextWriterPtr pWriter) const
|
||||
void EditTextObject::dumpAsXml(xmlTextWriterPtr pWriter) const
|
||||
{
|
||||
bool bOwns = false;
|
||||
if (!pWriter)
|
||||
@@ -246,7 +239,7 @@ void EditTextObjectImpl::dumpAsXml(xmlTextWriterPtr pWriter) const
|
||||
}
|
||||
|
||||
#if DEBUG_EDIT_ENGINE
|
||||
void EditTextObjectImpl::Dump() const
|
||||
void EditTextObject::Dump() const
|
||||
{
|
||||
for (auto const& content : maContents)
|
||||
content.Dump();
|
||||
@@ -269,7 +262,7 @@ static rtl::Reference<SfxItemPool> getEditEngineItemPool(SfxItemPool* pPool, Map
|
||||
return pRetval;
|
||||
}
|
||||
|
||||
EditTextObjectImpl::EditTextObjectImpl(SfxItemPool* pP, MapUnit eDefaultMetric, bool bVertical,
|
||||
EditTextObject::EditTextObject(SfxItemPool* pP, MapUnit eDefaultMetric, bool bVertical,
|
||||
TextRotation eRotation, SvtScriptType eScriptType)
|
||||
: mpPool(getEditEngineItemPool(pP, eDefaultMetric))
|
||||
, meUserType(OutlinerMode::DontKnow)
|
||||
@@ -280,7 +273,7 @@ EditTextObjectImpl::EditTextObjectImpl(SfxItemPool* pP, MapUnit eDefaultMetric,
|
||||
{
|
||||
}
|
||||
|
||||
EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r )
|
||||
EditTextObject::EditTextObject( const EditTextObject& r )
|
||||
: mpPool(r.mpPool)
|
||||
, meUserType(r.meUserType)
|
||||
, meScriptType(r.meScriptType)
|
||||
@@ -295,7 +288,7 @@ EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r )
|
||||
maContents.push_back(std::unique_ptr<ContentInfo>(new ContentInfo(*content, *mpPool)));
|
||||
}
|
||||
|
||||
EditTextObjectImpl::~EditTextObjectImpl()
|
||||
EditTextObject::~EditTextObject()
|
||||
{
|
||||
ClearPortionInfo();
|
||||
|
||||
@@ -305,12 +298,12 @@ EditTextObjectImpl::~EditTextObjectImpl()
|
||||
}
|
||||
|
||||
|
||||
void EditTextObjectImpl::SetUserType( OutlinerMode n )
|
||||
void EditTextObject::SetUserType( OutlinerMode n )
|
||||
{
|
||||
meUserType = n;
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::NormalizeString( svl::SharedStringPool& rPool )
|
||||
void EditTextObject::NormalizeString( svl::SharedStringPool& rPool )
|
||||
{
|
||||
for (auto const& content : maContents)
|
||||
{
|
||||
@@ -319,7 +312,7 @@ void EditTextObjectImpl::NormalizeString( svl::SharedStringPool& rPool )
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<svl::SharedString> EditTextObjectImpl::GetSharedStrings() const
|
||||
std::vector<svl::SharedString> EditTextObject::GetSharedStrings() const
|
||||
{
|
||||
std::vector<svl::SharedString> aSSs;
|
||||
aSSs.reserve(maContents.size());
|
||||
@@ -331,19 +324,19 @@ std::vector<svl::SharedString> EditTextObjectImpl::GetSharedStrings() const
|
||||
return aSSs;
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::IsEffectivelyVertical() const
|
||||
bool EditTextObject::IsEffectivelyVertical() const
|
||||
{
|
||||
return (mbVertical && meRotation == TextRotation::NONE) ||
|
||||
(!mbVertical && meRotation != TextRotation::NONE);
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::IsTopToBottom() const
|
||||
bool EditTextObject::IsTopToBottom() const
|
||||
{
|
||||
return (mbVertical && meRotation == TextRotation::NONE) ||
|
||||
(!mbVertical && meRotation == TextRotation::TOPTOBOTTOM);
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::SetVertical( bool bVert)
|
||||
void EditTextObject::SetVertical( bool bVert)
|
||||
{
|
||||
if (bVert != mbVertical)
|
||||
{
|
||||
@@ -352,12 +345,12 @@ void EditTextObjectImpl::SetVertical( bool bVert)
|
||||
}
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::GetVertical() const
|
||||
bool EditTextObject::GetVertical() const
|
||||
{
|
||||
return mbVertical;
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::SetRotation(TextRotation nRotation)
|
||||
void EditTextObject::SetRotation(TextRotation nRotation)
|
||||
{
|
||||
if (meRotation != nRotation)
|
||||
{
|
||||
@@ -366,34 +359,34 @@ void EditTextObjectImpl::SetRotation(TextRotation nRotation)
|
||||
}
|
||||
}
|
||||
|
||||
TextRotation EditTextObjectImpl::GetRotation() const
|
||||
TextRotation EditTextObject::GetRotation() const
|
||||
{
|
||||
return meRotation;
|
||||
}
|
||||
|
||||
XEditAttribute EditTextObjectImpl::CreateAttrib( const SfxPoolItem& rItem, sal_Int32 nStart, sal_Int32 nEnd )
|
||||
XEditAttribute EditTextObject::CreateAttrib( const SfxPoolItem& rItem, sal_Int32 nStart, sal_Int32 nEnd )
|
||||
{
|
||||
return XEditAttribute(*mpPool, rItem, nStart, nEnd);
|
||||
}
|
||||
|
||||
ContentInfo* EditTextObjectImpl::CreateAndInsertContent()
|
||||
ContentInfo* EditTextObject::CreateAndInsertContent()
|
||||
{
|
||||
maContents.push_back(std::unique_ptr<ContentInfo>(new ContentInfo(*mpPool)));
|
||||
return maContents.back().get();
|
||||
}
|
||||
|
||||
sal_Int32 EditTextObjectImpl::GetParagraphCount() const
|
||||
sal_Int32 EditTextObject::GetParagraphCount() const
|
||||
{
|
||||
size_t nSize = maContents.size();
|
||||
if (nSize > EE_PARA_MAX)
|
||||
{
|
||||
SAL_WARN( "editeng", "EditTextObjectImpl::GetParagraphCount - overflow " << nSize);
|
||||
SAL_WARN( "editeng", "EditTextObject::GetParagraphCount - overflow " << nSize);
|
||||
return EE_PARA_MAX;
|
||||
}
|
||||
return static_cast<sal_Int32>(nSize);
|
||||
}
|
||||
|
||||
OUString EditTextObjectImpl::GetText(sal_Int32 nPara) const
|
||||
OUString EditTextObject::GetText(sal_Int32 nPara) const
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return OUString();
|
||||
@@ -401,7 +394,7 @@ OUString EditTextObjectImpl::GetText(sal_Int32 nPara) const
|
||||
return maContents[nPara]->GetText();
|
||||
}
|
||||
|
||||
OUString EditTextObjectImpl::GetText(LineEnd eEnd) const
|
||||
OUString EditTextObject::GetText(LineEnd eEnd) const
|
||||
{
|
||||
const size_t nParas = maContents.size();
|
||||
if (nParas == 0)
|
||||
@@ -421,7 +414,7 @@ OUString EditTextObjectImpl::GetText(LineEnd eEnd) const
|
||||
return aBuffer.makeStringAndClear();
|
||||
}
|
||||
|
||||
sal_Int32 EditTextObjectImpl::GetTextLen(sal_Int32 nPara ) const
|
||||
sal_Int32 EditTextObject::GetTextLen(sal_Int32 nPara ) const
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return 0;
|
||||
@@ -429,12 +422,12 @@ sal_Int32 EditTextObjectImpl::GetTextLen(sal_Int32 nPara ) const
|
||||
return maContents[nPara]->GetTextLen();
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::ClearPortionInfo()
|
||||
void EditTextObject::ClearPortionInfo()
|
||||
{
|
||||
mpPortionInfo.reset();
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::HasOnlineSpellErrors() const
|
||||
bool EditTextObject::HasOnlineSpellErrors() const
|
||||
{
|
||||
for (auto const& content : maContents)
|
||||
{
|
||||
@@ -444,7 +437,7 @@ bool EditTextObjectImpl::HasOnlineSpellErrors() const
|
||||
return false;
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const
|
||||
void EditTextObject::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return;
|
||||
@@ -458,12 +451,12 @@ void EditTextObjectImpl::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttr
|
||||
}
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::IsFieldObject() const
|
||||
bool EditTextObject::IsFieldObject() const
|
||||
{
|
||||
return GetField() != nullptr;
|
||||
}
|
||||
|
||||
const SvxFieldItem* EditTextObjectImpl::GetField() const
|
||||
const SvxFieldItem* EditTextObject::GetField() const
|
||||
{
|
||||
if (maContents.size() == 1)
|
||||
{
|
||||
@@ -482,7 +475,7 @@ const SvxFieldItem* EditTextObjectImpl::GetField() const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const SvxFieldData* EditTextObjectImpl::GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const
|
||||
const SvxFieldData* EditTextObject::GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return nullptr;
|
||||
@@ -515,7 +508,7 @@ const SvxFieldData* EditTextObjectImpl::GetFieldData(sal_Int32 nPara, size_t nPo
|
||||
return nullptr; // field not found.
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::HasField( sal_Int32 nType ) const
|
||||
bool EditTextObject::HasField( sal_Int32 nType ) const
|
||||
{
|
||||
size_t nParagraphs = maContents.size();
|
||||
for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
|
||||
@@ -540,13 +533,13 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const
|
||||
return false;
|
||||
}
|
||||
|
||||
const SfxItemSet& EditTextObjectImpl::GetParaAttribs(sal_Int32 nPara) const
|
||||
const SfxItemSet& EditTextObject::GetParaAttribs(sal_Int32 nPara) const
|
||||
{
|
||||
const ContentInfo& rC = *maContents[nPara];
|
||||
return rC.GetParaAttribs();
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
|
||||
bool EditTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
|
||||
{
|
||||
bool bChanged = false;
|
||||
|
||||
@@ -598,7 +591,7 @@ public:
|
||||
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs ) const
|
||||
void EditTextObject::GetAllSections( std::vector<editeng::Section>& rAttrs ) const
|
||||
{
|
||||
std::vector<editeng::Section> aAttrs;
|
||||
aAttrs.reserve(maContents.size());
|
||||
@@ -701,7 +694,7 @@ void EditTextObjectImpl::GetAllSections( std::vector<editeng::Section>& rAttrs )
|
||||
rAttrs.swap(aAttrs);
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& rFamily) const
|
||||
void EditTextObject::GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& rFamily) const
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return;
|
||||
@@ -711,7 +704,7 @@ void EditTextObjectImpl::GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyl
|
||||
rFamily = rC.GetFamily();
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& rFamily)
|
||||
void EditTextObject::SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& rFamily)
|
||||
{
|
||||
if (nPara < 0 || o3tl::make_unsigned(nPara) >= maContents.size())
|
||||
return;
|
||||
@@ -721,7 +714,7 @@ void EditTextObjectImpl::SetStyleSheet(sal_Int32 nPara, const OUString& rName, c
|
||||
rC.SetFamily(rFamily);
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::ImpChangeStyleSheets(
|
||||
bool EditTextObject::ImpChangeStyleSheets(
|
||||
std::u16string_view rOldName, SfxStyleFamily eOldFamily,
|
||||
const OUString& rNewName, SfxStyleFamily eNewFamily )
|
||||
{
|
||||
@@ -744,7 +737,7 @@ bool EditTextObjectImpl::ImpChangeStyleSheets(
|
||||
return bChanges;
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::ChangeStyleSheets(
|
||||
bool EditTextObject::ChangeStyleSheets(
|
||||
std::u16string_view rOldName, SfxStyleFamily eOldFamily,
|
||||
const OUString& rNewName, SfxStyleFamily eNewFamily)
|
||||
{
|
||||
@@ -755,18 +748,18 @@ bool EditTextObjectImpl::ChangeStyleSheets(
|
||||
return bChanges;
|
||||
}
|
||||
|
||||
void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily,
|
||||
void EditTextObject::ChangeStyleSheetName( SfxStyleFamily eFamily,
|
||||
std::u16string_view rOldName, const OUString& rNewName )
|
||||
{
|
||||
ImpChangeStyleSheets( rOldName, eFamily, rNewName, eFamily );
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::operator==( const EditTextObject& rCompare ) const
|
||||
bool EditTextObject::operator==( const EditTextObject& rCompare ) const
|
||||
{
|
||||
return Equals(toImpl(rCompare), true);
|
||||
return Equals(rCompare, true);
|
||||
}
|
||||
|
||||
bool EditTextObjectImpl::Equals( const EditTextObjectImpl& rCompare, bool bComparePool ) const
|
||||
bool EditTextObject::Equals( const EditTextObject& rCompare, bool bComparePool ) const
|
||||
{
|
||||
if( this == &rCompare )
|
||||
return true;
|
||||
@@ -785,12 +778,17 @@ bool EditTextObjectImpl::Equals( const EditTextObjectImpl& rCompare, bool bCompa
|
||||
}
|
||||
|
||||
// #i102062#
|
||||
bool EditTextObjectImpl::isWrongListEqual(const EditTextObject& rComp) const
|
||||
bool EditTextObject::isWrongListEqual(const EditTextObject& rCompare) const
|
||||
{
|
||||
const EditTextObjectImpl& rCompare = toImpl(rComp);
|
||||
return std::equal(
|
||||
maContents.begin(), maContents.end(), rCompare.maContents.begin(), rCompare.maContents.end(),
|
||||
[](const auto& c1, const auto& c2) { return c1->isWrongListEqual(*c2); });
|
||||
}
|
||||
|
||||
editeng::FieldUpdater EditTextObject::GetFieldUpdater()
|
||||
{ return editeng::FieldUpdater(*this); }
|
||||
|
||||
void EditTextObject::SetPortionInfo( std::unique_ptr<XParaPortionList> pP )
|
||||
{ mpPortionInfo = std::move(pP); }
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
||||
@@ -41,33 +41,6 @@ class SharedStringPool;
|
||||
|
||||
}
|
||||
|
||||
class XEditAttribute
|
||||
{
|
||||
private:
|
||||
SfxPoolItemHolder maItemHolder;
|
||||
sal_Int32 nStart;
|
||||
sal_Int32 nEnd;
|
||||
|
||||
public:
|
||||
XEditAttribute(SfxItemPool&, const SfxPoolItem&, sal_Int32 nStart, sal_Int32 nEnd );
|
||||
|
||||
const SfxPoolItem* GetItem() const { return maItemHolder.getItem(); }
|
||||
SfxPoolItemHolder& GetItemHolder() { return maItemHolder; }
|
||||
|
||||
sal_Int32& GetStart() { return nStart; }
|
||||
sal_Int32& GetEnd() { return nEnd; }
|
||||
|
||||
sal_Int32 GetStart() const { return nStart; }
|
||||
sal_Int32 GetEnd() const { return nEnd; }
|
||||
|
||||
sal_Int32 GetLen() const { return nEnd-nStart; }
|
||||
|
||||
bool IsFeature() const;
|
||||
void SetItem(SfxItemPool&, const SfxPoolItem&);
|
||||
|
||||
inline bool operator==( const XEditAttribute& rCompare ) const;
|
||||
};
|
||||
|
||||
inline bool XEditAttribute::operator==( const XEditAttribute& rCompare ) const
|
||||
{
|
||||
return (nStart == rCompare.nStart) &&
|
||||
@@ -114,7 +87,7 @@ public:
|
||||
|
||||
class ContentInfo
|
||||
{
|
||||
friend class EditTextObjectImpl;
|
||||
friend class EditTextObject;
|
||||
|
||||
private:
|
||||
svl::SharedString maText;
|
||||
@@ -166,118 +139,4 @@ public:
|
||||
#endif
|
||||
};
|
||||
|
||||
class EditTextObjectImpl final : public EditTextObject
|
||||
{
|
||||
public:
|
||||
typedef std::vector<std::unique_ptr<ContentInfo> > ContentInfosType;
|
||||
|
||||
private:
|
||||
ContentInfosType maContents;
|
||||
rtl::Reference<SfxItemPool> mpPool;
|
||||
std::unique_ptr<XParaPortionList> mpPortionInfo;
|
||||
|
||||
OutlinerMode meUserType;
|
||||
SvtScriptType meScriptType;
|
||||
TextRotation meRotation;
|
||||
MapUnit meMetric;
|
||||
|
||||
bool mbVertical;
|
||||
|
||||
bool ImpChangeStyleSheets( std::u16string_view rOldName, SfxStyleFamily eOldFamily,
|
||||
const OUString& rNewName, SfxStyleFamily eNewFamily );
|
||||
|
||||
public:
|
||||
EditTextObjectImpl(SfxItemPool* pPool, MapUnit eDefaultMetric, bool bVertical,
|
||||
TextRotation eRotation, SvtScriptType eScriptType);
|
||||
EditTextObjectImpl( const EditTextObjectImpl& r );
|
||||
virtual ~EditTextObjectImpl() override;
|
||||
|
||||
EditTextObjectImpl& operator=(const EditTextObjectImpl&) = delete;
|
||||
|
||||
virtual OutlinerMode GetUserType() const override { return meUserType;}
|
||||
virtual void SetUserType( OutlinerMode n ) override;
|
||||
|
||||
virtual void NormalizeString( svl::SharedStringPool& rPool ) override;
|
||||
virtual std::vector<svl::SharedString> GetSharedStrings() const override;
|
||||
|
||||
virtual bool IsEffectivelyVertical() const override;
|
||||
virtual bool GetVertical() const override;
|
||||
virtual bool IsTopToBottom() const override;
|
||||
virtual void SetVertical( bool bVert) override;
|
||||
virtual void SetRotation(TextRotation nRotation) override;
|
||||
virtual TextRotation GetRotation() const override;
|
||||
|
||||
virtual SvtScriptType GetScriptType() const override { return meScriptType;}
|
||||
|
||||
virtual std::unique_ptr<EditTextObject> Clone() const override;
|
||||
|
||||
ContentInfo* CreateAndInsertContent();
|
||||
XEditAttribute CreateAttrib( const SfxPoolItem& rItem, sal_Int32 nStart, sal_Int32 nEnd );
|
||||
|
||||
ContentInfosType& GetContents() { return maContents;}
|
||||
const ContentInfosType& GetContents() const { return maContents;}
|
||||
SfxItemPool* GetPool() { return mpPool.get(); }
|
||||
virtual const SfxItemPool* GetPool() const override { return mpPool.get(); }
|
||||
XParaPortionList* GetPortionInfo() const { return mpPortionInfo.get(); }
|
||||
void SetPortionInfo( std::unique_ptr<XParaPortionList> pP )
|
||||
{ mpPortionInfo = std::move(pP); }
|
||||
|
||||
virtual sal_Int32 GetParagraphCount() const override;
|
||||
virtual OUString GetText(sal_Int32 nParagraph) const override;
|
||||
virtual OUString GetText(LineEnd eEnd = LINEEND_LF) const override;
|
||||
virtual sal_Int32 GetTextLen(sal_Int32 nParagraph) const override;
|
||||
|
||||
virtual void ClearPortionInfo() override;
|
||||
|
||||
virtual bool HasOnlineSpellErrors() const override;
|
||||
|
||||
virtual void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const override;
|
||||
|
||||
virtual bool RemoveCharAttribs( sal_uInt16 nWhich ) override;
|
||||
|
||||
virtual void GetAllSections( std::vector<editeng::Section>& rAttrs ) const override;
|
||||
|
||||
virtual bool IsFieldObject() const override;
|
||||
virtual const SvxFieldItem* GetField() const override;
|
||||
virtual const SvxFieldData* GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const override;
|
||||
|
||||
virtual bool HasField( sal_Int32 nType = css::text::textfield::Type::UNSPECIFIED ) const override;
|
||||
|
||||
virtual const SfxItemSet& GetParaAttribs(sal_Int32 nPara) const override;
|
||||
|
||||
virtual void GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& eFamily) const override;
|
||||
virtual void SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& eFamily) override;
|
||||
virtual bool ChangeStyleSheets(
|
||||
std::u16string_view rOldName, SfxStyleFamily eOldFamily, const OUString& rNewName, SfxStyleFamily eNewFamily) override;
|
||||
virtual void ChangeStyleSheetName(SfxStyleFamily eFamily, std::u16string_view rOldName, const OUString& rNewName) override;
|
||||
|
||||
virtual editeng::FieldUpdater GetFieldUpdater() override { return editeng::FieldUpdater(*this); }
|
||||
|
||||
bool HasMetric() const { return meMetric != MapUnit::LASTENUMDUMMY; }
|
||||
MapUnit GetMetric() const { return meMetric; }
|
||||
|
||||
virtual bool operator==( const EditTextObject& rCompare ) const override;
|
||||
bool Equals( const EditTextObjectImpl& rCompare, bool bComparePool ) const;
|
||||
|
||||
// #i102062#
|
||||
virtual bool isWrongListEqual(const EditTextObject& rCompare) const override;
|
||||
|
||||
#if DEBUG_EDIT_ENGINE
|
||||
virtual void Dump() const override;
|
||||
#endif
|
||||
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
|
||||
};
|
||||
|
||||
inline EditTextObjectImpl& toImpl(EditTextObject& rObj)
|
||||
{
|
||||
assert(dynamic_cast<EditTextObjectImpl*>(&rObj));
|
||||
return static_cast<EditTextObjectImpl&>(rObj);
|
||||
}
|
||||
|
||||
inline const EditTextObjectImpl& toImpl(const EditTextObject& rObj)
|
||||
{
|
||||
assert(dynamic_cast<const EditTextObjectImpl*>(&rObj));
|
||||
return static_cast<const EditTextObjectImpl&>(rObj);
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
||||
@@ -37,14 +37,14 @@ public:
|
||||
|
||||
class FieldUpdaterImpl
|
||||
{
|
||||
EditTextObjectImpl& mrObj;
|
||||
EditTextObject& mrObj;
|
||||
public:
|
||||
explicit FieldUpdaterImpl(EditTextObject& rObj) : mrObj(toImpl(rObj)) {}
|
||||
explicit FieldUpdaterImpl(EditTextObject& rObj) : mrObj(rObj) {}
|
||||
|
||||
void updateTableFields(int nTab)
|
||||
{
|
||||
SfxItemPool* pPool = mrObj.GetPool();
|
||||
EditTextObjectImpl::ContentInfosType& rContents = mrObj.GetContents();
|
||||
EditTextObject::ContentInfosType& rContents = mrObj.GetContents();
|
||||
for (std::unique_ptr<ContentInfo> & i : rContents)
|
||||
{
|
||||
ContentInfo& rContent = *i;
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
|
||||
void UpdatePageRelativeURLs(const std::function<void(const SvxFieldItem & rFieldItem, SvxFieldItemUpdater& rFieldItemUpdater)>& rItemCallback)
|
||||
{
|
||||
EditTextObjectImpl::ContentInfosType& rContents = mrObj.GetContents();
|
||||
EditTextObject::ContentInfosType& rContents = mrObj.GetContents();
|
||||
for (std::unique_ptr<ContentInfo> & i : rContents)
|
||||
{
|
||||
ContentInfo& rContent = *i;
|
||||
|
||||
@@ -1205,7 +1205,7 @@ std::unique_ptr<EditTextObject> ImpEditEngine::CreateTextObject( EditSelection a
|
||||
// (Only the name and family, template itself must be in App!)
|
||||
|
||||
const MapUnit eMapUnit = maEditDoc.GetItemPool().GetMetric(DEF_METRIC);
|
||||
auto pTxtObj(std::make_unique<EditTextObjectImpl>(pPool, eMapUnit, GetVertical(), GetRotation(),
|
||||
auto pTxtObj(std::make_unique<EditTextObject>(pPool, eMapUnit, GetVertical(), GetRotation(),
|
||||
GetItemScriptType(aSel)));
|
||||
|
||||
// iterate over the paragraphs ...
|
||||
@@ -1370,8 +1370,7 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
|
||||
DBG_ASSERT( !aSel.DbgIsBuggy( maEditDoc ), "InsertBibTextObject: Selection broken!(1)" );
|
||||
|
||||
bool bUsePortionInfo = false;
|
||||
const EditTextObjectImpl& rTextObjectImpl = toImpl(rTextObject);
|
||||
XParaPortionList* pPortionInfo = rTextObjectImpl.GetPortionInfo();
|
||||
XParaPortionList* pPortionInfo = rTextObject.GetPortionInfo();
|
||||
|
||||
if (pPortionInfo && ( static_cast<tools::Long>(pPortionInfo->GetPaperWidth()) == GetColumnWidth(maPaperSize))
|
||||
&& pPortionInfo->GetRefMapMode() == GetRefDevice()->GetMapMode()
|
||||
@@ -1387,9 +1386,9 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
|
||||
|
||||
bool bConvertMetricOfItems = false;
|
||||
MapUnit eSourceUnit = MapUnit(), eDestUnit = MapUnit();
|
||||
if (rTextObjectImpl.HasMetric())
|
||||
if (rTextObject.HasMetric())
|
||||
{
|
||||
eSourceUnit = rTextObjectImpl.GetMetric();
|
||||
eSourceUnit = rTextObject.GetMetric();
|
||||
eDestUnit = maEditDoc.GetItemPool().GetMetric( DEF_METRIC );
|
||||
if ( eSourceUnit != eDestUnit )
|
||||
bConvertMetricOfItems = true;
|
||||
@@ -1398,13 +1397,13 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
|
||||
// Before, paragraph count was of type sal_uInt16 so if nContents exceeded
|
||||
// 0xFFFF this wouldn't have worked anyway, given that nPara is used to
|
||||
// number paragraphs and is fearlessly incremented.
|
||||
sal_Int32 nContents = static_cast<sal_Int32>(rTextObjectImpl.GetContents().size());
|
||||
sal_Int32 nContents = static_cast<sal_Int32>(rTextObject.GetContents().size());
|
||||
SAL_WARN_IF( nContents < 0, "editeng", "ImpEditEngine::InsertTextObject - contents overflow " << nContents);
|
||||
sal_Int32 nPara = maEditDoc.GetPos( aPaM.GetNode() );
|
||||
|
||||
for (sal_Int32 n = 0; n < nContents; ++n, ++nPara)
|
||||
{
|
||||
const ContentInfo* pC = rTextObjectImpl.GetContents()[n].get();
|
||||
const ContentInfo* pC = rTextObject.GetContents()[n].get();
|
||||
bool bNewContent = aPaM.GetNode()->Len() == 0;
|
||||
const sal_Int32 nStartPos = aPaM.GetIndex();
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ OutlinerParaObjData::OutlinerParaObjData( std::unique_ptr<EditTextObject> pEditT
|
||||
}
|
||||
|
||||
OutlinerParaObjData::OutlinerParaObjData( const OutlinerParaObjData& r ):
|
||||
mpEditTextObject(r.mpEditTextObject->Clone()),
|
||||
mpEditTextObject(new EditTextObject(*r.mpEditTextObject)),
|
||||
maParagraphDataVector(r.maParagraphDataVector),
|
||||
mbIsEditDoc(r.mbIsEditDoc)
|
||||
{
|
||||
|
||||
+103
-43
@@ -23,8 +23,11 @@
|
||||
#include <svl/style.hxx>
|
||||
#include <editeng/editengdllapi.h>
|
||||
#include <editeng/macros.hxx>
|
||||
#include <svl/itemset.hxx>
|
||||
#include <svl/itempool.hxx>
|
||||
#include <svl/languageoptions.hxx>
|
||||
#include <tools/lineend.hxx>
|
||||
#include <tools/mapunit.hxx>
|
||||
|
||||
#include <com/sun/star/text/textfield/Type.hpp>
|
||||
|
||||
@@ -38,69 +41,103 @@ class SvxFieldData;
|
||||
enum class OutlinerMode;
|
||||
struct EECharAttrib;
|
||||
typedef struct _xmlTextWriter* xmlTextWriterPtr;
|
||||
class ContentInfo;
|
||||
class XParaPortionList;
|
||||
|
||||
namespace editeng {
|
||||
|
||||
class FieldUpdater;
|
||||
struct Section;
|
||||
|
||||
}
|
||||
|
||||
namespace svl {
|
||||
|
||||
class SharedString;
|
||||
class SharedStringPool;
|
||||
|
||||
}
|
||||
|
||||
enum class TextRotation { NONE, TOPTOBOTTOM, BOTTOMTOTOP };
|
||||
|
||||
class EDITENG_DLLPUBLIC EditTextObject
|
||||
class XEditAttribute
|
||||
{
|
||||
private:
|
||||
SfxPoolItemHolder maItemHolder;
|
||||
sal_Int32 nStart;
|
||||
sal_Int32 nEnd;
|
||||
|
||||
public:
|
||||
XEditAttribute(SfxItemPool&, const SfxPoolItem&, sal_Int32 nStart, sal_Int32 nEnd );
|
||||
|
||||
const SfxPoolItem* GetItem() const { return maItemHolder.getItem(); }
|
||||
SfxPoolItemHolder& GetItemHolder() { return maItemHolder; }
|
||||
|
||||
sal_Int32& GetStart() { return nStart; }
|
||||
sal_Int32& GetEnd() { return nEnd; }
|
||||
|
||||
sal_Int32 GetStart() const { return nStart; }
|
||||
sal_Int32 GetEnd() const { return nEnd; }
|
||||
|
||||
sal_Int32 GetLen() const { return nEnd-nStart; }
|
||||
|
||||
bool IsFeature() const;
|
||||
void SetItem(SfxItemPool&, const SfxPoolItem&);
|
||||
|
||||
inline bool operator==( const XEditAttribute& rCompare ) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class EDITENG_DLLPUBLIC EditTextObject final
|
||||
{
|
||||
public:
|
||||
virtual ~EditTextObject();
|
||||
typedef std::vector<std::unique_ptr<ContentInfo> > ContentInfosType;
|
||||
|
||||
EditTextObject(SfxItemPool* pPool, MapUnit eDefaultMetric, bool bVertical,
|
||||
TextRotation eRotation, SvtScriptType eScriptType);
|
||||
EditTextObject( const EditTextObject& r );
|
||||
~EditTextObject();
|
||||
|
||||
/**
|
||||
* Set paragraph strings to the shared string pool.
|
||||
*
|
||||
* @param rPool shared string pool.
|
||||
*/
|
||||
virtual void NormalizeString( svl::SharedStringPool& rPool ) = 0;
|
||||
void NormalizeString( svl::SharedStringPool& rPool );
|
||||
|
||||
virtual std::vector<svl::SharedString> GetSharedStrings() const = 0;
|
||||
std::vector<svl::SharedString> GetSharedStrings() const;
|
||||
|
||||
virtual const SfxItemPool* GetPool() const = 0;
|
||||
virtual OutlinerMode GetUserType() const = 0; // For OutlinerMode, it can however not save in compatible format
|
||||
virtual void SetUserType( OutlinerMode n ) = 0;
|
||||
const SfxItemPool* GetPool() const { return mpPool.get(); }
|
||||
SfxItemPool* GetPool() { return mpPool.get(); }
|
||||
|
||||
virtual bool IsEffectivelyVertical() const = 0;
|
||||
virtual bool GetVertical() const = 0;
|
||||
virtual bool IsTopToBottom() const = 0;
|
||||
virtual void SetVertical( bool bVertical ) = 0;
|
||||
virtual void SetRotation( TextRotation nRotation ) = 0;
|
||||
virtual TextRotation GetRotation() const = 0;
|
||||
OutlinerMode GetUserType() const { return meUserType;} // For OutlinerMode, it can however not save in compatible format
|
||||
void SetUserType( OutlinerMode n );
|
||||
|
||||
virtual SvtScriptType GetScriptType() const = 0;
|
||||
bool IsEffectivelyVertical() const;
|
||||
bool GetVertical() const;
|
||||
bool IsTopToBottom() const;
|
||||
void SetVertical( bool bVertical );
|
||||
void SetRotation( TextRotation nRotation );
|
||||
TextRotation GetRotation() const;
|
||||
|
||||
virtual std::unique_ptr<EditTextObject> Clone() const = 0;
|
||||
SvtScriptType GetScriptType() const { return meScriptType;}
|
||||
|
||||
virtual sal_Int32 GetParagraphCount() const = 0;
|
||||
sal_Int32 GetParagraphCount() const;
|
||||
|
||||
virtual OUString GetText(sal_Int32 nPara) const = 0;
|
||||
OUString GetText(sal_Int32 nPara) const;
|
||||
|
||||
virtual OUString GetText(LineEnd eEnd = LINEEND_LF) const = 0;
|
||||
OUString GetText(LineEnd eEnd = LINEEND_LF) const;
|
||||
|
||||
virtual sal_Int32 GetTextLen(sal_Int32 nPara) const = 0;
|
||||
sal_Int32 GetTextLen(sal_Int32 nPara) const;
|
||||
|
||||
bool HasText(sal_Int32 nPara) const { return GetTextLen(nPara) > 0; }
|
||||
|
||||
virtual void ClearPortionInfo() = 0;
|
||||
XParaPortionList* GetPortionInfo() const { return mpPortionInfo.get(); }
|
||||
void SetPortionInfo( std::unique_ptr<XParaPortionList> pP );
|
||||
void ClearPortionInfo();
|
||||
|
||||
virtual bool HasOnlineSpellErrors() const = 0;
|
||||
bool HasOnlineSpellErrors() const;
|
||||
|
||||
virtual void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const = 0;
|
||||
void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const;
|
||||
|
||||
virtual bool RemoveCharAttribs( sal_uInt16 nWhich ) = 0;
|
||||
bool RemoveCharAttribs( sal_uInt16 nWhich );
|
||||
|
||||
/**
|
||||
* Get all text sections in this content. Sections are non-overlapping
|
||||
@@ -108,36 +145,59 @@ public:
|
||||
* boundaries. Each section object contains all applied formats and/or a
|
||||
* field item.
|
||||
*/
|
||||
virtual void GetAllSections( std::vector<editeng::Section>& rAttrs ) const = 0;
|
||||
void GetAllSections( std::vector<editeng::Section>& rAttrs ) const;
|
||||
|
||||
virtual bool IsFieldObject() const = 0;
|
||||
virtual const SvxFieldItem* GetField() const = 0;
|
||||
virtual const SvxFieldData* GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const = 0;
|
||||
virtual bool HasField( sal_Int32 nType = css::text::textfield::Type::UNSPECIFIED ) const = 0;
|
||||
bool IsFieldObject() const;
|
||||
const SvxFieldItem* GetField() const;
|
||||
const SvxFieldData* GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const;
|
||||
bool HasField( sal_Int32 nType = css::text::textfield::Type::UNSPECIFIED ) const;
|
||||
|
||||
virtual const SfxItemSet& GetParaAttribs(sal_Int32 nPara) const = 0;
|
||||
const SfxItemSet& GetParaAttribs(sal_Int32 nPara) const;
|
||||
|
||||
virtual void GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& eFamily) const = 0;
|
||||
virtual void SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& eFamily) = 0;
|
||||
virtual bool ChangeStyleSheets(
|
||||
std::u16string_view rOldName, SfxStyleFamily eOldFamily, const OUString& rNewName, SfxStyleFamily eNewFamily) = 0;
|
||||
virtual void ChangeStyleSheetName(SfxStyleFamily eFamily, std::u16string_view rOldName, const OUString& rNewName) = 0;
|
||||
void GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& eFamily) const;
|
||||
void SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& eFamily);
|
||||
bool ChangeStyleSheets(
|
||||
std::u16string_view rOldName, SfxStyleFamily eOldFamily, const OUString& rNewName, SfxStyleFamily eNewFamily);
|
||||
void ChangeStyleSheetName(SfxStyleFamily eFamily, std::u16string_view rOldName, const OUString& rNewName);
|
||||
|
||||
virtual editeng::FieldUpdater GetFieldUpdater() = 0;
|
||||
editeng::FieldUpdater GetFieldUpdater();
|
||||
|
||||
virtual bool operator==( const EditTextObject& rCompare ) const = 0;
|
||||
bool operator==( const EditTextObject& rCompare ) const;
|
||||
|
||||
/** Compare, ignoring SfxItemPool pointer.
|
||||
*/
|
||||
bool Equals( const EditTextObject& rCompare ) const;
|
||||
|
||||
bool Equals( const EditTextObject& rCompare, bool bComparePool ) const;
|
||||
|
||||
// #i102062#
|
||||
virtual bool isWrongListEqual(const EditTextObject& rCompare) const = 0;
|
||||
bool isWrongListEqual(const EditTextObject& rCompare) const;
|
||||
|
||||
ContentInfo* CreateAndInsertContent();
|
||||
XEditAttribute CreateAttrib( const SfxPoolItem& rItem, sal_Int32 nStart, sal_Int32 nEnd );
|
||||
ContentInfosType& GetContents() { return maContents;}
|
||||
const ContentInfosType& GetContents() const { return maContents;}
|
||||
|
||||
bool HasMetric() const { return meMetric != MapUnit::LASTENUMDUMMY; }
|
||||
MapUnit GetMetric() const { return meMetric; }
|
||||
|
||||
#if DEBUG_EDIT_ENGINE
|
||||
virtual void Dump() const = 0;
|
||||
void Dump() const;
|
||||
#endif
|
||||
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const = 0;
|
||||
void dumpAsXml(xmlTextWriterPtr pWriter) const;
|
||||
|
||||
private:
|
||||
bool ImpChangeStyleSheets( std::u16string_view rOldName, SfxStyleFamily eOldFamily,
|
||||
const OUString& rNewName, SfxStyleFamily eNewFamily );
|
||||
|
||||
ContentInfosType maContents;
|
||||
rtl::Reference<SfxItemPool> mpPool;
|
||||
std::unique_ptr<XParaPortionList> mpPortionInfo;
|
||||
OutlinerMode meUserType;
|
||||
SvtScriptType meScriptType;
|
||||
TextRotation meRotation;
|
||||
MapUnit meMetric;
|
||||
bool mbVertical;
|
||||
};
|
||||
|
||||
#endif // INCLUDED_EDITENG_EDITOBJ_HXX
|
||||
|
||||
@@ -413,7 +413,7 @@ void ScAttrArray::RemoveCellCharAttribs( SCROW nStartRow, SCROW nEndRow,
|
||||
|
||||
std::unique_ptr<EditTextObject> pOldData;
|
||||
if (pDataArray)
|
||||
pOldData = aCell.getEditText()->Clone();
|
||||
pOldData = std::make_unique<EditTextObject>(*aCell.getEditText());
|
||||
|
||||
// Direct modification of cell content - something to watch out for if
|
||||
// we decide to share edit text instances in the future.
|
||||
@@ -421,7 +421,7 @@ void ScAttrArray::RemoveCellCharAttribs( SCROW nStartRow, SCROW nEndRow,
|
||||
|
||||
if (pDataArray)
|
||||
{
|
||||
std::unique_ptr<EditTextObject> pNewData = aCell.getEditText()->Clone();
|
||||
auto pNewData = std::make_unique<EditTextObject>(*aCell.getEditText());
|
||||
pDataArray->AddItem(nTab, nCol, nRow, std::move(pOldData), std::move(pNewData));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,11 +400,11 @@ ScPageHFItem::ScPageHFItem( const ScPageHFItem& rItem )
|
||||
: SfxPoolItem ( rItem )
|
||||
{
|
||||
if ( rItem.pLeftArea )
|
||||
pLeftArea = rItem.pLeftArea->Clone();
|
||||
pLeftArea = std::make_unique<EditTextObject>(*rItem.pLeftArea);
|
||||
if ( rItem.pCenterArea )
|
||||
pCenterArea = rItem.pCenterArea->Clone();
|
||||
pCenterArea = std::make_unique<EditTextObject>(*rItem.pCenterArea);
|
||||
if ( rItem.pRightArea )
|
||||
pRightArea = rItem.pRightArea->Clone();
|
||||
pRightArea = std::make_unique<EditTextObject>(*rItem.pRightArea);
|
||||
}
|
||||
|
||||
ScPageHFItem::~ScPageHFItem()
|
||||
@@ -436,17 +436,17 @@ bool ScPageHFItem::PutValue( const uno::Any& rVal, sal_uInt8 /* nMemberId */ )
|
||||
const EditTextObject* pImpLeft = pImp->GetLeftEditObject();
|
||||
pLeftArea.reset();
|
||||
if (pImpLeft)
|
||||
pLeftArea = pImpLeft->Clone();
|
||||
pLeftArea = std::make_unique<EditTextObject>(*pImpLeft);
|
||||
|
||||
const EditTextObject* pImpCenter = pImp->GetCenterEditObject();
|
||||
pCenterArea.reset();
|
||||
if (pImpCenter)
|
||||
pCenterArea = pImpCenter->Clone();
|
||||
pCenterArea = std::make_unique<EditTextObject>(*pImpCenter);
|
||||
|
||||
const EditTextObject* pImpRight = pImp->GetRightEditObject();
|
||||
pRightArea.reset();
|
||||
if (pImpRight)
|
||||
pRightArea = pImpRight->Clone();
|
||||
pRightArea = std::make_unique<EditTextObject>(*pImpRight);
|
||||
|
||||
if ( !pLeftArea || !pCenterArea || !pRightArea )
|
||||
{
|
||||
@@ -491,17 +491,17 @@ ScPageHFItem* ScPageHFItem::Clone( SfxItemPool* ) const
|
||||
|
||||
void ScPageHFItem::SetLeftArea( const EditTextObject& rNew )
|
||||
{
|
||||
pLeftArea = rNew.Clone();
|
||||
pLeftArea = std::make_unique<EditTextObject>(rNew);
|
||||
}
|
||||
|
||||
void ScPageHFItem::SetCenterArea( const EditTextObject& rNew )
|
||||
{
|
||||
pCenterArea = rNew.Clone();
|
||||
pCenterArea = std::make_unique<EditTextObject>(rNew);
|
||||
}
|
||||
|
||||
void ScPageHFItem::SetRightArea( const EditTextObject& rNew )
|
||||
{
|
||||
pRightArea = rNew.Clone();
|
||||
pRightArea = std::make_unique<EditTextObject>(rNew);
|
||||
}
|
||||
void ScPageHFItem::dumpAsXml(xmlTextWriterPtr pWriter) const
|
||||
{
|
||||
|
||||
@@ -240,7 +240,7 @@ ScCellValue::ScCellValue( const ScRefCellValue& rCell )
|
||||
maData = *rCell.getSharedString();
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
maData = rCell.getEditText()->Clone().release();
|
||||
maData = new EditTextObject(*rCell.getEditText());
|
||||
break;
|
||||
case CELLTYPE_FORMULA:
|
||||
maData = rCell.getFormula()->Clone();
|
||||
@@ -266,7 +266,7 @@ ScCellValue::ScCellValue( const ScCellValue& r )
|
||||
maData = *r.getSharedString();
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
maData = r.getEditText()->Clone().release();
|
||||
maData = new EditTextObject(*r.getEditText());
|
||||
break;
|
||||
case CELLTYPE_FORMULA:
|
||||
maData = r.getFormula()->Clone();
|
||||
@@ -342,7 +342,7 @@ void ScCellValue::set( const svl::SharedString& rStr )
|
||||
void ScCellValue::set( const EditTextObject& rEditText )
|
||||
{
|
||||
clear();
|
||||
maData = rEditText.Clone().release();
|
||||
maData = new EditTextObject(rEditText);
|
||||
}
|
||||
|
||||
void ScCellValue::set( std::unique_ptr<EditTextObject> xEditText )
|
||||
@@ -369,7 +369,7 @@ void ScCellValue::assign( const ScDocument& rDoc, const ScAddress& rPos )
|
||||
maData = *aRefVal.getSharedString();
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
maData = aRefVal.getEditText() ? aRefVal.getEditText()->Clone().release() : static_cast<EditTextObject*>(nullptr);
|
||||
maData = aRefVal.getEditText() ? new EditTextObject(*aRefVal.getEditText()) : static_cast<EditTextObject*>(nullptr);
|
||||
break;
|
||||
case CELLTYPE_VALUE:
|
||||
maData = aRefVal.getDouble();
|
||||
@@ -436,7 +436,7 @@ void ScCellValue::commit( ScDocument& rDoc, const ScAddress& rPos ) const
|
||||
}
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
rDoc.SetEditText(rPos, getEditText()->Clone());
|
||||
rDoc.SetEditText(rPos, std::make_unique<EditTextObject>(*getEditText()));
|
||||
break;
|
||||
case CELLTYPE_VALUE:
|
||||
rDoc.SetValue(rPos, getDouble());
|
||||
|
||||
@@ -213,7 +213,7 @@ void CellValues::copyCellsTo( ScColumn& rCol, SCROW nRow ) const
|
||||
for (; it != itEnd; ++it)
|
||||
{
|
||||
const EditTextObject* p = *it;
|
||||
aVals.push_back(p->Clone().release());
|
||||
aVals.push_back(new EditTextObject(*p));
|
||||
}
|
||||
itPos = rDest.set(itPos, nCurRow, aVals.begin(), aVals.end());
|
||||
}
|
||||
|
||||
@@ -1038,7 +1038,7 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes
|
||||
{
|
||||
EditTextObject* p = sc::edittext_block::at(*it->data, aPos.second);
|
||||
if (&rDocument == &rDestCol.GetDoc())
|
||||
rDestCol.maCells.set(nDestRow, p->Clone().release());
|
||||
rDestCol.maCells.set(nDestRow, new EditTextObject(*p));
|
||||
else
|
||||
rDestCol.maCells.set(nDestRow, ScEditUtil::Clone(*p, rDestCol.GetDoc()).release());
|
||||
}
|
||||
|
||||
@@ -1778,7 +1778,7 @@ public:
|
||||
|
||||
void operator() (size_t nRow, const EditTextObject* p)
|
||||
{
|
||||
miNewCellsPos = maNewCells.set(miNewCellsPos, nRow-mnRowOffset, p->Clone().release());
|
||||
miNewCellsPos = maNewCells.set(miNewCellsPos, nRow-mnRowOffset, new EditTextObject(*p));
|
||||
}
|
||||
|
||||
void operator() (size_t nRow, const ScFormulaCell* p)
|
||||
@@ -1894,7 +1894,7 @@ public:
|
||||
{
|
||||
EditTextObject* pObj = sc::edittext_block::at(*aPos.first->data, aPos.second);
|
||||
miNewCellsPos = maNewCells.set(
|
||||
miNewCellsPos, nDestRow-mnRowOffset, pObj->Clone().release());
|
||||
miNewCellsPos, nDestRow-mnRowOffset, new EditTextObject(*pObj));
|
||||
}
|
||||
break;
|
||||
case sc::element_type_formula:
|
||||
@@ -2397,7 +2397,7 @@ void ScColumn::SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, cons
|
||||
{
|
||||
if (GetDoc().GetEditEnginePool() == rEditText.GetPool())
|
||||
{
|
||||
SetEditText(rBlockPos, nRow, rEditText.Clone());
|
||||
SetEditText(rBlockPos, nRow, std::make_unique<EditTextObject>(rEditText));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2413,7 +2413,7 @@ void ScColumn::SetEditText( SCROW nRow, const EditTextObject& rEditText, const S
|
||||
{
|
||||
if (pEditPool && GetDoc().GetEditEnginePool() == pEditPool)
|
||||
{
|
||||
SetEditText(nRow, rEditText.Clone());
|
||||
SetEditText(nRow, std::make_unique<EditTextObject>(rEditText));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -312,7 +312,7 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1,
|
||||
std::vector<EditTextObject*> aStrs;
|
||||
aStrs.reserve(nDestSize);
|
||||
for (size_t i = 0; i < nDestSize; ++i)
|
||||
aStrs.push_back(rSrcCell.getEditText()->Clone().release());
|
||||
aStrs.push_back(new EditTextObject(*rSrcCell.getEditText()));
|
||||
|
||||
pBlockPos->miCellPos =
|
||||
maCells.set(pBlockPos->miCellPos, nRow1, aStrs.begin(), aStrs.end());
|
||||
|
||||
@@ -1017,7 +1017,7 @@ ScCellValue ScCellIterator::getCellValue() const
|
||||
return ScCellValue(maCurCell.getSharedString());
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
return ScCellValue(maCurCell.getEditText()->Clone());
|
||||
return ScCellValue(std::make_unique<EditTextObject>(*maCurCell.getEditText()));
|
||||
break;
|
||||
case CELLTYPE_VALUE:
|
||||
return ScCellValue(maCurCell.getDouble());
|
||||
|
||||
@@ -610,7 +610,7 @@ void fillSortedColumnArray(
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
assert(rCell.mpAttr);
|
||||
rCellStore.push_back(rCell.maCell.getEditText()->Clone().release());
|
||||
rCellStore.push_back(new EditTextObject(*rCell.maCell.getEditText()));
|
||||
break;
|
||||
case CELLTYPE_FORMULA:
|
||||
{
|
||||
|
||||
@@ -415,7 +415,8 @@ void ScOrcusFactory::finalize()
|
||||
maDoc.setStringCell(rToken.maPos, std::get<0>(s));
|
||||
break;
|
||||
case 1: // std::unique_ptr<EditTextObject>
|
||||
maDoc.setEditCell(rToken.maPos, std::get<1>(s)->Clone());
|
||||
maDoc.setEditCell(rToken.maPos,
|
||||
std::make_unique<EditTextObject>(*std::get<1>(s)));
|
||||
break;
|
||||
}
|
||||
++nCellCount;
|
||||
|
||||
@@ -46,7 +46,7 @@ ScAccessiblePageHeaderArea::ScAccessiblePageHeaderArea(
|
||||
const EditTextObject* pEditObj,
|
||||
SvxAdjust eAdjust)
|
||||
: ScAccessibleContextBase(rxParent, AccessibleRole::TEXT),
|
||||
mpEditObj(pEditObj->Clone()),
|
||||
mpEditObj(std::make_unique<EditTextObject>(*pEditObj)),
|
||||
mpViewShell(pViewShell),
|
||||
meAdjust(eAdjust)
|
||||
{
|
||||
|
||||
@@ -4867,7 +4867,7 @@ ScInputHdlState::ScInputHdlState( const ScAddress& rCurPos,
|
||||
aStartPos ( rStartPos ),
|
||||
aEndPos ( rEndPos ),
|
||||
aString (std::move( _aString )),
|
||||
pEditData ( pData ? pData->Clone() : nullptr )
|
||||
pEditData ( pData ? std::make_unique<EditTextObject>(*pData) : nullptr )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -4899,7 +4899,7 @@ ScInputHdlState& ScInputHdlState::operator=( const ScInputHdlState& r )
|
||||
aString = r.aString;
|
||||
pEditData.reset();
|
||||
if (r.pEditData)
|
||||
pEditData = r.pEditData->Clone();
|
||||
pEditData = std::make_unique<EditTextObject>(*r.pEditData);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ ScInputStatusItem::ScInputStatusItem(
|
||||
aStartPos ( rStartPos ),
|
||||
aEndPos ( rEndPos ),
|
||||
aString (std::move( _aString )),
|
||||
pEditData ( pData ? pData->Clone() : nullptr )
|
||||
pEditData ( pData ? std::make_unique<EditTextObject>(*pData) : nullptr )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ ScInputStatusItem::ScInputStatusItem( const ScInputStatusItem& rItem ) :
|
||||
aStartPos ( rItem.aStartPos ),
|
||||
aEndPos ( rItem.aEndPos ),
|
||||
aString ( rItem.aString ),
|
||||
pEditData ( rItem.pEditData ? rItem.pEditData->Clone() : nullptr ),
|
||||
pEditData ( rItem.pEditData ? std::make_unique<EditTextObject>(*rItem.pEditData) : nullptr ),
|
||||
maMisspellRanges(rItem.maMisspellRanges)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -225,10 +225,10 @@ bool ApplyAttributesToCellOperation::runImplementation()
|
||||
if (aCell.getType() == CELLTYPE_EDIT)
|
||||
{
|
||||
const EditTextObject* pEditObj = aCell.getEditText();
|
||||
pOldEditData = pEditObj->Clone();
|
||||
pOldEditData = std::make_unique<EditTextObject>(*pEditObj);
|
||||
rDoc.RemoveEditTextCharAttribs(aPosition, mrPattern);
|
||||
pEditObj = rDoc.GetEditText(aPosition);
|
||||
pNewEditData = pEditObj->Clone();
|
||||
pNewEditData = std::make_unique<EditTextObject>(*pEditObj);
|
||||
}
|
||||
|
||||
maChangeRanges.push_back(ScRange(aPosition));
|
||||
|
||||
@@ -47,7 +47,7 @@ bool SetEditTextOperation::runImplementation()
|
||||
if (bUndo)
|
||||
aOldVal.assign(rDoc, aPosition);
|
||||
|
||||
rDoc.SetEditText(aPosition, mrEditObject.Clone());
|
||||
rDoc.SetEditText(aPosition, std::make_unique<EditTextObject>(mrEditObject));
|
||||
|
||||
ScUndoSetCell* pUndoSetCell = nullptr;
|
||||
if (bUndo)
|
||||
|
||||
@@ -502,7 +502,7 @@ void ScUndoSetCell::SetValue( const ScCellValue& rVal )
|
||||
}
|
||||
break;
|
||||
case CELLTYPE_EDIT:
|
||||
rDoc.SetEditText(maPos, rVal.getEditText()->Clone());
|
||||
rDoc.SetEditText(maPos, std::make_unique<EditTextObject>(*rVal.getEditText()));
|
||||
break;
|
||||
case CELLTYPE_FORMULA:
|
||||
rDoc.SetFormulaCell(maPos, rVal.getFormula()->Clone());
|
||||
|
||||
@@ -144,7 +144,7 @@ void ScHeaderFooterContentObj::Init( const EditTextObject* pLeft,
|
||||
|
||||
ScHeaderFooterTextData::ScHeaderFooterTextData(
|
||||
unotools::WeakReference<ScHeaderFooterContentObj> xContent, ScHeaderFooterPart nP, const EditTextObject* pTextObj) :
|
||||
mpTextObj(pTextObj ? pTextObj->Clone() : nullptr),
|
||||
mpTextObj(pTextObj ? std::make_unique<EditTextObject>(*pTextObj) : nullptr),
|
||||
xContentObj(std::move( xContent )),
|
||||
nPart( nP ),
|
||||
bDataValid(false)
|
||||
|
||||
@@ -714,7 +714,7 @@ void applyFormulaToCell(ScViewFunc& rViewFunc, SCCOL nCol, SCROW nRow, SCTAB nTa
|
||||
// a plain single-cell cell still gets implicit intersection applied at
|
||||
// runtime.
|
||||
auto xCompPtr = std::make_shared<ScCompiler>(rDoc, *xPosPtr, rDoc.GetGrammar(), !bAutoDynamicArray, false);
|
||||
std::unique_ptr<EditTextObject> xTextObject(pData ? pData->Clone() : nullptr);
|
||||
std::unique_ptr<EditTextObject> xTextObject(pData ? std::make_unique<EditTextObject>(*pData) : nullptr);
|
||||
|
||||
//2do: enable/disable autoCorrection via calcoptions
|
||||
xCompPtr->SetAutoCorrection( true );
|
||||
@@ -938,7 +938,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab,
|
||||
aOldValues.push_back(aOldValue);
|
||||
}
|
||||
|
||||
pUndoData = rData.Clone();
|
||||
pUndoData = std::make_unique<EditTextObject>(rData);
|
||||
}
|
||||
|
||||
// enter data
|
||||
|
||||
Reference in New Issue
Block a user