summaryrefslogtreecommitdiff
path: root/sw/source/uibase/uiview/viewdraw.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-11-06 11:47:50 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-11-06 16:42:05 +0100
commit427d1355fd909b12c71d82e504cc200db6e55aa5 (patch)
tree65b1d13f8d7018155f85c582b407b4b95aa7ed49 /sw/source/uibase/uiview/viewdraw.cxx
parente5721d002f7bb2edd43aebc58341574b4ec03252 (diff)
disentangle writer's SID_FM_CONTROL_IDENTIFIER handling
a) make m_nFormSfxId simply follow the slotid, like its sibling m_nDrawSfxId b) move the previously selected form object into a variable of its own as m_eFormObjKind instead of ~abusing m_nFormSfxId to do that c) pass which form object a ConstFormControl creates as an explicit ctor arg instead of providing that information by overwriting the slotid that its ::Activate gets passed making it follow the equivalent calc pattern and separating these very different slot ids and object identifiers In testing, with the form controls toolbar, clicking on a toolbaritem toggles it on, and drawing in writer gives the expected control via ConstFormControl ctor, and clicking the same toolbaritem toggles it off hitting the expected SID_FM_LEAVE_CREATE case. Change-Id: I514f6adc38f706c82f0268abf5c5e73cef5b902c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105405 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source/uibase/uiview/viewdraw.cxx')
-rw-r--r--sw/source/uibase/uiview/viewdraw.cxx25
1 files changed, 13 insertions, 12 deletions
diff --git a/sw/source/uibase/uiview/viewdraw.cxx b/sw/source/uibase/uiview/viewdraw.cxx
index 85f9082b977f..7a8cacfaad41 100644
--- a/sw/source/uibase/uiview/viewdraw.cxx
+++ b/sw/source/uibase/uiview/viewdraw.cxx
@@ -81,21 +81,24 @@ void SwView::ExecDraw(SfxRequest& rReq)
if(pArgs && SfxItemState::SET == pArgs->GetItemState(GetPool().GetWhich(nSlotId), false, &pItem))
pStringItem = dynamic_cast< const SfxStringItem*>(pItem);
+ sal_uInt16 eNewFormObjKind = 0;
+ if (nSlotId == SID_FM_CREATE_CONTROL)
+ {
+ const SfxUInt16Item* pIdentifierItem = rReq.GetArg<SfxUInt16Item>(SID_FM_CONTROL_IDENTIFIER);
+ if (pIdentifierItem)
+ eNewFormObjKind = pIdentifierItem->GetValue();
+ }
+
if (nSlotId == SID_OBJECT_SELECT && m_nFormSfxId == nSlotId)
{
bDeselect = true;
}
else if (nSlotId == SID_FM_CREATE_CONTROL)
{
- const SfxUInt16Item* pIdentifierItem = rReq.GetArg<SfxUInt16Item>(SID_FM_CONTROL_IDENTIFIER);
- if( pIdentifierItem )
+ if (eNewFormObjKind == m_eFormObjKind || eNewFormObjKind == 0)
{
- sal_uInt16 nNewId = pIdentifierItem->GetValue();
- if (nNewId == m_nFormSfxId)
- {
- bDeselect = true;
- GetViewFrame()->GetDispatcher()->Execute(SID_FM_LEAVE_CREATE); // Button should popping out
- }
+ bDeselect = true;
+ GetViewFrame()->GetDispatcher()->Execute(SID_FM_LEAVE_CREATE); // Button should popping out
}
}
else if (nSlotId == SID_FM_CREATE_FIELDCONTROL)
@@ -279,11 +282,9 @@ void SwView::ExecDraw(SfxRequest& rReq)
case SID_FM_CREATE_CONTROL:
{
- const SfxUInt16Item* pIdentifierItem = rReq.GetArg<SfxUInt16Item>(SID_FM_CONTROL_IDENTIFIER);
- if( pIdentifierItem )
- nSlotId = pIdentifierItem->GetValue();
- pFuncPtr.reset( new ConstFormControl(m_pWrtShell.get(), m_pEditWin, this) );
+ pFuncPtr.reset(new ConstFormControl(m_pWrtShell.get(), m_pEditWin, this, eNewFormObjKind));
m_nFormSfxId = nSlotId;
+ m_eFormObjKind = eNewFormObjKind;
}
break;