tdf#171999 fixes field editing

Editing fields with conditional/hidden text and (previous/next) page number
resets required sub type which invalidates the fields.
Came in with
commit 9257e94e5d
Author: Noel Grandin <noelgrandin@gmail.com>
Date:   Sat Jul 5 16:35:17 2025 +0200

Change-Id: Ie07186be2fecad713dceb92f45e29621c99fe41e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204899
Tested-by: Jenkins
Reviewed-by: Oliver Specht <oliver.specht@cib.de>
This commit is contained in:
Oliver Specht
2026-05-08 09:49:13 +02:00
parent 113fcf70dc
commit e8b1893fcf
3 changed files with 22 additions and 0 deletions
+2
View File
@@ -550,6 +550,8 @@ void SwField::SetUntypedSubType(sal_uInt16 n)
case SwFieldIds::Database:
static_cast<SwDBField*>(this)->SetSubType(static_cast<SwDBFieldSubType>(n));
break;
case SwFieldIds::RefPageSet:
break;
default:
assert(n == 0 && "trying to set a subtype on something I don't know about");
break;
+16
View File
@@ -610,6 +610,22 @@ bool SwFieldDokPage::FillItemSet(SfxItemSet* )
case SwFieldTypesEnum::PageNumber:
case SwFieldTypesEnum::GetRefPage:
{
switch (nTypeId)
{
case SwFieldTypesEnum::NextPage:
nSubType = static_cast<sal_uInt16>(SwPageNumSubType::Next);
break;
case SwFieldTypesEnum::PreviousPage:
nSubType = static_cast<sal_uInt16>(SwPageNumSubType::Previous);
break;
case SwFieldTypesEnum::PageNumber:
nSubType = static_cast<sal_uInt16>(SwPageNumSubType::Random);
break;
default:
break;
}
if( SVX_NUM_CHAR_SPECIAL != nFormat &&
(SwFieldTypesEnum::PreviousPage == nTypeId || SwFieldTypesEnum::NextPage == nTypeId))
{
+4
View File
@@ -549,6 +549,10 @@ bool SwFieldFuncPage::FillItemSet(SfxItemSet* )
case SwFieldTypesEnum::ConditionalText:
aVal = OUString::Concat(m_xCond1ED->get_text())
+ OUStringChar(CONDITIONAL_FIELD_SEPARATOR) + m_xCond2ED->get_text();
nSubType = static_cast<sal_uInt16>(nTypeId);
break;
case SwFieldTypesEnum::HiddenText:
nSubType = static_cast<sal_uInt16>(nTypeId);
break;
case SwFieldTypesEnum::Dropdown :
{