summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2016-05-18 15:50:20 +0200
committerEike Rathke <erack@redhat.com>2016-05-18 15:59:30 +0200
commit48d0affa114d6838c0e99f3f3588dd611a4a2b72 (patch)
treea1d0a9c165350a7ab97927aa383ffa33c85616a6 /editeng
parentfe3d9ac20b0f27b8beca7e54efa8ba571e76101d (diff)
Resolves: tdf#99930 SetReplaceLeadingSingleQuotationMark(false) for Calc
Change-Id: I29906de6a4075b7de82bd6e16560b56b9b648e91
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/editeng/editeng.cxx5
-rw-r--r--editeng/source/editeng/impedit.hxx6
-rw-r--r--editeng/source/editeng/impedit2.cxx11
3 files changed, 21 insertions, 1 deletions
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 74f5f7198baf..c03287858cdf 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2712,6 +2712,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 d374d5c8b2bb..15a433901933 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -510,6 +510,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...
@@ -1020,6 +1021,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 95329d2f10ac..6ac1fef448dc 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -102,7 +102,8 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* pItemPool ) :
bCallParaInsertedOrDeleted(false),
bImpConvertFirstCall(false),
bFirstWordCapitalization(true),
- mbLastTryMerge(false)
+ mbLastTryMerge(false),
+ mbReplaceLeadingSingleQuotationMark(true)
{
pEditEngine = pEE;
pRefDev = nullptr;
@@ -2464,6 +2465,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 InsertTextUserInput( rCurSel, c, bOverwrite );
+ }
+
EditSelection aSel( rCurSel );
SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
if ( pAutoCorrect )