[Libreoffice-commits] core.git: sw/inc sw/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Jan 18 13:00:08 UTC 2019
sw/inc/crstate.hxx | 4 +---
sw/source/core/layout/trvlfrm.cxx | 9 ++++-----
sw/source/core/text/itrcrsr.cxx | 4 ++--
sw/source/core/txtnode/txtedt.cxx | 14 +++++++-------
4 files changed, 14 insertions(+), 17 deletions(-)
New commits:
commit fd31291cd564087ed71b8acdf79fb6797fdb06e7
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Jan 17 15:05:24 2019 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Jan 18 13:59:38 2019 +0100
use unique_ptr in SwCursorMoveState
Change-Id: I39e67d24a38df71309f5cb4a82165c14e5640556
Reviewed-on: https://gerrit.libreoffice.org/66569
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sw/inc/crstate.hxx b/sw/inc/crstate.hxx
index 56bbfac15f58..528b572efa68 100644
--- a/sw/inc/crstate.hxx
+++ b/sw/inc/crstate.hxx
@@ -130,7 +130,7 @@ enum CursorMoveState
struct SwCursorMoveState
{
SwFillCursorPos *m_pFill; ///< for automatic filling with tabs etc
- Sw2LinesPos *m_p2Lines; ///< for selections inside/around 2line portions
+ std::unique_ptr<Sw2LinesPos> m_p2Lines; ///< for selections inside/around 2line portions
SwSpecialPos* m_pSpecialPos; ///< for positions inside fields
Point m_aRealHeight; ///< contains then the position/height of the cursor
CursorMoveState m_eState;
@@ -163,7 +163,6 @@ struct SwCursorMoveState
SwCursorMoveState( CursorMoveState eSt = MV_NONE ) :
m_pFill( nullptr ),
- m_p2Lines( nullptr ),
m_pSpecialPos( nullptr ),
m_eState( eSt ),
m_nCursorBidiLevel( 0 ),
@@ -186,7 +185,6 @@ struct SwCursorMoveState
{}
SwCursorMoveState( SwFillCursorPos *pInitFill ) :
m_pFill( pInitFill ),
- m_p2Lines( nullptr ),
m_pSpecialPos( nullptr ),
m_eState( MV_SETONLYTEXT ),
m_nCursorBidiLevel( 0 ),
diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx
index 584b74c5f98e..fc7efacafae9 100644
--- a/sw/source/core/layout/trvlfrm.cxx
+++ b/sw/source/core/layout/trvlfrm.cxx
@@ -2122,12 +2122,11 @@ void SwRootFrame::CalcFrameRects(SwShellCursor &rCursor)
//ContentRects to Start- and EndFrames.
SwRect aStRect, aEndRect;
pStartFrame->GetCharRect( aStRect, *pStartPos, &aTmpState );
- Sw2LinesPos *pSt2Pos = aTmpState.m_p2Lines;
- aTmpState.m_p2Lines = nullptr;
+ std::unique_ptr<Sw2LinesPos> pSt2Pos = std::move(aTmpState.m_p2Lines);
aTmpState.m_nCursorBidiLevel = pEndFrame->IsRightToLeft() ? 1 : 0;
pEndFrame->GetCharRect( aEndRect, *pEndPos, &aTmpState );
- Sw2LinesPos *pEnd2Pos = aTmpState.m_p2Lines;
+ std::unique_ptr<Sw2LinesPos> pEnd2Pos = std::move(aTmpState.m_p2Lines);
SwRect aStFrame ( pStartFrame->UnionFrame( true ) );
aStFrame.Intersection( pStartFrame->GetPaintArea() );
@@ -2548,8 +2547,8 @@ void SwRootFrame::CalcFrameRects(SwShellCursor &rCursor)
}
aRegion.Invert();
- delete pSt2Pos;
- delete pEnd2Pos;
+ pSt2Pos.reset();
+ pEnd2Pos.reset();
// Cut out Flys during loop. We don't cut out Flys when:
// - the Lower is StartFrame/EndFrame (FlyInCnt and all other Flys which again
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index 699299ed62e0..84effe8b49c1 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -670,10 +670,10 @@ void SwTextCursor::GetCharRect_( SwRect* pOrig, TextFrameIndex const nOfst,
if( pCMS && pCMS->m_b2Lines )
{
- const bool bRecursion = pCMS->m_p2Lines;
+ const bool bRecursion (pCMS->m_p2Lines);
if ( !bRecursion )
{
- pCMS->m_p2Lines = new Sw2LinesPos;
+ pCMS->m_p2Lines.reset(new Sw2LinesPos);
pCMS->m_p2Lines->aLine = SwRect(aCharPos, aCharSize);
}
diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx
index 11a29bd4e372..e09675f38dd2 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -214,8 +214,6 @@ static SwRect lcl_CalculateRepaintRect(
SwCursorMoveState aTmpState( MV_NONE );
aTmpState.m_b2Lines = true;
rTextFrame.GetCharRect( aRect, aPos, &aTmpState );
- // information about end of repaint area
- Sw2LinesPos* pEnd2Pos = aTmpState.m_p2Lines;
const SwTextFrame *pEndFrame = &rTextFrame;
@@ -223,8 +221,10 @@ static SwRect lcl_CalculateRepaintRect(
iChgEnd >= pEndFrame->GetFollow()->GetOfst())
pEndFrame = pEndFrame->GetFollow();
- if ( pEnd2Pos )
+ // information about end of repaint area
+ if ( aTmpState.m_p2Lines )
{
+ Sw2LinesPos* pEnd2Pos = aTmpState.m_p2Lines.get();
// we are inside a special portion, take left border
SwRectFnSet aRectFnSet(pEndFrame);
aRectFnSet.SetTop( aRect, aRectFnSet.GetTop(pEnd2Pos->aLine) );
@@ -234,7 +234,7 @@ static SwRect lcl_CalculateRepaintRect(
aRectFnSet.SetLeft( aRect, aRectFnSet.GetRight(pEnd2Pos->aPortion) );
aRectFnSet.SetWidth( aRect, 1 );
aRectFnSet.SetHeight( aRect, aRectFnSet.GetHeight(pEnd2Pos->aLine) );
- delete pEnd2Pos;
+ aTmpState.m_p2Lines.reset();
}
aTmpState.m_p2Lines = nullptr;
@@ -255,9 +255,9 @@ static SwRect lcl_CalculateRepaintRect(
pEndFrame = pEndFrame->GetFollow();
// information about start of repaint area
- Sw2LinesPos* pSt2Pos = aTmpState.m_p2Lines;
- if ( pSt2Pos )
+ if ( aTmpState.m_p2Lines )
{
+ Sw2LinesPos* pSt2Pos = aTmpState.m_p2Lines.get();
// we are inside a special portion, take right border
SwRectFnSet aRectFnSet(pStartFrame);
aRectFnSet.SetTop( aTmp, aRectFnSet.GetTop(pSt2Pos->aLine) );
@@ -267,7 +267,7 @@ static SwRect lcl_CalculateRepaintRect(
aRectFnSet.SetLeft( aTmp, aRectFnSet.GetLeft(pSt2Pos->aPortion) );
aRectFnSet.SetWidth( aTmp, 1 );
aRectFnSet.SetHeight( aTmp, aRectFnSet.GetHeight(pSt2Pos->aLine) );
- delete pSt2Pos;
+ aTmpState.m_p2Lines.reset();
}
bool bSameFrame = true;
More information about the Libreoffice-commits
mailing list