summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 10:19:02 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 12:43:55 +0000
commit7cfe7f23efb97f6b42dcb1589b3d66d4b881092d (patch)
tree290e0da9d56aef151ee28722b713de55d8629c71 /svx
parent1f49d8ad7a520975f611023f77f3fc9c0e32ed77 (diff)
create new OPropertyChangeListener2 and use it in FmFieldWin
create OPropertyChangeListener2 as a modified copy of OPropertyChangeListener which uses std::mutex instead of osl::Mutex Change-Id: Ic6be1c62992749e4f0dd23a8c95de63dc45eba3d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147430 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/form/tabwin.cxx16
-rw-r--r--svx/source/inc/tabwin.hxx8
2 files changed, 14 insertions, 10 deletions
diff --git a/svx/source/form/tabwin.cxx b/svx/source/form/tabwin.cxx
index 91322b45fc3c..4c534ef7c35b 100644
--- a/svx/source/form/tabwin.cxx
+++ b/svx/source/form/tabwin.cxx
@@ -112,7 +112,7 @@ IMPL_LINK(FmFieldWin, DragBeginHdl, bool&, rUnsetDragIcon, bool)
FmFieldWin::FmFieldWin(SfxBindings* _pBindings, SfxChildWindow* _pMgr, weld::Window* _pParent)
: SfxModelessDialogController(_pBindings, _pMgr, _pParent, "svx/ui/formfielddialog.ui", "FormFieldDialog")
, SfxControllerItem(SID_FM_FIELDS_CONTROL, *_pBindings)
- , comphelper::OPropertyChangeListener(m_aMutex)
+ , comphelper::OPropertyChangeListener2()
, m_xListBox(m_xBuilder->weld_tree_view("treeview"))
, m_nObjectType(0)
{
@@ -133,10 +133,13 @@ FmFieldWin::FmFieldWin(SfxBindings* _pBindings, SfxChildWindow* _pMgr, weld::Win
FmFieldWin::~FmFieldWin()
{
- if (m_xChangeListener.is())
{
- m_xChangeListener->dispose();
- m_xChangeListener.clear();
+ std::unique_lock g(m_aMutex);
+ if (m_xChangeListener.is())
+ {
+ m_xChangeListener->dispose(g);
+ m_xChangeListener.clear();
+ }
}
::SfxControllerItem::dispose();
}
@@ -265,12 +268,13 @@ void FmFieldWin::UpdateContent(const css::uno::Reference< css::form::XForm > & x
}
// listen for changes at ControlSource in PropertySet
+ std::unique_lock g(m_aMutex);
if (m_xChangeListener.is())
{
- m_xChangeListener->dispose();
+ m_xChangeListener->dispose(g);
m_xChangeListener.clear();
}
- m_xChangeListener = new ::comphelper::OPropertyChangeMultiplexer(this, xSet);
+ m_xChangeListener = new ::comphelper::OPropertyChangeMultiplexer2(m_aMutex, g, this, xSet);
m_xChangeListener->addProperty(FM_PROP_DATASOURCE);
m_xChangeListener->addProperty(FM_PROP_COMMAND);
m_xChangeListener->addProperty(FM_PROP_COMMANDTYPE);
diff --git a/svx/source/inc/tabwin.hxx b/svx/source/inc/tabwin.hxx
index c1cf70664bcc..0209f3d31654 100644
--- a/svx/source/inc/tabwin.hxx
+++ b/svx/source/inc/tabwin.hxx
@@ -25,7 +25,7 @@
#include <svx/dbaexchange.hxx>
#include <com/sun/star/form/XForm.hpp>
-#include <comphelper/propmultiplex.hxx>
+#include <comphelper/propmultiplex2.hxx>
#include <connectivity/dbtools.hxx>
class FmFormShell;
@@ -33,9 +33,9 @@ struct ColumnInfo;
class FmFieldWin final : public SfxModelessDialogController
, public SfxControllerItem
- , public ::comphelper::OPropertyChangeListener
+ , public ::comphelper::OPropertyChangeListener2
{
- ::osl::Mutex m_aMutex;
+ std::mutex m_aMutex;
std::unique_ptr<weld::TreeView> m_xListBox;
std::vector<std::unique_ptr<ColumnInfo>> m_aListBoxData;
::dbtools::SharedConnection
@@ -44,7 +44,7 @@ class FmFieldWin final : public SfxModelessDialogController
m_aObjectName;
sal_Int32 m_nObjectType;
- rtl::Reference<comphelper::OPropertyChangeMultiplexer> m_xChangeListener;
+ rtl::Reference<comphelper::OPropertyChangeMultiplexer2> m_xChangeListener;
rtl::Reference<svx::OColumnTransferable> m_xHelper;
void addToList(const css::uno::Reference<css::container::XNameAccess>& i_xColumns);