[Libreoffice-commits] core.git: ucb/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jul 19 17:56:08 UTC 2021
ucb/source/core/ucbstore.cxx | 188 ++++++++++++++++++-------------------------
ucb/source/core/ucbstore.hxx | 13 ++
2 files changed, 92 insertions(+), 109 deletions(-)
New commits:
commit 1bfe0e67dd3e341c416ec49310668419d6afe1ad
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jul 19 11:38:39 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Jul 19 19:55:34 2021 +0200
no need for pimpl in PersistentPropertySet
Change-Id: Ib5328b4d8e67c69f8dff1fc6406a9447d83a667e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119207
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/ucb/source/core/ucbstore.cxx b/ucb/source/core/ucbstore.cxx
index 6d427ed184f1..139faf8c2038 100644
--- a/ucb/source/core/ucbstore.cxx
+++ b/ucb/source/core/ucbstore.cxx
@@ -105,8 +105,6 @@ static OUString makeHierarchalNameSegment( const OUString & rIn )
// describe path of cfg entry
#define CFGPROPERTY_NODEPATH "nodepath"
-namespace {
-
class PropertySetInfo_Impl : public cppu::WeakImplHelper < XPropertySetInfo >
{
std::optional<Sequence< Property >>
@@ -125,8 +123,6 @@ public:
void reset() { m_xProps.reset(); }
};
-}
-
// UcbStore Implementation.
@@ -1014,26 +1010,6 @@ Reference< XInterface > PropertySetRegistry::getConfigWriteAccess(
return Reference< XInterface >();
}
-typedef OMultiTypeInterfaceContainerHelperVar<OUString> PropertyListeners_Impl;
-
-struct PersistentPropertySet_Impl
-{
- rtl::Reference<PropertySetRegistry> m_pCreator;
- rtl::Reference<PropertySetInfo_Impl> m_pInfo;
- OUString m_aKey;
- OUString m_aFullKey;
- osl::Mutex m_aMutex;
- std::unique_ptr<OInterfaceContainerHelper2> m_pDisposeEventListeners;
- std::unique_ptr<OInterfaceContainerHelper2> m_pPropSetChangeListeners;
- std::unique_ptr<PropertyListeners_Impl> m_pPropertyChangeListeners;
-
- PersistentPropertySet_Impl( PropertySetRegistry& rCreator,
- const OUString& rKey )
- : m_pCreator( &rCreator ), m_aKey( rKey )
- {
- }
-};
-
// PersistentPropertySet Implementation.
@@ -1041,7 +1017,7 @@ struct PersistentPropertySet_Impl
PersistentPropertySet::PersistentPropertySet(
PropertySetRegistry& rCreator,
const OUString& rKey )
-: m_pImpl( new PersistentPropertySet_Impl( rCreator, rKey ) )
+: m_pCreator( &rCreator ), m_aKey( rKey )
{
// register at creator.
rCreator.add( this );
@@ -1052,7 +1028,7 @@ PersistentPropertySet::PersistentPropertySet(
PersistentPropertySet::~PersistentPropertySet()
{
// deregister at creator.
- m_pImpl->m_pCreator->remove( this );
+ m_pCreator->remove( this );
}
// XServiceInfo methods.
@@ -1079,27 +1055,27 @@ css::uno::Sequence< OUString > SAL_CALL PersistentPropertySet::getSupportedServi
// virtual
void SAL_CALL PersistentPropertySet::dispose()
{
- if ( m_pImpl->m_pDisposeEventListeners &&
- m_pImpl->m_pDisposeEventListeners->getLength() )
+ if ( m_pDisposeEventListeners &&
+ m_pDisposeEventListeners->getLength() )
{
EventObject aEvt;
aEvt.Source = static_cast< XComponent * >( this );
- m_pImpl->m_pDisposeEventListeners->disposeAndClear( aEvt );
+ m_pDisposeEventListeners->disposeAndClear( aEvt );
}
- if ( m_pImpl->m_pPropSetChangeListeners &&
- m_pImpl->m_pPropSetChangeListeners->getLength() )
+ if ( m_pPropSetChangeListeners &&
+ m_pPropSetChangeListeners->getLength() )
{
EventObject aEvt;
aEvt.Source = static_cast< XPropertySetInfoChangeNotifier * >( this );
- m_pImpl->m_pPropSetChangeListeners->disposeAndClear( aEvt );
+ m_pPropSetChangeListeners->disposeAndClear( aEvt );
}
- if ( m_pImpl->m_pPropertyChangeListeners )
+ if ( m_pPropertyChangeListeners )
{
EventObject aEvt;
aEvt.Source = static_cast< XPropertySet * >( this );
- m_pImpl->m_pPropertyChangeListeners->disposeAndClear( aEvt );
+ m_pPropertyChangeListeners->disposeAndClear( aEvt );
}
}
@@ -1108,11 +1084,11 @@ void SAL_CALL PersistentPropertySet::dispose()
void SAL_CALL PersistentPropertySet::addEventListener(
const Reference< XEventListener >& Listener )
{
- if ( !m_pImpl->m_pDisposeEventListeners )
- m_pImpl->m_pDisposeEventListeners.reset(
- new OInterfaceContainerHelper2( m_pImpl->m_aMutex ) );
+ if ( !m_pDisposeEventListeners )
+ m_pDisposeEventListeners.reset(
+ new OInterfaceContainerHelper2( m_aMutex ) );
- m_pImpl->m_pDisposeEventListeners->addInterface( Listener );
+ m_pDisposeEventListeners->addInterface( Listener );
}
@@ -1120,8 +1096,8 @@ void SAL_CALL PersistentPropertySet::addEventListener(
void SAL_CALL PersistentPropertySet::removeEventListener(
const Reference< XEventListener >& Listener )
{
- if ( m_pImpl->m_pDisposeEventListeners )
- m_pImpl->m_pDisposeEventListeners->removeInterface( Listener );
+ if ( m_pDisposeEventListeners )
+ m_pDisposeEventListeners->removeInterface( Listener );
// Note: Don't want to delete empty container here -> performance.
}
@@ -1133,13 +1109,13 @@ void SAL_CALL PersistentPropertySet::removeEventListener(
// virtual
Reference< XPropertySetInfo > SAL_CALL PersistentPropertySet::getPropertySetInfo()
{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
- if ( !m_pImpl->m_pInfo.is() )
+ if ( !m_pInfo.is() )
{
- m_pImpl->m_pInfo = new PropertySetInfo_Impl( this );
+ m_pInfo = new PropertySetInfo_Impl( this );
}
- return m_pImpl->m_pInfo;
+ return m_pInfo;
}
@@ -1147,10 +1123,10 @@ Reference< XPropertySetInfo > SAL_CALL PersistentPropertySet::getPropertySetInfo
void SAL_CALL PersistentPropertySet::setPropertyValue( const OUString& aPropertyName,
const Any& aValue )
{
- osl::ClearableGuard< osl::Mutex > aCGuard( m_pImpl->m_aMutex );
+ osl::ClearableGuard< osl::Mutex > aCGuard( m_aMutex );
Reference< XHierarchicalNameAccess > xRootHierNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xRootHierNameAccess.is() )
{
OUString aFullPropName( getFullKey() + "/" );
@@ -1160,10 +1136,10 @@ void SAL_CALL PersistentPropertySet::setPropertyValue( const OUString& aProperty
if ( xRootHierNameAccess->hasByHierarchicalName( aFullPropName ) )
{
Reference< XNameReplace > xNameReplace(
- m_pImpl->m_pCreator->getConfigWriteAccess(
+ m_pCreator->getConfigWriteAccess(
aFullPropName ), UNO_QUERY );
Reference< XChangesBatch > xBatch(
- m_pImpl->m_pCreator->getConfigWriteAccess(
+ m_pCreator->getConfigWriteAccess(
OUString() ), UNO_QUERY );
if ( xNameReplace.is() && xBatch.is() )
@@ -1196,7 +1172,7 @@ void SAL_CALL PersistentPropertySet::setPropertyValue( const OUString& aProperty
xBatch->commitChanges();
PropertyChangeEvent aEvt;
- if ( m_pImpl->m_pPropertyChangeListeners )
+ if ( m_pPropertyChangeListeners )
{
// Obtain handle
aValueName = aFullPropName + "/Handle";
@@ -1242,10 +1218,10 @@ void SAL_CALL PersistentPropertySet::setPropertyValue( const OUString& aProperty
Any SAL_CALL PersistentPropertySet::getPropertyValue(
const OUString& PropertyName )
{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
Reference< XHierarchicalNameAccess > xNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xNameAccess.is() )
{
OUString aFullPropName( getFullKey() + "/" );
@@ -1271,11 +1247,11 @@ void SAL_CALL PersistentPropertySet::addPropertyChangeListener(
{
// load();
- if ( !m_pImpl->m_pPropertyChangeListeners )
- m_pImpl->m_pPropertyChangeListeners.reset(
- new PropertyListeners_Impl( m_pImpl->m_aMutex ) );
+ if ( !m_pPropertyChangeListeners )
+ m_pPropertyChangeListeners.reset(
+ new PropertyListeners_Impl( m_aMutex ) );
- m_pImpl->m_pPropertyChangeListeners->addInterface(
+ m_pPropertyChangeListeners->addInterface(
aPropertyName, xListener );
}
@@ -1287,8 +1263,8 @@ void SAL_CALL PersistentPropertySet::removePropertyChangeListener(
{
// load();
- if ( m_pImpl->m_pPropertyChangeListeners )
- m_pImpl->m_pPropertyChangeListeners->removeInterface(
+ if ( m_pPropertyChangeListeners )
+ m_pPropertyChangeListeners->removeInterface(
aPropertyName, aListener );
// Note: Don't want to delete empty container here -> performance.
@@ -1321,14 +1297,14 @@ void SAL_CALL PersistentPropertySet::removeVetoableChangeListener(
// virtual
Reference< XPropertySetRegistry > SAL_CALL PersistentPropertySet::getRegistry()
{
- return m_pImpl->m_pCreator;
+ return m_pCreator;
}
// virtual
OUString SAL_CALL PersistentPropertySet::getKey()
{
- return m_pImpl->m_aKey;
+ return m_aKey;
}
@@ -1339,15 +1315,15 @@ OUString SAL_CALL PersistentPropertySet::getKey()
OUString SAL_CALL PersistentPropertySet::getName()
{
// same as getKey()
- return m_pImpl->m_aKey;
+ return m_aKey;
}
// virtual
void SAL_CALL PersistentPropertySet::setName( const OUString& aName )
{
- if ( aName != m_pImpl->m_aKey )
- m_pImpl->m_pCreator->renamePropertySet( m_pImpl->m_aKey, aName );
+ if ( aName != m_aKey )
+ m_pCreator->renamePropertySet( m_aKey, aName );
}
@@ -1368,14 +1344,14 @@ void SAL_CALL PersistentPropertySet::addProperty(
if ( eTypeClass == TypeClass_INTERFACE )
throw IllegalTypeException();
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
// Property already in set?
OUString aFullValuesName;
Reference< XHierarchicalNameAccess > xRootHierNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xRootHierNameAccess.is() )
{
aFullValuesName = getFullKey();
@@ -1395,11 +1371,11 @@ void SAL_CALL PersistentPropertySet::addProperty(
// Add property.
Reference< XSingleServiceFactory > xFac(
- m_pImpl->m_pCreator->getConfigWriteAccess( aFullValuesName ),
+ m_pCreator->getConfigWriteAccess( aFullValuesName ),
UNO_QUERY );
Reference< XNameContainer > xContainer( xFac, UNO_QUERY );
Reference< XChangesBatch > xBatch(
- m_pImpl->m_pCreator->getConfigWriteAccess( OUString() ),
+ m_pCreator->getConfigWriteAccess( OUString() ),
UNO_QUERY );
OSL_ENSURE( xFac.is(),
@@ -1452,12 +1428,12 @@ void SAL_CALL PersistentPropertySet::addProperty(
xBatch->commitChanges();
// Property set info is invalid.
- if ( m_pImpl->m_pInfo.is() )
- m_pImpl->m_pInfo->reset();
+ if ( m_pInfo.is() )
+ m_pInfo->reset();
// Notify propertyset info change listeners.
- if ( m_pImpl->m_pPropSetChangeListeners &&
- m_pImpl->m_pPropSetChangeListeners->getLength() )
+ if ( m_pPropSetChangeListeners &&
+ m_pPropSetChangeListeners->getLength() )
{
PropertySetInfoChangeEvent evt(
static_cast< OWeakObject * >( this ),
@@ -1516,10 +1492,10 @@ void SAL_CALL PersistentPropertySet::addProperty(
// virtual
void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
Reference< XHierarchicalNameAccess > xRootHierNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xRootHierNameAccess.is() )
{
OUString aFullValuesName = getFullKey();
@@ -1563,10 +1539,10 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
// Remove property...
Reference< XNameContainer > xContainer(
- m_pImpl->m_pCreator->getConfigWriteAccess( aFullValuesName ),
+ m_pCreator->getConfigWriteAccess( aFullValuesName ),
UNO_QUERY );
Reference< XChangesBatch > xBatch(
- m_pImpl->m_pCreator->getConfigWriteAccess( OUString() ),
+ m_pCreator->getConfigWriteAccess( OUString() ),
UNO_QUERY );
OSL_ENSURE( xBatch.is(),
@@ -1581,8 +1557,8 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
{
sal_Int32 nHandle = -1;
- if ( m_pImpl->m_pPropSetChangeListeners &&
- m_pImpl->m_pPropSetChangeListeners->getLength() )
+ if ( m_pPropSetChangeListeners &&
+ m_pPropSetChangeListeners->getLength() )
{
// Obtain property handle ( needed for propertysetinfo
// change event )...
@@ -1610,12 +1586,12 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
xBatch->commitChanges();
// Property set info is invalid.
- if ( m_pImpl->m_pInfo.is() )
- m_pImpl->m_pInfo->reset();
+ if ( m_pInfo.is() )
+ m_pInfo->reset();
// Notify propertyset info change listeners.
- if ( m_pImpl->m_pPropSetChangeListeners &&
- m_pImpl->m_pPropSetChangeListeners->getLength() )
+ if ( m_pPropSetChangeListeners &&
+ m_pPropSetChangeListeners->getLength() )
{
PropertySetInfoChangeEvent evt(
static_cast< OWeakObject * >( this ),
@@ -1658,11 +1634,11 @@ void SAL_CALL PersistentPropertySet::removeProperty( const OUString& Name )
void SAL_CALL PersistentPropertySet::addPropertySetInfoChangeListener(
const Reference< XPropertySetInfoChangeListener >& Listener )
{
- if ( !m_pImpl->m_pPropSetChangeListeners )
- m_pImpl->m_pPropSetChangeListeners.reset(
- new OInterfaceContainerHelper2( m_pImpl->m_aMutex ) );
+ if ( !m_pPropSetChangeListeners )
+ m_pPropSetChangeListeners.reset(
+ new OInterfaceContainerHelper2( m_aMutex ) );
- m_pImpl->m_pPropSetChangeListeners->addInterface( Listener );
+ m_pPropSetChangeListeners->addInterface( Listener );
}
@@ -1670,8 +1646,8 @@ void SAL_CALL PersistentPropertySet::addPropertySetInfoChangeListener(
void SAL_CALL PersistentPropertySet::removePropertySetInfoChangeListener(
const Reference< XPropertySetInfoChangeListener >& Listener )
{
- if ( m_pImpl->m_pPropSetChangeListeners )
- m_pImpl->m_pPropSetChangeListeners->removeInterface( Listener );
+ if ( m_pPropSetChangeListeners )
+ m_pPropSetChangeListeners->removeInterface( Listener );
}
@@ -1681,10 +1657,10 @@ void SAL_CALL PersistentPropertySet::removePropertySetInfoChangeListener(
// virtual
Sequence< PropertyValue > SAL_CALL PersistentPropertySet::getPropertyValues()
{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
Reference< XHierarchicalNameAccess > xRootHierNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xRootHierNameAccess.is() )
{
try
@@ -1813,10 +1789,10 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
if ( !aProps.hasElements() )
return;
- osl::ClearableGuard< osl::Mutex > aCGuard( m_pImpl->m_aMutex );
+ osl::ClearableGuard< osl::Mutex > aCGuard( m_aMutex );
Reference< XHierarchicalNameAccess > xRootHierNameAccess(
- m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
+ m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
if ( xRootHierNameAccess.is() )
{
std::vector< PropertyChangeEvent > aEvents;
@@ -1835,10 +1811,10 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
if ( xRootHierNameAccess->hasByHierarchicalName( aFullPropName ) )
{
Reference< XNameReplace > xNameReplace(
- m_pImpl->m_pCreator->getConfigWriteAccess(
+ m_pCreator->getConfigWriteAccess(
aFullPropName ), UNO_QUERY );
Reference< XChangesBatch > xBatch(
- m_pImpl->m_pCreator->getConfigWriteAccess(
+ m_pCreator->getConfigWriteAccess(
OUString() ), UNO_QUERY );
if ( xNameReplace.is() && xBatch.is() )
@@ -1870,7 +1846,7 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
// Commit changes.
xBatch->commitChanges();
- if ( m_pImpl->m_pPropertyChangeListeners )
+ if ( m_pPropertyChangeListeners )
{
PropertyChangeEvent aEvt;
aEvt.Source = static_cast<OWeakObject*>(this);
@@ -1902,7 +1878,7 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
// Callback follows!
aCGuard.clear();
- if ( m_pImpl->m_pPropertyChangeListeners )
+ if ( m_pPropertyChangeListeners )
{
// Notify property changes.
for (auto const& event : aEvents)
@@ -1926,7 +1902,7 @@ void PersistentPropertySet::notifyPropertyChangeEvent(
{
// Get "normal" listeners for the property.
OInterfaceContainerHelper* pContainer =
- m_pImpl->m_pPropertyChangeListeners->getContainer(
+ m_pPropertyChangeListeners->getContainer(
rEvent.PropertyName );
if ( pContainer && pContainer->getLength() )
{
@@ -1943,7 +1919,7 @@ void PersistentPropertySet::notifyPropertyChangeEvent(
// Get "normal" listeners for all properties.
OInterfaceContainerHelper* pNoNameContainer =
- m_pImpl->m_pPropertyChangeListeners->getContainer( OUString() );
+ m_pPropertyChangeListeners->getContainer( OUString() );
if ( pNoNameContainer && pNoNameContainer->getLength() )
{
OInterfaceIteratorHelper aIter( *pNoNameContainer );
@@ -1962,11 +1938,11 @@ void PersistentPropertySet::notifyPropertyChangeEvent(
void PersistentPropertySet::notifyPropertySetInfoChange(
const PropertySetInfoChangeEvent& evt ) const
{
- if ( !m_pImpl->m_pPropSetChangeListeners )
+ if ( !m_pPropSetChangeListeners )
return;
// Notify event listeners.
- OInterfaceIteratorHelper2 aIter( *( m_pImpl->m_pPropSetChangeListeners ) );
+ OInterfaceIteratorHelper2 aIter( *m_pPropSetChangeListeners );
while ( aIter.hasMoreElements() )
{
// Propagate event.
@@ -1980,25 +1956,23 @@ void PersistentPropertySet::notifyPropertySetInfoChange(
const OUString& PersistentPropertySet::getFullKey()
{
- if ( m_pImpl->m_aFullKey.isEmpty() )
+ if ( m_aFullKey.isEmpty() )
{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
- if ( m_pImpl->m_aFullKey.isEmpty() )
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ if ( m_aFullKey.isEmpty() )
{
- m_pImpl->m_aFullKey
- = makeHierarchalNameSegment( m_pImpl->m_aKey );
- m_pImpl->m_aFullKey
- += "/Values";
+ m_aFullKey = makeHierarchalNameSegment( m_aKey );
+ m_aFullKey += "/Values";
}
}
- return m_pImpl->m_aFullKey;
+ return m_aFullKey;
}
PropertySetRegistry& PersistentPropertySet::getPropertySetRegistry()
{
- return *m_pImpl->m_pCreator;
+ return *m_pCreator;
}
diff --git a/ucb/source/core/ucbstore.hxx b/ucb/source/core/ucbstore.hxx
index ee724fa37793..478d4d597d60 100644
--- a/ucb/source/core/ucbstore.hxx
+++ b/ucb/source/core/ucbstore.hxx
@@ -33,6 +33,7 @@
#include <com/sun/star/beans/XPropertyAccess.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
+#include <comphelper/interfacecontainer2.hxx>
#include <cppuhelper/compbase.hxx>
#include <cppuhelper/basemutex.hxx>
#include <unordered_map>
@@ -140,7 +141,8 @@ public:
};
-struct PersistentPropertySet_Impl;
+class PropertySetInfo_Impl;
+typedef cppu::OMultiTypeInterfaceContainerHelperVar<OUString> PropertyListeners_Impl;
class PersistentPropertySet : public cppu::WeakImplHelper <
css::lang::XServiceInfo,
@@ -151,7 +153,14 @@ class PersistentPropertySet : public cppu::WeakImplHelper <
css::beans::XPropertySetInfoChangeNotifier,
css::beans::XPropertyAccess >
{
- std::unique_ptr<PersistentPropertySet_Impl> m_pImpl;
+ rtl::Reference<PropertySetRegistry> m_pCreator;
+ rtl::Reference<PropertySetInfo_Impl> m_pInfo;
+ OUString m_aKey;
+ OUString m_aFullKey;
+ osl::Mutex m_aMutex;
+ std::unique_ptr<comphelper::OInterfaceContainerHelper2> m_pDisposeEventListeners;
+ std::unique_ptr<comphelper::OInterfaceContainerHelper2> m_pPropSetChangeListeners;
+ std::unique_ptr<PropertyListeners_Impl> m_pPropertyChangeListeners;
private:
void notifyPropertyChangeEvent(
More information about the Libreoffice-commits
mailing list