sw/source/core/crsr/bookmrk.cxx | 37 +++++++++---------------------------- sw/source/core/inc/bookmrk.hxx | 18 ++++++++++++------ 2 files changed, 21 insertions(+), 34 deletions(-)
New commits: commit 74bb3277e1471db2840584469a00158174780bd9 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Apr 3 12:11:44 2019 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Thu Jul 11 23:33:32 2019 +0200 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.zol...@collabora.com> diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx index 2e2a5417d0a0..bbe7867f03a2 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 2aec024a4272..22b4f94b8de8 100644 --- a/sw/source/core/inc/bookmrk.hxx +++ b/sw/source/core/inc/bookmrk.hxx @@ -247,28 +247,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); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits