summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2019-04-03 12:11:44 +0200
committerAndras Timar <andras.timar@collabora.com>2019-07-14 00:14:46 +0200
commit0e82127ff4f6f7eea4fedbbb795f85713ccbf16b (patch)
tree3921d9bd4df95034ba77b3c46bf884fe79059a10 /sw/source
parent429faad8e7031a1483afcf3573b661648d5aa798 (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.cxx37
-rw-r--r--sw/source/core/inc/bookmrk.hxx18
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);