editeng/source/editeng/editeng.cxx  |    5 +++++
 editeng/source/editeng/impedit.hxx  |    6 ++++++
 editeng/source/editeng/impedit2.cxx |   11 ++++++++++-
 include/editeng/editeng.hxx         |    4 ++++
 sc/source/ui/app/inputhdl.cxx       |    1 +
 sc/source/ui/app/inputwin.cxx       |    1 +
 6 files changed, 27 insertions(+), 1 deletion(-)

New commits:
commit 3a96b9da2a99faa695eb8579a543aeb618d859d8
Author: Eike Rathke <er...@redhat.com>
Date:   Wed May 18 15:50:20 2016 +0200

    Resolves: tdf#99930 SetReplaceLeadingSingleQuotationMark(false) for Calc
    
    (cherry picked from commit 48d0affa114d6838c0e99f3f3588dd611a4a2b72)
    
    Backported.
    Call to InsertTextUserInput() changed to InsertText()
    
    Change-Id: I29906de6a4075b7de82bd6e16560b56b9b648e91
    Reviewed-on: https://gerrit.libreoffice.org/29759
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: jan iversen <j...@documentfoundation.org>

diff --git a/editeng/source/editeng/editeng.cxx 
b/editeng/source/editeng/editeng.cxx
index 95636f3..44820bd 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2719,6 +2719,11 @@ void EditEngine::SetFirstWordCapitalization( bool 
bCapitalize )
     pImpEditEngine->SetFirstWordCapitalization( bCapitalize );
 }
 
+void EditEngine::SetReplaceLeadingSingleQuotationMark( bool bReplace )
+{
+    pImpEditEngine->SetReplaceLeadingSingleQuotationMark( bReplace );
+}
+
 bool EditEngine::IsImportHandlerSet() const
 {
     return pImpEditEngine->aImportHdl.IsSet();
diff --git a/editeng/source/editeng/impedit.hxx 
b/editeng/source/editeng/impedit.hxx
index 40bb0f7..710176c 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -515,6 +515,7 @@ private:
     bool            bImpConvertFirstCall:1;   // specifies if ImpConvert is 
called the very first time after Convert was called
     bool            bFirstWordCapitalization:1;   // specifies if 
auto-correction should capitalize the first word or not
     bool            mbLastTryMerge:1;
+    bool            mbReplaceLeadingSingleQuotationMark:1;
 
 
     // Methods...
@@ -1024,6 +1025,11 @@ public:
     /// specifies if auto-correction should capitalize the first word or not 
(default is on)
     void            SetFirstWordCapitalization( bool bCapitalize )  { 
bFirstWordCapitalization = bCapitalize; }
     bool            IsFirstWordCapitalization() const   { return 
bFirstWordCapitalization; }
+
+    /** specifies if auto-correction should replace a leading single quotation
+        mark (apostrophe) or not (default is on) */
+    void            SetReplaceLeadingSingleQuotationMark( bool bReplace ) { 
mbReplaceLeadingSingleQuotationMark = bReplace; }
+    bool            IsReplaceLeadingSingleQuotationMark() const { return 
mbReplaceLeadingSingleQuotationMark; }
 };
 
 inline EPaM ImpEditEngine::CreateEPaM( const EditPaM& rPaM )
diff --git a/editeng/source/editeng/impedit2.cxx 
b/editeng/source/editeng/impedit2.cxx
index 1ae1dd8..b4f2c42 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -101,7 +101,8 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* 
pItemPool ) :
     bCallParaInsertedOrDeleted(false),
     bImpConvertFirstCall(false),
     bFirstWordCapitalization(true),
-    mbLastTryMerge(false)
+    mbLastTryMerge(false),
+    mbReplaceLeadingSingleQuotationMark(true)
 {
     pEditEngine         = pEE;
     pRefDev             = nullptr;
@@ -2472,6 +2473,14 @@ void ImpEditEngine::ImpRemoveParagraph( sal_Int32 nPara )
 EditPaM ImpEditEngine::AutoCorrect( const EditSelection& rCurSel, sal_Unicode 
c,
                                     bool bOverwrite, vcl::Window* pFrameWin )
 {
+    // i.e. Calc has special needs regarding a leading single quotation mark
+    // when starting cell input.
+    if (c == '\'' && !IsReplaceLeadingSingleQuotationMark() &&
+            rCurSel.Min() == rCurSel.Max() && rCurSel.Max().GetIndex() == 0)
+    {
+        return InsertText( rCurSel, c, bOverwrite );
+    }
+
     EditSelection aSel( rCurSel );
     SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
     if ( pAutoCorrect )
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 11e1203..19f454a 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -531,6 +531,10 @@ public:
     /// specifies if auto-correction should capitalize the first word or not 
(default is on)
     void            SetFirstWordCapitalization( bool bCapitalize );
 
+    /** specifies if auto-correction should replace a leading single quotation
+        mark (apostrophe) or not (default is on) */
+    void            SetReplaceLeadingSingleQuotationMark( bool bReplace );
+
     EditDoc& GetEditDoc();
     const EditDoc& GetEditDoc() const;
 
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 2395cba..3372d57 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -634,6 +634,7 @@ void ScInputHandler::ImplCreateEditEngine()
         pEditDefaults = new SfxItemSet( pEngine->GetEmptyItemSet() );
 
         pEngine->SetControlWord( pEngine->GetControlWord() | 
EEControlBits::AUTOCORRECT );
+        pEngine->SetReplaceLeadingSingleQuotationMark( false );
         pEngine->SetModifyHdl( LINK( this, ScInputHandler, ModifyHdl ) );
     }
 
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index cd15f3d..b852fa3 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -1337,6 +1337,7 @@ void ScMultiTextWnd::InitEditEngine()
     pEditEngine->SetPaperSize( PixelToLogic(Size(barSize.Width(),10000)) );
     pEditEngine->SetWordDelimiters(
                     ScEditUtil::ModifyDelimiters( 
pEditEngine->GetWordDelimiters() ) );
+    pEditEngine->SetReplaceLeadingSingleQuotationMark( false );
 
     UpdateAutoCorrFlag();
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to