diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-12-02 15:03:01 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-12-02 21:07:39 +0100 |
commit | 0eb6ad223272325278d52e21d4fb257025d3b54c (patch) | |
tree | 958c9cfa9b01c097dc7feff46ae2fd1250a30c8b | |
parent | 07be45d03f80fa681c697ca9f5a13084a81c7a26 (diff) |
tdf#138596 don't destroy SfxItemSet that are still in use
update the existing ones instead
Change-Id: I67fd6c4ecb5d4294efae0262d558281e6840b5dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107079
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | cui/source/options/treeopt.cxx | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index e098040e7c7c..968d3f6c14cc 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -724,13 +724,18 @@ IMPL_LINK(OfaTreeOptionsDialog, ApplyHdl_Impl, weld::Button&, rButton, void) m_xDialog->response(RET_OK); else { - // tdf#137930 rebuild the in and out itemsets - // to reflect the current post-apply state + // tdf#137930 rebuild the in and out itemsets to reflect the current + // post-apply state if (pGroupInfo && pGroupInfo->m_pInItemSet) { - pGroupInfo->m_pInItemSet.reset(); - pGroupInfo->m_pOutItemSet.reset(); - InitItemSets(*pGroupInfo); + // tdf#138596 seeing as the SfxTabPages keep pointers to the m_pInItemSet + // we update the contents of the existing SfxItemSets to match + // the current settings, rather than create new ones + auto xInItemSet = pGroupInfo->m_pShell + ? pGroupInfo->m_pShell->CreateItemSet( pGroupInfo->m_nDialogId ) + : CreateItemSet( pGroupInfo->m_nDialogId ); + pGroupInfo->m_pInItemSet->Set(*xInItemSet, false); + pGroupInfo->m_pOutItemSet->ClearItem(); } // for the Apply case, now that the settings are saved to config, |