[Libreoffice-commits] core.git: sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Fri Nov 18 13:53:05 UTC 2016


 sc/source/ui/app/inputwin.cxx |   97 ++++++++++++++++++++----------------------
 sc/source/ui/inc/inputwin.hxx |    2 
 2 files changed, 49 insertions(+), 50 deletions(-)

New commits:
commit 7295ca03ece7b850b669fb275ebf78c3db3ac25f
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Nov 17 20:48:53 2016 -0500

    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 <libreoffice at kohei.us>
    Tested-by: Kohei Yoshida <libreoffice at kohei.us>

diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 934bc22..024df03 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<ScFieldEditEngine> 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<ScFieldEditEngine>(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool());
     }
     else
-        pNew = new ScFieldEditEngine(nullptr, EditEngine::CreatePool(), nullptr, true);
+        pNew = o3tl::make_unique<ScFieldEditEngine>(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<EditView>(pEditEngine, this);
+    mpEditView = o3tl::make_unique<EditView>(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<EENotify&, void>());
+    mpEditEngine->SetNotifyHdl(Link<EENotify&, void>());
 
     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<LinkParamNone*,void>());
+        mpEditEngine->SetModifyHdl(Link<LinkParamNone*,void>());
         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<ScFieldEditEngine> pNew;
     ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
     if ( pViewSh )
     {
         ScDocument* pDoc = pViewSh->GetViewData().GetDocument();
-        pNew = new ScFieldEditEngine(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool());
+        pNew = o3tl::make_unique<ScFieldEditEngine>(pDoc, pDoc->GetEnginePool(), pDoc->GetEditPool());
     }
     else
-        pNew = new ScFieldEditEngine(nullptr, EditEngine::CreatePool(), nullptr, true);
+        pNew = o3tl::make_unique<ScFieldEditEngine>(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<EditView>(pEditEngine, this);
-    pEditEngine->InsertView( mpEditView.get(), EE_APPEND );
+    mpEditView = o3tl::make_unique<EditView>(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 838fd9e..ba9f0a1 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<ScEditEngineDefaulter> mpEditEngine; // only created when needed
     std::unique_ptr<EditView> mpEditView;
     AccTextDataVector maAccTextDatas;   // #i105267# text datas may be cloned, remember all copies
     bool        bIsRTL;


More information about the Libreoffice-commits mailing list