From 7295ca03ece7b850b669fb275ebf78c3db3ac25f Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Thu, 17 Nov 2016 20:48:53 -0500 Subject: Use std::unique_ptr for pEditEngine. And rename it to mpEditEngine. Change-Id: Iacaad04ca476bfb5b5e35e6e29f372812c40b3bc Reviewed-on: https://gerrit.libreoffice.org/30945 Reviewed-by: Kohei Yoshida Tested-by: Kohei Yoshida --- sc/source/ui/app/inputwin.cxx | 97 +++++++++++++++++++++---------------------- sc/source/ui/inc/inputwin.hxx | 2 +- 2 files changed, 49 insertions(+), 50 deletions(-) (limited to 'sc/source/ui') diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index 934bc223bdac..024df03a0ad2 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -1044,13 +1044,13 @@ void ScTextWnd::Resize() mpEditView->SetOutputArea( aOutputArea ); // Don't leave an empty area at the bottom if we can move the text down. - long nMaxVisAreaTop = pEditEngine->GetTextHeight() - aOutputArea.GetHeight(); + long nMaxVisAreaTop = mpEditEngine->GetTextHeight() - aOutputArea.GetHeight(); if (mpEditView->GetVisArea().Top() > nMaxVisAreaTop) { mpEditView->Scroll(0, mpEditView->GetVisArea().Top() - nMaxVisAreaTop); } - pEditEngine->SetPaperSize( PixelToLogic( Size( aOutputSize.Width(), 10000 ) ) ); + mpEditEngine->SetPaperSize( PixelToLogic( Size( aOutputSize.Width(), 10000 ) ) ); } SetScrollBarRange(); @@ -1092,7 +1092,7 @@ void ScTextWnd::StartEditEngine() if ( pObjSh && pObjSh->IsInModalMode() ) return; - if ( !mpEditView || !pEditEngine ) + if ( !mpEditView || !mpEditEngine ) { InitEditEngine(); } @@ -1165,37 +1165,37 @@ static void lcl_ModifyRTLVisArea( EditView* pEditView ) void ScTextWnd::InitEditEngine() { - ScFieldEditEngine* pNew; + std::unique_ptr pNew; ScDocShell* pDocSh = nullptr; if ( mpViewShell ) { pDocSh = mpViewShell->GetViewData().GetDocShell(); ScDocument* pDoc = mpViewShell->GetViewData().GetDocument(); - pNew = new ScFieldEditEngine(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool()); + pNew = o3tl::make_unique(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool()); } else - pNew = new ScFieldEditEngine(nullptr, EditEngine::CreatePool(), nullptr, true); + pNew = o3tl::make_unique(nullptr, EditEngine::CreatePool(), nullptr, true); pNew->SetExecuteURL( false ); - pEditEngine = pNew; + mpEditEngine = std::move(pNew); Size barSize=GetSizePixel(); - pEditEngine->SetUpdateMode( false ); - pEditEngine->SetPaperSize( PixelToLogic(Size(barSize.Width(),10000)) ); - pEditEngine->SetWordDelimiters( - ScEditUtil::ModifyDelimiters( pEditEngine->GetWordDelimiters() ) ); - pEditEngine->SetReplaceLeadingSingleQuotationMark( false ); + mpEditEngine->SetUpdateMode( false ); + mpEditEngine->SetPaperSize( PixelToLogic(Size(barSize.Width(),10000)) ); + mpEditEngine->SetWordDelimiters( + ScEditUtil::ModifyDelimiters( mpEditEngine->GetWordDelimiters() ) ); + mpEditEngine->SetReplaceLeadingSingleQuotationMark( false ); UpdateAutoCorrFlag(); { - SfxItemSet* pSet = new SfxItemSet( pEditEngine->GetEmptyItemSet() ); + SfxItemSet* pSet = new SfxItemSet( mpEditEngine->GetEmptyItemSet() ); EditEngine::SetFontInfoInItemSet( *pSet, aTextFont ); lcl_ExtendEditFontAttribs( *pSet ); // turn off script spacing to match DrawText output pSet->Put( SvxScriptSpaceItem( false, EE_PARA_ASIANCJKSPACING ) ); if ( bIsRTL ) lcl_ModifyRTLDefaults( *pSet ); - pEditEngine->SetDefaults( pSet ); + mpEditEngine->SetDefaults( pSet ); } // If the Cell contains URLFields, they need to be taken over into the entry row, @@ -1203,32 +1203,32 @@ void ScTextWnd::InitEditEngine() bool bFilled = false; ScInputHandler* pHdl = SC_MOD()->GetInputHdl(); if ( pHdl ) //! Test if it's the right InputHdl? - bFilled = pHdl->GetTextAndFields( *pEditEngine ); + bFilled = pHdl->GetTextAndFields( *mpEditEngine ); - pEditEngine->SetUpdateMode( true ); + mpEditEngine->SetUpdateMode( true ); // aString is the truth ... - if (bFilled && pEditEngine->GetText() == aString) + if (bFilled && mpEditEngine->GetText() == aString) Invalidate(); // Repaint for (filled) Field else - pEditEngine->SetText(aString); // At least the right text then + mpEditEngine->SetText(aString); // At least the right text then - mpEditView = o3tl::make_unique(pEditEngine, this); + mpEditView = o3tl::make_unique(mpEditEngine.get(), this); mpEditView->SetInsertMode(bIsInsertMode); // Text from Clipboard is taken over as ASCII in a single row EVControlBits n = mpEditView->GetControlWord(); mpEditView->SetControlWord( n | EVControlBits::SINGLELINEPASTE ); - pEditEngine->InsertView( mpEditView.get(), EE_APPEND ); + mpEditEngine->InsertView( mpEditView.get(), EE_APPEND ); Resize(); if ( bIsRTL ) lcl_ModifyRTLVisArea( mpEditView.get() ); - pEditEngine->SetModifyHdl(LINK(this, ScTextWnd, ModifyHdl)); - pEditEngine->SetNotifyHdl(LINK(this, ScTextWnd, NotifyHdl)); + mpEditEngine->SetModifyHdl(LINK(this, ScTextWnd, ModifyHdl)); + mpEditEngine->SetNotifyHdl(LINK(this, ScTextWnd, NotifyHdl)); if (!maAccTextDatas.empty()) maAccTextDatas.back()->StartEdit(); @@ -1247,7 +1247,7 @@ void ScTextWnd::InitEditEngine() ScTextWnd::ScTextWnd(ScInputBarGroup* pParent, ScTabViewShell* pViewSh) : ScTextWndBase(pParent, WinBits(WB_HIDE | WB_BORDER)), DragSourceHelper(this), - pEditEngine (nullptr), + mpEditEngine (nullptr), mpEditView (nullptr), bIsInsertMode(true), bFormulaMode (false), @@ -1305,8 +1305,7 @@ void ScTextWnd::dispose() maAccTextDatas.back()->Dispose(); } mpEditView.reset(); - delete pEditEngine; - pEditEngine = nullptr; + mpEditEngine.reset(); DragSourceHelper::dispose(); ScTextWndBase::dispose(); @@ -1468,8 +1467,8 @@ void ScTextWnd::LoseFocus() OUString ScTextWnd::GetText() const { // Override to get the text via the testtool - if ( pEditEngine ) - return pEditEngine->GetText(); + if ( mpEditEngine ) + return mpEditEngine->GetText(); else return GetTextString(); } @@ -1485,9 +1484,9 @@ void ScTextWnd::SetFormulaMode( bool bSet ) void ScTextWnd::UpdateAutoCorrFlag() { - if ( pEditEngine ) + if ( mpEditEngine ) { - EEControlBits nControl = pEditEngine->GetControlWord(); + EEControlBits nControl = mpEditEngine->GetControlWord(); EEControlBits nOld = nControl; if ( bFormulaMode ) nControl &= ~EEControlBits::AUTOCORRECT; // No AutoCorrect in Formulas @@ -1495,7 +1494,7 @@ void ScTextWnd::UpdateAutoCorrFlag() nControl |= EEControlBits::AUTOCORRECT; // Else do enable it if ( nControl != nOld ) - pEditEngine->SetControlWord( nControl ); + mpEditEngine->SetControlWord( nControl ); } } @@ -1527,10 +1526,10 @@ IMPL_LINK_NOARG(ScTextWnd, ModifyHdl, LinkParamNone*, void) void ScTextWnd::StopEditEngine( bool bAll ) { - if (!pEditEngine) + if (!mpEditEngine) return; - pEditEngine->SetNotifyHdl(Link()); + mpEditEngine->SetNotifyHdl(Link()); if (mpEditView) { @@ -1541,12 +1540,12 @@ void ScTextWnd::StopEditEngine( bool bAll ) if (!bAll) pScMod->InputSelection( mpEditView.get() ); - aString = pEditEngine->GetText(); + aString = mpEditEngine->GetText(); bIsInsertMode = mpEditView->IsInsertMode(); bool bSelection = mpEditView->HasSelection(); - pEditEngine->SetModifyHdl(Link()); + mpEditEngine->SetModifyHdl(Link()); mpEditView.reset(); - DELETEZ(pEditEngine); + mpEditEngine.reset(); if ( pScMod->IsEditMode() && !bAll ) pScMod->SetInputMode(SC_INPUT_TABLE); @@ -1593,7 +1592,7 @@ void ScTextWnd::SetTextString( const OUString& rNewString ) bInputMode = true; // Find position of the change, only paint the rest - if (!pEditEngine) + if (!mpEditEngine) { bool bPaintAll; if ( bIsRTL ) @@ -1650,7 +1649,7 @@ void ScTextWnd::SetTextString( const OUString& rNewString ) } else { - pEditEngine->SetText(rNewString); + mpEditEngine->SetText(rNewString); } aString = rNewString; @@ -1679,32 +1678,32 @@ void ScTextWnd::MakeDialogEditView() { if ( mpEditView ) return; - ScFieldEditEngine* pNew; + std::unique_ptr pNew; ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell(); if ( pViewSh ) { ScDocument* pDoc = pViewSh->GetViewData().GetDocument(); - pNew = new ScFieldEditEngine(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool()); + pNew = o3tl::make_unique(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool()); } else - pNew = new ScFieldEditEngine(nullptr, EditEngine::CreatePool(), nullptr, true); + pNew = o3tl::make_unique(nullptr, EditEngine::CreatePool(), nullptr, true); pNew->SetExecuteURL( false ); - pEditEngine = pNew; + mpEditEngine = std::move(pNew); - pEditEngine->SetUpdateMode( false ); - pEditEngine->SetWordDelimiters( pEditEngine->GetWordDelimiters() + "=" ); - pEditEngine->SetPaperSize( Size( bIsRTL ? USHRT_MAX : THESIZE, 300 ) ); + mpEditEngine->SetUpdateMode( false ); + mpEditEngine->SetWordDelimiters( mpEditEngine->GetWordDelimiters() + "=" ); + mpEditEngine->SetPaperSize( Size( bIsRTL ? USHRT_MAX : THESIZE, 300 ) ); - SfxItemSet* pSet = new SfxItemSet( pEditEngine->GetEmptyItemSet() ); + SfxItemSet* pSet = new SfxItemSet( mpEditEngine->GetEmptyItemSet() ); EditEngine::SetFontInfoInItemSet( *pSet, aTextFont ); lcl_ExtendEditFontAttribs( *pSet ); if ( bIsRTL ) lcl_ModifyRTLDefaults( *pSet ); - pEditEngine->SetDefaults( pSet ); - pEditEngine->SetUpdateMode( true ); + mpEditEngine->SetDefaults( pSet ); + mpEditEngine->SetUpdateMode( true ); - mpEditView = o3tl::make_unique(pEditEngine, this); - pEditEngine->InsertView( mpEditView.get(), EE_APPEND ); + mpEditView = o3tl::make_unique(mpEditEngine.get(), this); + mpEditEngine->InsertView( mpEditView.get(), EE_APPEND ); Resize(); diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx index 838fd9edae27..ba9f0a108b86 100644 --- a/sc/source/ui/inc/inputwin.hxx +++ b/sc/source/ui/inc/inputwin.hxx @@ -130,7 +130,7 @@ private: OUString aString; vcl::Font aTextFont; - ScEditEngineDefaulter* pEditEngine; // only created when needed + std::unique_ptr mpEditEngine; // only created when needed std::unique_ptr mpEditView; AccTextDataVector maAccTextDatas; // #i105267# text datas may be cloned, remember all copies bool bIsRTL; -- cgit