diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2019-04-03 12:11:44 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-07-14 00:14:46 +0200 |
commit | 0e82127ff4f6f7eea4fedbbb795f85713ccbf16b (patch) | |
tree | 3921d9bd4df95034ba77b3c46bf884fe79059a10 /sw/source | |
parent | 429faad8e7031a1483afcf3573b661648d5aa798 (diff) |
MSForms: Deduplicate code by creating NonTextFieldmark class
CheckboxFieldmark and DropDownFieldmark do the same in
their InitDoc() and ReleaseDoc() methods.
Change-Id: If6acae7f4783a222bc225c19ce8d32ea22f0d20b
Reviewed-on: https://gerrit.libreoffice.org/75436
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
(cherry picked from commit 74bb3277e1471db2840584469a00158174780bd9)
Reviewed-on: https://gerrit.libreoffice.org/75530
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/core/crsr/bookmrk.cxx | 37 | ||||
-rw-r--r-- | sw/source/core/inc/bookmrk.hxx | 18 |
2 files changed, 21 insertions, 34 deletions
diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx index 1b29071f38d5..ba9dce8080c4 100644 --- a/sw/source/core/crsr/bookmrk.cxx +++ b/sw/source/core/crsr/bookmrk.cxx @@ -431,11 +431,11 @@ namespace sw { namespace mark lcl_RemoveFieldMarks(this, pDoc, CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FIELDEND); } - CheckboxFieldmark::CheckboxFieldmark(const SwPaM& rPaM) + NonTextFieldmark::NonTextFieldmark(const SwPaM& rPaM) : Fieldmark(rPaM) { } - void CheckboxFieldmark::InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode const eMode) + void NonTextFieldmark::InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode const eMode) { if (eMode == sw::mark::InsertMode::New) { @@ -453,12 +453,17 @@ namespace sw { namespace mark } } - void CheckboxFieldmark::ReleaseDoc(SwDoc* const pDoc) + void NonTextFieldmark::ReleaseDoc(SwDoc* const pDoc) { lcl_RemoveFieldMarks(this, pDoc, CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FORMELEMENT); } + + CheckboxFieldmark::CheckboxFieldmark(const SwPaM& rPaM) + : NonTextFieldmark(rPaM) + { } + void CheckboxFieldmark::SetChecked(bool checked) { if ( IsChecked() != checked ) @@ -481,7 +486,7 @@ namespace sw { namespace mark } DropDownFieldmark::DropDownFieldmark(const SwPaM& rPaM) - : Fieldmark(rPaM) + : NonTextFieldmark(rPaM) , m_pButton(nullptr) { } @@ -491,30 +496,6 @@ namespace sw { namespace mark m_pButton.disposeAndClear(); } - void DropDownFieldmark::InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode const eMode) - { - if (eMode == sw::mark::InsertMode::New) - { - lcl_SetFieldMarks(this, io_pDoc, CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FORMELEMENT); - - // For some reason the end mark is moved from 1 by the Insert: - // we don't want this for checkboxes - SwPosition aNewEndPos = GetMarkEnd(); - aNewEndPos.nContent--; - SetMarkEndPos( aNewEndPos ); - } - else - { - lcl_AssertFieldMarksSet(this, CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FORMELEMENT); - } - } - - void DropDownFieldmark::ReleaseDoc(SwDoc* const pDoc) - { - lcl_RemoveFieldMarks(this, pDoc, - CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FORMELEMENT); - } - void DropDownFieldmark::SetPortionPaintArea(const SwRect& rPortionPaintArea) { if(m_aPortionPaintArea == rPortionPaintArea && diff --git a/sw/source/core/inc/bookmrk.hxx b/sw/source/core/inc/bookmrk.hxx index c1deca2ea810..aa1816096bea 100644 --- a/sw/source/core/inc/bookmrk.hxx +++ b/sw/source/core/inc/bookmrk.hxx @@ -237,28 +237,34 @@ namespace sw { virtual void ReleaseDoc(SwDoc* const pDoc) override; }; + // Non text fieldmarks has has no content between the start and end marks. + class NonTextFieldmark + : public Fieldmark + { + public: + NonTextFieldmark(const SwPaM& rPaM); + virtual void InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode eMode) override; + virtual void ReleaseDoc(SwDoc* const pDoc) override; + }; + /// Fieldmark representing a checkbox form field. class CheckboxFieldmark : virtual public ICheckboxFieldmark - , public Fieldmark + , public NonTextFieldmark { public: CheckboxFieldmark(const SwPaM& rPaM); - virtual void InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode eMode) override; - virtual void ReleaseDoc(SwDoc* const pDoc) override; bool IsChecked() const override; void SetChecked(bool checked) override; }; /// Fieldmark representing a drop-down form field. class DropDownFieldmark - : public Fieldmark + : public NonTextFieldmark { public: DropDownFieldmark(const SwPaM& rPaM); virtual ~DropDownFieldmark() override; - virtual void InitDoc(SwDoc* const io_pDoc, sw::mark::InsertMode eMode) override; - virtual void ReleaseDoc(SwDoc* const pDoc) override; // This method should be called only by the portion so we can now the portion's painting area void SetPortionPaintArea(const SwRect& rPortionPaintArea); |