summaryrefslogtreecommitdiff
path: root/vcl/source/edit
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-10-03 15:56:51 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-10-04 08:16:25 +0200
commit6c5208b91ee15c2a501696d1d9a131c51c737741 (patch)
treef8a8597b4b23c6b50ed3a19e966795b39d813591 /vcl/source/edit
parentb8767d980898d346d9a8a2cc1cbfb040bfc1851a (diff)
use unique_ptr in TextCharAttribList::InsertAttrib
Change-Id: Ie6818586e9dbbcbf79f0bb8e1031fc0a0b13763a Reviewed-on: https://gerrit.libreoffice.org/61308 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl/source/edit')
-rw-r--r--vcl/source/edit/textdoc.cxx20
-rw-r--r--vcl/source/edit/textdoc.hxx2
-rw-r--r--vcl/source/edit/texteng.cxx3
3 files changed, 13 insertions, 12 deletions
diff --git a/vcl/source/edit/textdoc.cxx b/vcl/source/edit/textdoc.cxx
index 2777cc116813..4a65d2be31d9 100644
--- a/vcl/source/edit/textdoc.cxx
+++ b/vcl/source/edit/textdoc.cxx
@@ -58,7 +58,7 @@ void TextCharAttribList::Clear()
maAttribs.clear();
}
-void TextCharAttribList::InsertAttrib( TextCharAttrib* pAttrib )
+void TextCharAttribList::InsertAttrib( std::unique_ptr<TextCharAttrib> pAttrib )
{
if ( pAttrib->IsEmpty() )
mbHasEmptyAttribs = true;
@@ -69,11 +69,11 @@ void TextCharAttribList::InsertAttrib( TextCharAttrib* pAttrib )
[nStart](std::unique_ptr<TextCharAttrib>& rAttrib) { return rAttrib->GetStart() > nStart; });
if (it != maAttribs.end())
{
- maAttribs.insert( it, std::unique_ptr<TextCharAttrib>(pAttrib) );
+ maAttribs.insert( it, std::move(pAttrib) );
bInserted = true;
}
if ( !bInserted )
- maAttribs.push_back( std::unique_ptr<TextCharAttrib>(pAttrib) );
+ maAttribs.push_back( std::move(pAttrib) );
}
void TextCharAttribList::ResortAttribs()
@@ -305,20 +305,20 @@ std::unique_ptr<TextNode> TextNode::Split( sal_Int32 nPos )
// !FindAttrib only sensible if traversing backwards through the list!
if ( !pNew->maCharAttribs.FindAttrib( rAttrib.Which(), 0 ) )
{
- TextCharAttrib* pNewAttrib = new TextCharAttrib( rAttrib );
+ std::unique_ptr<TextCharAttrib> pNewAttrib(new TextCharAttrib( rAttrib ));
pNewAttrib->GetStart() = 0;
pNewAttrib->GetEnd() = 0;
- pNew->maCharAttribs.InsertAttrib( pNewAttrib );
+ pNew->maCharAttribs.InsertAttrib( std::move(pNewAttrib) );
}
}
else if ( rAttrib.IsInside( nPos ) || ( !nPos && !rAttrib.GetStart() ) )
{
// If cutting at the very beginning, the attribute has to be
// copied and changed
- TextCharAttrib* pNewAttrib = new TextCharAttrib( rAttrib );
+ std::unique_ptr<TextCharAttrib> pNewAttrib(new TextCharAttrib( rAttrib ));
pNewAttrib->GetStart() = 0;
pNewAttrib->GetEnd() = rAttrib.GetEnd()-nPos;
- pNew->maCharAttribs.InsertAttrib( pNewAttrib );
+ pNew->maCharAttribs.InsertAttrib( std::move(pNewAttrib) );
// trim
rAttrib.GetEnd() = nPos;
}
@@ -327,7 +327,7 @@ std::unique_ptr<TextNode> TextNode::Split( sal_Int32 nPos )
SAL_WARN_IF( rAttrib.GetStart() < nPos, "vcl", "Start < nPos!" );
SAL_WARN_IF( rAttrib.GetEnd() < nPos, "vcl", "End < nPos!" );
// move all into the new node (this)
- pNew->maCharAttribs.InsertAttrib(maCharAttribs.RemoveAttrib(nAttr).release());
+ pNew->maCharAttribs.InsertAttrib(maCharAttribs.RemoveAttrib(nAttr));
rAttrib.GetStart() = rAttrib.GetStart() - nPos;
rAttrib.GetEnd() = rAttrib.GetEnd() - nPos;
nAttr--;
@@ -370,10 +370,10 @@ void TextNode::Append( const TextNode& rNode )
if ( !bMelted )
{
- TextCharAttrib* pNewAttrib = new TextCharAttrib( rAttrib );
+ std::unique_ptr<TextCharAttrib> pNewAttrib(new TextCharAttrib( rAttrib ));
pNewAttrib->GetStart() = pNewAttrib->GetStart() + nOldLen;
pNewAttrib->GetEnd() = pNewAttrib->GetEnd() + nOldLen;
- maCharAttribs.InsertAttrib( pNewAttrib );
+ maCharAttribs.InsertAttrib( std::move(pNewAttrib) );
}
}
}
diff --git a/vcl/source/edit/textdoc.hxx b/vcl/source/edit/textdoc.hxx
index 24478e0a4d2e..0130a2377f43 100644
--- a/vcl/source/edit/textdoc.hxx
+++ b/vcl/source/edit/textdoc.hxx
@@ -51,7 +51,7 @@ public:
return pReleased;
}
- void InsertAttrib( TextCharAttrib* pAttrib );
+ void InsertAttrib( std::unique_ptr<TextCharAttrib> pAttrib );
void DeleteEmptyAttribs();
void ResortAttribs();
diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx
index 630daf65c906..fb36cb6c3607 100644
--- a/vcl/source/edit/texteng.cxx
+++ b/vcl/source/edit/texteng.cxx
@@ -30,6 +30,7 @@
#include <vcl/settings.hxx>
#include <vcl/edit.hxx>
#include <sal/log.hxx>
+#include <o3tl/make_unique.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/beans/PropertyValues.hpp>
@@ -2536,7 +2537,7 @@ void TextEngine::SetAttrib( const TextAttrib& rAttr, sal_uInt32 nPara, sal_Int32
if ( nEnd > nMax )
nEnd = nMax;
- pNode->GetCharAttribs().InsertAttrib( new TextCharAttrib( rAttr, nStart, nEnd ) );
+ pNode->GetCharAttribs().InsertAttrib( o3tl::make_unique<TextCharAttrib>( rAttr, nStart, nEnd ) );
pTEParaPortion->MarkSelectionInvalid( nStart );
mbFormatted = false;