accessibility/inc/extended/AccessibleBrowseBox.hxx | 11 - accessibility/inc/extended/AccessibleGridControl.hxx | 15 - accessibility/source/extended/AccessibleBrowseBox.cxx | 75 +++---- accessibility/source/extended/AccessibleGridControl.cxx | 127 +++++-------- include/xmloff/xmlexp.hxx | 7 linguistic/inc/iprcache.hxx | 9 linguistic/source/iprcache.cxx | 11 - linguistic/source/lngsvcmgr.cxx | 155 +++++++--------- linguistic/source/lngsvcmgr.hxx | 25 -- vcl/unx/generic/dtrans/X11_droptarget.cxx | 16 - vcl/unx/generic/dtrans/X11_selection.hxx | 7 xmloff/source/core/xmlexp.cxx | 30 +-- 12 files changed, 210 insertions(+), 278 deletions(-)
New commits: commit eede420e30b7b69aedd5050d1d335e20c584559a Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 15:54:44 2017 +0200 use rtl::Reference in AccessibleGridControlAccess instead of storing both raw pointers and uno::Reference Change-Id: Ie2306b619bec81707c5cff4debb8c7462ac2f9a1 diff --git a/accessibility/inc/extended/AccessibleGridControl.hxx b/accessibility/inc/extended/AccessibleGridControl.hxx index c99ac4e..703ea09 100644 --- a/accessibility/inc/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/extended/AccessibleGridControl.hxx @@ -164,14 +164,9 @@ class AccessibleGridControlAccess : ,public ::svt::table::IAccessibleTableControl { private: - css::uno::Reference< css::accessibility::XAccessible > - m_xParent; - ::svt::table::IAccessibleTable * m_pTable; - - css::uno::Reference< css::accessibility::XAccessibleContext > - m_xContext; - AccessibleGridControl* m_pContext; - // note that this pointer is valid as long as m_xContext is valid! + css::uno::Reference< css::accessibility::XAccessible > m_xParent; + ::svt::table::IAccessibleTable * m_pTable; + rtl::Reference<AccessibleGridControl> m_xContext; public: AccessibleGridControlAccess( @@ -180,7 +175,7 @@ public: ); /// returns the AccessibleContext belonging to this Accessible - inline AccessibleGridControl* getContext() { return m_pContext; } + inline AccessibleGridControl* getContext() { return m_xContext.get(); } protected: virtual ~AccessibleGridControlAccess() override; @@ -198,7 +193,7 @@ protected: void DisposeAccessImpl() override; virtual bool isAlive() const override { - return m_pContext && m_pContext->isAlive(); + return m_xContext.is() && m_xContext->isAlive(); } virtual void commitCellEvent( sal_Int16 nEventId, const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index b486f62..1203e9a 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -47,20 +47,16 @@ public: css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator; /** The data table child. */ - css::uno::Reference< css::accessibility::XAccessible > m_xTable; - AccessibleGridControlTable* m_pTable; + rtl::Reference<AccessibleGridControlTable> m_xTable; /** The header bar for rows. */ - css::uno::Reference< css::accessibility::XAccessible > m_xRowHeaderBar; - AccessibleGridControlHeader* m_pRowHeaderBar; + rtl::Reference<AccessibleGridControlHeader> m_xRowHeaderBar; /** The header bar for columns (first row of the table). */ - css::uno::Reference< css::accessibility::XAccessible > m_xColumnHeaderBar; - AccessibleGridControlHeader* m_pColumnHeaderBar; + rtl::Reference<AccessibleGridControlHeader> m_xColumnHeaderBar; /** The table cell child. */ - css::uno::Reference< css::accessibility::XAccessible > m_xCell; - AccessibleGridControlTableCell* m_pCell; + rtl::Reference<AccessibleGridControlTableCell> m_xCell; }; @@ -83,29 +79,28 @@ void SAL_CALL AccessibleGridControl::disposing() { SolarMutexGuard g; - m_xImpl->m_pTable = nullptr; - m_xImpl->m_pColumnHeaderBar = nullptr; - m_xImpl->m_pRowHeaderBar = nullptr; - m_xImpl->m_pCell = nullptr; m_xImpl->m_aCreator.clear(); - css::uno::Reference< css::accessibility::XAccessible > xTable = m_xImpl->m_xTable; - - css::uno::Reference< XComponent > xComp( m_xImpl->m_xTable, UNO_QUERY ); - if ( xComp.is() ) + if ( m_xImpl->m_xTable.is() ) { - xComp->dispose(); + m_xImpl->m_xTable->dispose(); + m_xImpl->m_xTable.clear(); } - css::uno::Reference< css::accessibility::XAccessible > xCell = m_xImpl->m_xCell; - - css::uno::Reference< XComponent > xCellComp( m_xImpl->m_xCell, UNO_QUERY ); - if ( xCellComp.is() ) + if ( m_xImpl->m_xCell.is() ) { - xCellComp->dispose(); + m_xImpl->m_xCell->dispose(); + m_xImpl->m_xCell.clear(); + } + if ( m_xImpl->m_xRowHeaderBar.is() ) + { + m_xImpl->m_xRowHeaderBar->dispose(); + m_xImpl->m_xRowHeaderBar.clear(); + } + if ( m_xImpl->m_xColumnHeaderBar.is() ) + { + m_xImpl->m_xColumnHeaderBar->dispose(); + m_xImpl->m_xColumnHeaderBar.clear(); } - - ::comphelper::disposeComponent(m_xImpl->m_xRowHeaderBar); - ::comphelper::disposeComponent(m_xImpl->m_xColumnHeaderBar); AccessibleGridControlBase::disposing(); } @@ -137,29 +132,25 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex ) { if(!m_xImpl->m_xColumnHeaderBar.is()) { - AccessibleGridControlHeader* pColHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_COLUMNHEADERBAR); - m_xImpl->m_xColumnHeaderBar = pColHeaderBar; + m_xImpl->m_xColumnHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_COLUMNHEADERBAR); } - xChild = m_xImpl->m_xColumnHeaderBar; + xChild = m_xImpl->m_xColumnHeaderBar.get(); } else if(m_aTable.HasRowHeader() && (nChildIndex == 1 || nChildIndex == 0)) { if(!m_xImpl->m_xRowHeaderBar.is()) { - AccessibleGridControlHeader* pRowHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_ROWHEADERBAR); - m_xImpl->m_xRowHeaderBar = pRowHeaderBar; + m_xImpl->m_xRowHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_ROWHEADERBAR); } - xChild = m_xImpl->m_xRowHeaderBar; + xChild = m_xImpl->m_xRowHeaderBar.get(); } else { if(!m_xImpl->m_xTable.is()) { - AccessibleGridControlTable* pTable = new AccessibleGridControlTable(m_xImpl->m_aCreator, m_aTable); - m_xImpl->m_xTable = pTable; - m_xImpl->m_pTable = pTable; + m_xImpl->m_xTable = new AccessibleGridControlTable(m_xImpl->m_aCreator, m_aTable); } - xChild = m_xImpl->m_xTable; + xChild = m_xImpl->m_xTable.get(); } } return xChild; @@ -246,10 +237,9 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleGridControl::im { if( !m_xImpl->m_xTable.is() ) { - m_xImpl->m_pTable = createAccessibleTable(); - m_xImpl->m_xTable = m_xImpl->m_pTable; + m_xImpl->m_xTable = createAccessibleTable(); } - return m_xImpl->m_xTable; + return m_xImpl->m_xTable.get(); } @@ -257,7 +247,7 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType ) { css::uno::Reference< css::accessibility::XAccessible > xRet; - css::uno::Reference< css::accessibility::XAccessible >* pxMember = nullptr; + rtl::Reference< AccessibleGridControlHeader >* pxMember = nullptr; if( eObjType == TCTYPE_ROWHEADERBAR ) pxMember = &m_xImpl->m_xRowHeaderBar; @@ -268,17 +258,10 @@ AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType { if( !pxMember->is() ) { - AccessibleGridControlHeader* pHeaderBar = new AccessibleGridControlHeader( + *pxMember = new AccessibleGridControlHeader( m_xImpl->m_aCreator, m_aTable, eObjType ); - - if ( TCTYPE_COLUMNHEADERBAR == eObjType) - m_xImpl->m_pColumnHeaderBar = pHeaderBar; - else - m_xImpl->m_pRowHeaderBar = pHeaderBar; - - *pxMember = pHeaderBar; } - xRet = *pxMember; + xRet = pxMember->get(); } return xRet; } @@ -318,16 +301,16 @@ void AccessibleGridControl::commitCellEvent(sal_Int16 _nEventId,const Any& _rNew { css::uno::Reference< css::accessibility::XAccessible > xAccessible = getAccessibleChild(i); css::uno::Reference< css::accessibility::XAccessibleContext > xAccessibleChild = xAccessible->getAccessibleContext(); - if(m_xImpl->m_xTable == xAccessible) + if(css::uno::Reference< css::accessibility::XAccessible >(m_xImpl->m_xTable.get()) == xAccessible) { std::vector< AccessibleGridControlTableCell* >& rCells = - m_xImpl->m_pTable->getCellVector(); + m_xImpl->m_xTable->getCellVector(); size_t nIndex = m_aTable.GetCurrentRow() * m_aTable.GetColumnCount() + m_aTable.GetCurrentColumn(); if (nIndex < rCells.size() && rCells[nIndex]) { - m_xImpl->m_pCell = rCells[nIndex]; - m_xImpl->m_pCell->commitEvent( _nEventId, _rNewValue, _rOldValue ); + m_xImpl->m_xCell = rCells[nIndex]; + m_xImpl->m_xCell->commitEvent( _nEventId, _rNewValue, _rOldValue ); } } } @@ -335,7 +318,7 @@ void AccessibleGridControl::commitCellEvent(sal_Int16 _nEventId,const Any& _rNew else { if ( m_xImpl->m_xTable.is() ) - m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue); + m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue); } } @@ -351,9 +334,9 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe if (nCurrentRow > -1 && nCurrentCol > -1) { sal_Int32 nColumnCount = m_aTable.GetColumnCount(); - xChild = m_xImpl->m_pTable->getAccessibleChild(nCurrentRow * nColumnCount + nCurrentCol); + xChild = m_xImpl->m_xTable->getAccessibleChild(nCurrentRow * nColumnCount + nCurrentCol); } - m_xImpl->m_pTable->commitEvent(_nEventId, makeAny(xChild),_rOldValue); + m_xImpl->m_xTable->commitEvent(_nEventId, makeAny(xChild),_rOldValue); } else if(_nEventId == AccessibleEventId::TABLE_MODEL_CHANGED) { @@ -363,33 +346,33 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe if(aChange.Type == AccessibleTableModelChangeType::DELETE) { std::vector< AccessibleGridControlTableCell* >& rCells = - m_xImpl->m_pTable->getCellVector(); + m_xImpl->m_xTable->getCellVector(); std::vector< css::uno::Reference< css::accessibility::XAccessible > >& rAccCells = - m_xImpl->m_pTable->getAccessibleCellVector(); + m_xImpl->m_xTable->getAccessibleCellVector(); int nColCount = m_aTable.GetColumnCount(); // check valid index - entries are inserted lazily size_t const nStart = nColCount * aChange.FirstRow; size_t const nEnd = nColCount * aChange.LastRow; if (nStart < rCells.size()) { - m_xImpl->m_pTable->getCellVector().erase( + m_xImpl->m_xTable->getCellVector().erase( rCells.begin() + nStart, rCells.begin() + std::min(rCells.size(), nEnd)); } if (nStart < rAccCells.size()) { - m_xImpl->m_pTable->getAccessibleCellVector().erase( + m_xImpl->m_xTable->getAccessibleCellVector().erase( rAccCells.begin() + nStart, rAccCells.begin() + std::min(rAccCells.size(), nEnd)); } - m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue); + m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue); } else - m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue); + m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue); } } else - m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue); + m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue); } } @@ -400,7 +383,6 @@ AccessibleGridControlAccess::AccessibleGridControlAccess( const css::uno::Reference< css::accessibility::XAccessible >& rxParent, ::svt::table::IAccessibleTable& rTable ) : m_xParent( rxParent ) , m_pTable( & rTable ) - , m_pContext( nullptr ) { } @@ -415,8 +397,11 @@ void AccessibleGridControlAccess::DisposeAccessImpl() SolarMutexGuard g; m_pTable = nullptr; - m_pContext = nullptr; - ::comphelper::disposeComponent( m_xContext ); + if (m_xContext.is()) + { + m_xContext->dispose(); + m_xContext.clear(); + } } @@ -424,19 +409,15 @@ css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL Accessibl { SolarMutexGuard g; - OSL_ENSURE( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ), - "extended/AccessibleGridControlAccess::getAccessibleContext: inconsistency!" ); - // if the context died meanwhile (we're no listener, so it won't tell us explicitly when this happens), // then reset an re-create. - if ( m_pContext && !m_pContext->isAlive() ) - m_xContext = m_pContext = nullptr; + if ( m_xContext.is() && !m_xContext->isAlive() ) + m_xContext = nullptr; if (!m_xContext.is() && m_pTable) - m_xContext = m_pContext = - new AccessibleGridControl(m_xParent, this, *m_pTable); + m_xContext = new AccessibleGridControl(m_xParent, this, *m_pTable); - return m_xContext; + return m_xContext.get(); } commit be0089b58b1a4a2f2d73a8da0b40b7b029c277a2 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 15:37:13 2017 +0200 use rtl::Reference in AccessibleBrowseBoxAccess instead of storing a raw pointer and a uno::Reference Change-Id: I4326cbda900e053599f1e753cb1bff122bdecc44 diff --git a/accessibility/inc/extended/AccessibleBrowseBox.hxx b/accessibility/inc/extended/AccessibleBrowseBox.hxx index bc6f1a5..69debf4 100644 --- a/accessibility/inc/extended/AccessibleBrowseBox.hxx +++ b/accessibility/inc/extended/AccessibleBrowseBox.hxx @@ -195,15 +195,12 @@ class AccessibleBrowseBoxAccess: public ::svt::IAccessibleBrowseBox { private: - ::osl::Mutex m_aMutex; + ::osl::Mutex m_aMutex; css::uno::Reference< css::accessibility::XAccessible > m_xParent; ::svt::IAccessibleTableProvider& m_rBrowseBox; - css::uno::Reference< css::accessibility::XAccessibleContext > - m_xContext; - AccessibleBrowseBox* m_pContext; - // note that this pointer is valid as long as m_xContext is valid! + rtl::Reference<AccessibleBrowseBox> m_xContext; public: AccessibleBrowseBoxAccess( @@ -212,7 +209,7 @@ public: ); /// returns the AccessibleContext belonging to this Accessible - inline AccessibleBrowseBox* getContext() { return m_pContext; } + inline AccessibleBrowseBox* getContext() { return m_xContext.get(); } protected: virtual ~AccessibleBrowseBoxAccess() override; @@ -230,7 +227,7 @@ protected: void dispose() override; virtual bool isAlive() const override { - return m_pContext && m_pContext->isAlive(); + return m_xContext.is() && m_xContext->isAlive(); } virtual css::uno::Reference< css::accessibility::XAccessible > getHeaderBar( ::svt::AccessibleBrowseBoxObjType _eObjType ) override diff --git a/accessibility/source/extended/AccessibleBrowseBox.cxx b/accessibility/source/extended/AccessibleBrowseBox.cxx index 377dc0a..07baad0 100644 --- a/accessibility/source/extended/AccessibleBrowseBox.cxx +++ b/accessibility/source/extended/AccessibleBrowseBox.cxx @@ -21,7 +21,6 @@ #include "extended/AccessibleBrowseBoxTable.hxx" #include "extended/AccessibleBrowseBoxHeaderBar.hxx" #include <svtools/accessibletableprovider.hxx> -#include <comphelper/types.hxx> #include <toolkit/helper/vclunohelper.hxx> #include <sal/types.h> @@ -43,16 +42,13 @@ public: css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator; /** The data table child. */ - css::uno::Reference< css::accessibility::XAccessible > mxTable; - AccessibleBrowseBoxTable* m_pTable; + rtl::Reference<AccessibleBrowseBoxTable> mxTable; /** The header bar for rows ("handle column"). */ - css::uno::Reference< css::accessibility::XAccessible > mxRowHeaderBar; - AccessibleBrowseBoxHeaderBar* m_pRowHeaderBar; + rtl::Reference<AccessibleBrowseBoxHeaderBar> mxRowHeaderBar; /** The header bar for columns (first row of the table). */ - css::uno::Reference< css::accessibility::XAccessible > mxColumnHeaderBar; - AccessibleBrowseBoxHeaderBar* m_pColumnHeaderBar; + rtl::Reference<AccessibleBrowseBoxHeaderBar> mxColumnHeaderBar; }; // Ctor/Dtor/disposing @@ -87,21 +83,23 @@ void SAL_CALL AccessibleBrowseBox::disposing() { ::osl::MutexGuard aGuard( getMutex() ); - m_xImpl->m_pTable = nullptr; - m_xImpl->m_pColumnHeaderBar = nullptr; - m_xImpl->m_pRowHeaderBar = nullptr; m_xImpl->m_aCreator.clear(); - css::uno::Reference< css::accessibility::XAccessible > xTable = m_xImpl->mxTable; - - css::uno::Reference< XComponent > xComp( m_xImpl->mxTable, UNO_QUERY ); - if ( xComp.is() ) + if ( m_xImpl->mxTable.is() ) { - xComp->dispose(); - + m_xImpl->mxTable->dispose(); + m_xImpl->mxTable.clear(); + } + if ( m_xImpl->mxRowHeaderBar.is() ) + { + m_xImpl->mxRowHeaderBar->dispose(); + m_xImpl->mxRowHeaderBar.clear(); + } + if ( m_xImpl->mxColumnHeaderBar.is() ) + { + m_xImpl->mxColumnHeaderBar->dispose(); + m_xImpl->mxColumnHeaderBar.clear(); } - ::comphelper::disposeComponent(m_xImpl->mxRowHeaderBar); - ::comphelper::disposeComponent(m_xImpl->mxColumnHeaderBar); AccessibleBrowseBoxBase::disposing(); } @@ -218,11 +216,10 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleBrowseBox::impl { if( !m_xImpl->mxTable.is() ) { - m_xImpl->m_pTable = createAccessibleTable(); - m_xImpl->mxTable = m_xImpl->m_pTable; + m_xImpl->mxTable = createAccessibleTable(); } - return m_xImpl->mxTable; + return m_xImpl->mxTable.get(); } @@ -230,7 +227,7 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleBrowseBox::implGetHeaderBar( AccessibleBrowseBoxObjType eObjType ) { css::uno::Reference< css::accessibility::XAccessible > xRet; - css::uno::Reference< css::accessibility::XAccessible >* pxMember = nullptr; + rtl::Reference< AccessibleBrowseBoxHeaderBar >* pxMember = nullptr; if( eObjType == BBTYPE_ROWHEADERBAR ) pxMember = &m_xImpl->mxRowHeaderBar; @@ -243,15 +240,9 @@ AccessibleBrowseBox::implGetHeaderBar( AccessibleBrowseBoxObjType eObjType ) { AccessibleBrowseBoxHeaderBar* pHeaderBar = new AccessibleBrowseBoxHeaderBar( m_xImpl->m_aCreator, *mpBrowseBox, eObjType ); - - if ( BBTYPE_COLUMNHEADERBAR == eObjType) - m_xImpl->m_pColumnHeaderBar = pHeaderBar; - else - m_xImpl->m_pRowHeaderBar = pHeaderBar; - *pxMember = pHeaderBar; } - xRet = *pxMember; + xRet = pxMember->get(); } return xRet; } @@ -287,7 +278,7 @@ void AccessibleBrowseBox::commitTableEvent(sal_Int16 _nEventId,const Any& _rNewV { if ( m_xImpl->mxTable.is() ) { - m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue); + m_xImpl->mxTable->commitEvent(_nEventId,_rNewValue,_rOldValue); } } @@ -295,10 +286,9 @@ void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue,bool _bColumnHeaderBar) { - css::uno::Reference< css::accessibility::XAccessible > xHeaderBar = _bColumnHeaderBar ? m_xImpl->mxColumnHeaderBar : m_xImpl->mxRowHeaderBar; - AccessibleBrowseBoxHeaderBar* pHeaderBar = _bColumnHeaderBar ? m_xImpl->m_pColumnHeaderBar : m_xImpl->m_pRowHeaderBar; + rtl::Reference< AccessibleBrowseBoxHeaderBar >& xHeaderBar = _bColumnHeaderBar ? m_xImpl->mxColumnHeaderBar : m_xImpl->mxRowHeaderBar; if ( xHeaderBar.is() ) - pHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue); + xHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue); } @@ -307,7 +297,6 @@ void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId, AccessibleBrowseBoxAccess::AccessibleBrowseBoxAccess( const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, ::svt::IAccessibleTableProvider& _rBrowseBox ) :m_xParent( _rxParent ) ,m_rBrowseBox( _rBrowseBox ) - ,m_pContext( nullptr ) { } @@ -321,8 +310,11 @@ void AccessibleBrowseBoxAccess::dispose() { ::osl::MutexGuard aGuard( m_aMutex ); - m_pContext = nullptr; - ::comphelper::disposeComponent( m_xContext ); + if (m_xContext.is()) + { + m_xContext->dispose(); + m_xContext.clear(); + } } @@ -330,18 +322,15 @@ css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL Accessibl { ::osl::MutexGuard aGuard( m_aMutex ); - OSL_ENSURE( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ), - "extended/AccessibleBrowseBoxAccess::getAccessibleContext: inconsistency!" ); - // if the context died meanwhile (there is no listener, so it won't tell us explicitly when this happens), // then reset and re-create. - if ( m_pContext && !m_pContext->isAlive() ) - m_xContext = m_pContext = nullptr; + if ( m_xContext.is() && !m_xContext->isAlive() ) + m_xContext = nullptr; if ( !m_xContext.is() ) - m_xContext = m_pContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox ); + m_xContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox ); - return m_xContext; + return m_xContext.get(); } commit 76f81d58ab0cd701182f2d55281546ecd8b08c2c Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 15:14:20 2017 +0200 use rtl::Reference in LngSvcMgr instead of storing both raw pointers and uno::Reference Change-Id: Ie403e1e7a081bc3f91fd25be89c54ddc1d1cadd2 diff --git a/linguistic/source/lngsvcmgr.cxx b/linguistic/source/lngsvcmgr.cxx index 35cc6e7..9a752ae 100644 --- a/linguistic/source/lngsvcmgr.cxx +++ b/linguistic/source/lngsvcmgr.cxx @@ -272,8 +272,8 @@ void LngSvcMgrListenerHelper::Timeout() static_cast<css::linguistic2::XLinguServiceManager*>(&rMyManager), nCombinedLngSvcEvt ); nCombinedLngSvcEvt = 0; - if (rMyManager.pSpellDsp) - rMyManager.pSpellDsp->FlushSpellCache(); + if (rMyManager.mxSpellDsp.is()) + rMyManager.mxSpellDsp->FlushSpellCache(); // pass event on to linguistic2::XLinguServiceEventListener's aLngSvcMgrListeners.notifyEach( &linguistic2::XLinguServiceEventListener::processLinguServiceEvent, aEvtObj ); @@ -340,8 +340,8 @@ void SAL_CALL if (0 != (nDlEvt & nHyphenateFlags)) nLngSvcEvt |= linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN; - if (rMyManager.pSpellDsp) - rMyManager.pSpellDsp->FlushSpellCache(); + if (rMyManager.mxSpellDsp.is()) + rMyManager.mxSpellDsp->FlushSpellCache(); if (nLngSvcEvt) LaunchEvent( nLngSvcEvt ); } @@ -431,16 +431,10 @@ LngSvcMgr::LngSvcMgr() { bDisposing = false; - pSpellDsp = nullptr; - pGrammarDsp = nullptr; - pHyphDsp = nullptr; - pThesDsp = nullptr; - pAvailSpellSvcs = nullptr; pAvailGrammarSvcs = nullptr; pAvailHyphSvcs = nullptr; pAvailThesSvcs = nullptr; - pListenerHelper = nullptr; // request notify events when properties (i.e. something in the subtree) changes uno::Sequence< OUString > aNames(4); @@ -508,9 +502,9 @@ IMPL_LINK_NOARG(LngSvcMgr, updateAndBroadcast, Idle *, void) UpdateAll(); - if (pListenerHelper) + if (mxListenerHelper.is()) { - pListenerHelper->AddLngSvcEvt( + mxListenerHelper->AddLngSvcEvt( linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN | linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN | linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN | @@ -845,7 +839,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames ) nLang = LanguageTag::convertToLanguageType( aKeyText ); GetSpellCheckerDsp_Impl( false ); // don't set service list, it will be done below - pSpellDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); + mxSpellDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); } } else if (rName.startsWith( aGrammarCheckerList )) @@ -870,7 +864,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames ) if (SvtLinguConfig().HasGrammarChecker()) { GetGrammarCheckerDsp_Impl( false ); // don't set service list, it will be done below - pGrammarDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); + mxGrammarDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); } } } @@ -894,7 +888,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames ) nLang = LanguageTag::convertToLanguageType( aKeyText ); GetHyphenatorDsp_Impl( false ); // don't set service list, it will be done below - pHyphDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); + mxHyphDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); } } else if (rName.startsWith( aThesaurusList )) @@ -917,7 +911,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames ) nLang = LanguageTag::convertToLanguageType( aKeyText ); GetThesaurusDsp_Impl( false ); // don't set service list, it will be done below - pThesDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); + mxThesDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames ); } } else @@ -938,29 +932,27 @@ void LngSvcMgr::ImplCommit() void LngSvcMgr::GetListenerHelper_Impl() { - if (!pListenerHelper) + if (!mxListenerHelper.is()) { - pListenerHelper = new LngSvcMgrListenerHelper( *this, linguistic::GetDictionaryList() ); - xListenerHelper = static_cast<linguistic2::XLinguServiceEventListener *>(pListenerHelper); + mxListenerHelper = new LngSvcMgrListenerHelper( *this, linguistic::GetDictionaryList() ); } } void LngSvcMgr::GetSpellCheckerDsp_Impl( bool bSetSvcList ) { - if (!pSpellDsp) + if (!mxSpellDsp.is()) { - pSpellDsp = new SpellCheckerDispatcher( *this ); - xSpellDsp = pSpellDsp; + mxSpellDsp = new SpellCheckerDispatcher( *this ); if (bSetSvcList) - SetCfgServiceLists( *pSpellDsp ); + SetCfgServiceLists( *mxSpellDsp ); } } void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList ) { - if (!pGrammarDsp && SvtLinguConfig().HasGrammarChecker()) + if (!mxGrammarDsp.is() && SvtLinguConfig().HasGrammarChecker()) { //! since the grammar checking iterator needs to be a one instance service //! we need to create it the correct way! @@ -976,11 +968,10 @@ void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList ) if (xGCI.is()) { - pGrammarDsp = dynamic_cast< GrammarCheckingIterator * >(xGCI.get()); - xGrammarDsp = xGCI; - SAL_WARN_IF( pGrammarDsp == nullptr, "linguistic", "failed to get implementation" ); - if (bSetSvcList && pGrammarDsp) - SetCfgServiceLists( *pGrammarDsp ); + mxGrammarDsp = dynamic_cast< GrammarCheckingIterator * >(xGCI.get()); + SAL_WARN_IF( mxGrammarDsp == nullptr, "linguistic", "failed to get implementation" ); + if (bSetSvcList && mxGrammarDsp.is()) + SetCfgServiceLists( *mxGrammarDsp ); } } } @@ -988,24 +979,22 @@ void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList ) void LngSvcMgr::GetHyphenatorDsp_Impl( bool bSetSvcList ) { - if (!pHyphDsp) + if (!mxHyphDsp.is()) { - pHyphDsp = new HyphenatorDispatcher( *this ); - xHyphDsp = pHyphDsp; + mxHyphDsp = new HyphenatorDispatcher( *this ); if (bSetSvcList) - SetCfgServiceLists( *pHyphDsp ); + SetCfgServiceLists( *mxHyphDsp ); } } void LngSvcMgr::GetThesaurusDsp_Impl( bool bSetSvcList ) { - if (!pThesDsp) + if (!mxThesDsp.is()) { - pThesDsp = new ThesaurusDispatcher; - xThesDsp = pThesDsp; + mxThesDsp = new ThesaurusDispatcher; if (bSetSvcList) - SetCfgServiceLists( *pThesDsp ); + SetCfgServiceLists( *mxThesDsp ); } } @@ -1429,9 +1418,9 @@ uno::Reference< linguistic2::XSpellChecker > SAL_CALL uno::Reference< linguistic2::XSpellChecker > xRes; if (!bDisposing) { - if (!xSpellDsp.is()) + if (!mxSpellDsp.is()) GetSpellCheckerDsp_Impl(); - xRes = xSpellDsp; + xRes = mxSpellDsp.get(); } return xRes; } @@ -1448,9 +1437,9 @@ uno::Reference< linguistic2::XHyphenator > SAL_CALL uno::Reference< linguistic2::XHyphenator > xRes; if (!bDisposing) { - if (!xHyphDsp.is()) + if (!mxHyphDsp.is()) GetHyphenatorDsp_Impl(); - xRes = xHyphDsp; + xRes = mxHyphDsp.get(); } return xRes; } @@ -1467,9 +1456,9 @@ uno::Reference< linguistic2::XThesaurus > SAL_CALL uno::Reference< linguistic2::XThesaurus > xRes; if (!bDisposing) { - if (!xThesDsp.is()) + if (!mxThesDsp.is()) GetThesaurusDsp_Impl(); - xRes = xThesDsp; + xRes = mxThesDsp.get(); } return xRes; } @@ -1485,9 +1474,9 @@ sal_Bool SAL_CALL bool bRes = false; if (!bDisposing && xListener.is()) { - if (!pListenerHelper) + if (!mxListenerHelper.is()) GetListenerHelper_Impl(); - bRes = pListenerHelper->AddLngSvcMgrListener( xListener ); + bRes = mxListenerHelper->AddLngSvcMgrListener( xListener ); } return bRes; } @@ -1503,10 +1492,10 @@ sal_Bool SAL_CALL bool bRes = false; if (!bDisposing && xListener.is()) { - DBG_ASSERT( pListenerHelper, "listener removed without being added" ); - if (!pListenerHelper) + DBG_ASSERT( mxListenerHelper.is(), "listener removed without being added" ); + if (!mxListenerHelper.is()) GetListenerHelper_Impl(); - bRes = pListenerHelper->RemoveLngSvcMgrListener( xListener ); + bRes = mxListenerHelper->RemoveLngSvcMgrListener( xListener ); } return bRes; } @@ -1642,62 +1631,62 @@ void SAL_CALL { if (rServiceName == SN_SPELLCHECKER) { - if (!xSpellDsp.is()) + if (!mxSpellDsp.is()) GetSpellCheckerDsp_Impl(); bool bChanged = !IsEqSvcList( rServiceImplNames, - pSpellDsp->GetServiceList( rLocale ) ); + mxSpellDsp->GetServiceList( rLocale ) ); if (bChanged) { - pSpellDsp->SetServiceList( rLocale, rServiceImplNames ); + mxSpellDsp->SetServiceList( rLocale, rServiceImplNames ); SaveCfgSvcs( SN_SPELLCHECKER ); - if (pListenerHelper && bChanged) - pListenerHelper->AddLngSvcEvt( + if (mxListenerHelper.is() && bChanged) + mxListenerHelper->AddLngSvcEvt( linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN | linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN ); } } else if (rServiceName == SN_GRAMMARCHECKER) { - if (!xGrammarDsp.is()) + if (!mxGrammarDsp.is()) GetGrammarCheckerDsp_Impl(); bool bChanged = !IsEqSvcList( rServiceImplNames, - pGrammarDsp->GetServiceList( rLocale ) ); + mxGrammarDsp->GetServiceList( rLocale ) ); if (bChanged) { - pGrammarDsp->SetServiceList( rLocale, rServiceImplNames ); + mxGrammarDsp->SetServiceList( rLocale, rServiceImplNames ); SaveCfgSvcs( SN_GRAMMARCHECKER ); - if (pListenerHelper && bChanged) - pListenerHelper->AddLngSvcEvt( + if (mxListenerHelper.is() && bChanged) + mxListenerHelper->AddLngSvcEvt( linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN ); } } else if (rServiceName == SN_HYPHENATOR) { - if (!xHyphDsp.is()) + if (!mxHyphDsp.is()) GetHyphenatorDsp_Impl(); bool bChanged = !IsEqSvcList( rServiceImplNames, - pHyphDsp->GetServiceList( rLocale ) ); + mxHyphDsp->GetServiceList( rLocale ) ); if (bChanged) { - pHyphDsp->SetServiceList( rLocale, rServiceImplNames ); + mxHyphDsp->SetServiceList( rLocale, rServiceImplNames ); SaveCfgSvcs( SN_HYPHENATOR ); - if (pListenerHelper && bChanged) - pListenerHelper->AddLngSvcEvt( + if (mxListenerHelper.is() && bChanged) + mxListenerHelper->AddLngSvcEvt( linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN ); } } else if (rServiceName == SN_THESAURUS) { - if (!xThesDsp.is()) + if (!mxThesDsp.is()) GetThesaurusDsp_Impl(); bool bChanged = !IsEqSvcList( rServiceImplNames, - pThesDsp->GetServiceList( rLocale ) ); + mxThesDsp->GetServiceList( rLocale ) ); if (bChanged) { - pThesDsp->SetServiceList( rLocale, rServiceImplNames ); + mxThesDsp->SetServiceList( rLocale, rServiceImplNames ); SaveCfgSvcs( SN_THESAURUS ); } } @@ -1716,30 +1705,30 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName ) if (rServiceName == SN_SPELLCHECKER) { - if (!pSpellDsp) + if (!mxSpellDsp.get()) GetSpellCheckerDsp_Impl(); - pDsp = pSpellDsp; + pDsp = mxSpellDsp.get(); aLocales = getAvailableLocales( SN_SPELLCHECKER ); } else if (rServiceName == SN_GRAMMARCHECKER) { - if (!pGrammarDsp) + if (!mxGrammarDsp.is()) GetGrammarCheckerDsp_Impl(); - pDsp = pGrammarDsp; + pDsp = mxGrammarDsp.get(); aLocales = getAvailableLocales( SN_GRAMMARCHECKER ); } else if (rServiceName == SN_HYPHENATOR) { - if (!pHyphDsp) + if (!mxHyphDsp.is()) GetHyphenatorDsp_Impl(); - pDsp = pHyphDsp; + pDsp = mxHyphDsp.get(); aLocales = getAvailableLocales( SN_HYPHENATOR ); } else if (rServiceName == SN_THESAURUS) { - if (!pThesDsp) + if (!mxThesDsp.is()) GetThesaurusDsp_Impl(); - pDsp = pThesDsp; + pDsp = mxThesDsp.get(); aLocales = getAvailableLocales( SN_THESAURUS ); } @@ -1754,13 +1743,13 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName ) // get node name to be used const char *pNodeName = nullptr; - if (pDsp == pSpellDsp) + if (pDsp == mxSpellDsp.get()) pNodeName = "ServiceManager/SpellCheckerList"; - else if (pDsp == pGrammarDsp) + else if (pDsp == mxGrammarDsp.get()) pNodeName = "ServiceManager/GrammarCheckerList"; - else if (pDsp == pHyphDsp) + else if (pDsp == mxHyphDsp.get()) pNodeName = "ServiceManager/HyphenatorList"; - else if (pDsp == pThesDsp) + else if (pDsp == mxThesDsp.get()) pNodeName = "ServiceManager/ThesaurusList"; else { @@ -1775,7 +1764,7 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName ) // build value to be written back to configuration uno::Any aCfgAny; - if ((pDsp == pHyphDsp || pDsp == pGrammarDsp) && aSvcImplNames.getLength() > 1) + if ((pDsp == mxHyphDsp.get() || pDsp == mxGrammarDsp.get()) && aSvcImplNames.getLength() > 1) aSvcImplNames.realloc(1); // there should be only one entry for hyphenators or grammar checkers (because they are not chained) aCfgAny <<= aSvcImplNames; DBG_ASSERT( aCfgAny.hasValue(), "missing value for 'Any' type" ); @@ -1936,8 +1925,8 @@ void SAL_CALL lang::EventObject aEvtObj( static_cast<XLinguServiceManager*>(this) ); aEvtListeners.disposeAndClear( aEvtObj ); - if (pListenerHelper) - pListenerHelper->DisposeAndClear( aEvtObj ); + if (mxListenerHelper.is()) + mxListenerHelper->DisposeAndClear( aEvtObj ); } } @@ -1976,9 +1965,9 @@ bool LngSvcMgr::AddLngSvcEvtBroadcaster( bool bRes = false; if (rxBroadcaster.is()) { - if (!pListenerHelper) + if (!mxListenerHelper.is()) GetListenerHelper_Impl(); - bRes = pListenerHelper->AddLngSvcEvtBroadcaster( rxBroadcaster ); + bRes = mxListenerHelper->AddLngSvcEvtBroadcaster( rxBroadcaster ); } return bRes; } diff --git a/linguistic/source/lngsvcmgr.hxx b/linguistic/source/lngsvcmgr.hxx index 493e6dd..348ca09 100644 --- a/linguistic/source/lngsvcmgr.hxx +++ b/linguistic/source/lngsvcmgr.hxx @@ -30,6 +30,7 @@ #include <com/sun/star/util/XModifyBroadcaster.hpp> #include <com/sun/star/util/XModifyListener.hpp> #include <unotools/configitem.hxx> +#include <rtl/ref.hxx> #include <vcl/timer.hxx> #include <vcl/idle.hxx> #include <vector> @@ -65,19 +66,7 @@ class LngSvcMgr : { friend class LngSvcMgrListenerHelper; - ::comphelper::OInterfaceContainerHelper2 aEvtListeners; - - css::uno::Reference< - css::linguistic2::XSpellChecker > xSpellDsp; - css::uno::Reference< - css::linguistic2::XProofreadingIterator > xGrammarDsp; - css::uno::Reference< - css::linguistic2::XHyphenator > xHyphDsp; - css::uno::Reference< - css::linguistic2::XThesaurus > xThesDsp; - - css::uno::Reference< - css::lang::XEventListener > xListenerHelper; + ::comphelper::OInterfaceContainerHelper2 aEvtListeners; css::uno::Reference< css::util::XModifyBroadcaster> xMB; @@ -94,12 +83,12 @@ class LngSvcMgr : css::uno::Sequence< css::lang::Locale > aAvailThesLocales; - SpellCheckerDispatcher * pSpellDsp; - GrammarCheckingIterator * pGrammarDsp; - HyphenatorDispatcher * pHyphDsp; - ThesaurusDispatcher * pThesDsp; + rtl::Reference<SpellCheckerDispatcher> mxSpellDsp; + rtl::Reference<GrammarCheckingIterator> mxGrammarDsp; + rtl::Reference<HyphenatorDispatcher> mxHyphDsp; + rtl::Reference<ThesaurusDispatcher> mxThesDsp; - LngSvcMgrListenerHelper * pListenerHelper; + rtl::Reference<LngSvcMgrListenerHelper> mxListenerHelper; typedef std::vector< std::unique_ptr<SvcInfo> > SvcInfoArray; SvcInfoArray * pAvailSpellSvcs; commit e4d362017ecd6076ab9fd13d9c6b2c5137580500 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 15:04:38 2017 +0200 use rtl::Reference in SpellCache instead of storing both a raw pointer and a uno::Reference Change-Id: I8764bf6b7d7745dd14f6c7548e771131354b1f23 diff --git a/linguistic/inc/iprcache.hxx b/linguistic/inc/iprcache.hxx index f37f3af..b311511 100644 --- a/linguistic/inc/iprcache.hxx +++ b/linguistic/inc/iprcache.hxx @@ -30,6 +30,7 @@ #include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp> #include <com/sun/star/linguistic2/XLinguProperties.hpp> +#include <rtl/ref.hxx> #include <rtl/string.hxx> #include <i18nlangtag/lang.h> @@ -75,12 +76,10 @@ public: class SpellCache final { - css::uno::Reference< css::linguistic2::XDictionaryListEventListener > - xFlushLstnr; - FlushListener *pFlushLstnr; + rtl::Reference<FlushListener> mxFlushLstnr; - typedef std::set< OUString > WordList_t; - typedef std::map< LanguageType, WordList_t > LangWordList_t; + typedef std::set< OUString > WordList_t; + typedef std::map< LanguageType, WordList_t > LangWordList_t; LangWordList_t aWordLists; SpellCache(const SpellCache &) = delete; diff --git a/linguistic/source/iprcache.cxx b/linguistic/source/iprcache.cxx index fbcbb44..e7989b2 100644 --- a/linguistic/source/iprcache.cxx +++ b/linguistic/source/iprcache.cxx @@ -189,20 +189,19 @@ void SAL_CALL FlushListener::propertyChange( SpellCache::SpellCache() { - pFlushLstnr = new FlushListener( *this ); - xFlushLstnr = pFlushLstnr; + mxFlushLstnr = new FlushListener( *this ); Reference<XSearchableDictionaryList> aDictionaryList(GetDictionaryList()); - pFlushLstnr->SetDicList( aDictionaryList ); //! after reference is established + mxFlushLstnr->SetDicList( aDictionaryList ); //! after reference is established Reference<XLinguProperties> aPropertySet(GetLinguProperties()); - pFlushLstnr->SetPropSet( aPropertySet ); //! after reference is established + mxFlushLstnr->SetPropSet( aPropertySet ); //! after reference is established } SpellCache::~SpellCache() { Reference<XSearchableDictionaryList> aEmptyList; Reference<XLinguProperties> aEmptySet; - pFlushLstnr->SetDicList( aEmptyList ); - pFlushLstnr->SetPropSet( aEmptySet ); + mxFlushLstnr->SetDicList( aEmptyList ); + mxFlushLstnr->SetPropSet( aEmptySet ); } void SpellCache::Flush() commit 034cb09f56fba58ccc53acb88681e1f0b812156a Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 14:56:48 2017 +0200 use rtl::Reference in SvXMLExport instead of storing both a raw pointer and an uno::Reference Change-Id: I83774937d3556b9fed550a7f3e757dc975b4098a diff --git a/include/xmloff/xmlexp.hxx b/include/xmloff/xmlexp.hxx index 96a1ded..7fbcb41 100644 --- a/include/xmloff/xmlexp.hxx +++ b/include/xmloff/xmlexp.hxx @@ -131,8 +131,7 @@ class XMLOFF_DLLPUBLIC SvXMLExport : public cppu::WeakImplHelper< css::uno::Reference< css::beans::XPropertySet > mxExportInfo; css::uno::Reference< css::lang::XEventListener > mxEventListener; - SvXMLAttributeList *mpAttrList; // a common attribute list - css::uno::Reference< css::xml::sax::XAttributeList > mxAttrList; // and an interface of it + rtl::Reference<SvXMLAttributeList> mxAttrList; // a common attribute list OUString msOrigFileName; // the original URL OUString msGraphicObjectProtocol; @@ -377,8 +376,8 @@ public: css::xml::sax::XAttributeList >& xAttrList ); // Get common attribute list as implementation or interface. - SvXMLAttributeList &GetAttrList() { return *mpAttrList; } - const css::uno::Reference< css::xml::sax::XAttributeList > & GetXAttrList() { return mxAttrList; } + SvXMLAttributeList &GetAttrList() { return *mxAttrList.get(); } + css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() { return mxAttrList.get(); } // Get document handler. This methods are not const, because the // reference allowes modifications through the handler. diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index b46af12..3666cfa 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -393,8 +393,6 @@ void SvXMLExport::InitCtor_() GetXMLToken(XML_NP_CSS3TEXT), GetXMLToken(XML_N_CSS3TEXT), XML_NAMESPACE_CSS3TEXT ); } - mxAttrList = static_cast<xml::sax::XAttributeList*>(mpAttrList); - msGraphicObjectProtocol = "vnd.sun.star.GraphicObject:"; msEmbeddedObjectProtocol = "vnd.sun.star.EmbeddedObject:"; @@ -434,7 +432,7 @@ SvXMLExport::SvXMLExport( const enum XMLTokenEnum eClass, SvXMLExportFlags nExportFlags ) : mpImpl( new SvXMLExport_Impl ), m_xContext(xContext), m_implementationName(implementationName), - mpAttrList( new SvXMLAttributeList ), + mxAttrList( new SvXMLAttributeList ), mpNamespaceMap( new SvXMLNamespaceMap ), mpUnitConv( new SvXMLUnitConverter( xContext, util::MeasureUnit::MM_100TH, eDefaultMeasureUnit) ), @@ -463,7 +461,7 @@ SvXMLExport::SvXMLExport( m_xContext(xContext), m_implementationName(implementationName), mxHandler( rHandler ), mxExtHandler( rHandler, uno::UNO_QUERY ), - mpAttrList( new SvXMLAttributeList ), + mxAttrList( new SvXMLAttributeList ), msOrigFileName( rFileName ), mpNamespaceMap( new SvXMLNamespaceMap ), mpUnitConv( new SvXMLUnitConverter( xContext, @@ -500,7 +498,7 @@ SvXMLExport::SvXMLExport( mxHandler( rHandler ), mxExtHandler( rHandler, uno::UNO_QUERY ), mxNumberFormatsSupplier (rModel, uno::UNO_QUERY), - mpAttrList( new SvXMLAttributeList ), + mxAttrList( new SvXMLAttributeList ), msOrigFileName( rFileName ), mpNamespaceMap( new SvXMLNamespaceMap ), mpUnitConv( new SvXMLUnitConverter( xContext, @@ -945,7 +943,7 @@ void SvXMLExport::AddAttributeASCII( sal_uInt16 nPrefixKey, OUString sName( OUString::createFromAscii( pName ) ); OUString sValue( OUString::createFromAscii( pValue ) ); - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( GetNamespaceMap_().GetQNameByKey( nPrefixKey, sName ), sValue ); } @@ -954,14 +952,14 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, const sal_Char *pName, { OUString sName( OUString::createFromAscii( pName ) ); - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( GetNamespaceMap_().GetQNameByKey( nPrefixKey, sName ), rValue ); } void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, const OUString& rName, const OUString& rValue ) { - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( GetNamespaceMap_().GetQNameByKey( nPrefixKey, rName ), rValue ); } @@ -969,7 +967,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, enum XMLTokenEnum eName, const OUString& rValue ) { - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( GetNamespaceMap_().GetQNameByKey( nPrefixKey, GetXMLToken(eName) ), rValue ); } @@ -978,7 +976,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, enum XMLTokenEnum eName, enum XMLTokenEnum eValue) { - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( GetNamespaceMap_().GetQNameByKey( nPrefixKey, GetXMLToken(eName) ), GetXMLToken(eValue) ); } @@ -986,7 +984,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, void SvXMLExport::AddAttribute( const OUString& rQName, const OUString& rValue ) { - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( rQName, rValue ); } @@ -994,7 +992,7 @@ void SvXMLExport::AddAttribute( const OUString& rQName, void SvXMLExport::AddAttribute( const OUString& rQName, enum ::xmloff::token::XMLTokenEnum eValue ) { - mpAttrList->AddAttribute( + mxAttrList->AddAttribute( rQName, GetXMLToken(eValue) ); } @@ -1061,18 +1059,18 @@ void SvXMLExport::AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPref void SvXMLExport::AddAttributeList( const uno::Reference< xml::sax::XAttributeList >& xAttrList ) { if( xAttrList.is()) - mpAttrList->AppendAttributeList( xAttrList ); + mxAttrList->AppendAttributeList( xAttrList ); } void SvXMLExport::ClearAttrList() { - mpAttrList->Clear(); + mxAttrList->Clear(); } #ifdef DBG_UTIL void SvXMLExport::CheckAttrList() { - SAL_WARN_IF( mpAttrList->getLength(), "xmloff.core", "XMLExport::CheckAttrList: list is not empty" ); + SAL_WARN_IF( mxAttrList->getLength(), "xmloff.core", "XMLExport::CheckAttrList: list is not empty" ); } #endif @@ -1350,7 +1348,7 @@ sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass ) sal_uInt16 nPos = mpNamespaceMap->GetFirstKey(); while( USHRT_MAX != nPos ) { - mpAttrList->AddAttribute( mpNamespaceMap->GetAttrNameByKey( nPos ), + mxAttrList->AddAttribute( mpNamespaceMap->GetAttrNameByKey( nPos ), mpNamespaceMap->GetNameByKey( nPos ) ); nPos = mpNamespaceMap->GetNextKey( nPos ); } commit 2796150fdcc340be6b3dba19fc9c5734c21e0e6e Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Mon Jan 16 14:47:13 2017 +0200 use rtl::Reference in DropTarget instead of storing both a raw pointer and a uno::Reference Change-Id: Ia03e68ce7c0bec4b6e43e9ab32d8a918ea467f5b diff --git a/vcl/unx/generic/dtrans/X11_droptarget.cxx b/vcl/unx/generic/dtrans/X11_droptarget.cxx index b6892eb..3915d8e 100644 --- a/vcl/unx/generic/dtrans/X11_droptarget.cxx +++ b/vcl/unx/generic/dtrans/X11_droptarget.cxx @@ -35,15 +35,14 @@ DropTarget::DropTarget() : >( m_aMutex ), m_bActive( false ), m_nDefaultActions( 0 ), - m_aTargetWindow( None ), - m_pSelectionManager( nullptr ) + m_aTargetWindow( None ) { } DropTarget::~DropTarget() { - if( m_pSelectionManager ) - m_pSelectionManager->deregisterDropTarget( m_aTargetWindow ); + if( m_xSelectionManager.is() ) + m_xSelectionManager->deregisterDropTarget( m_aTargetWindow ); } void DropTarget::initialize( const Sequence< Any >& arguments ) throw( css::uno::Exception, std::exception ) @@ -59,15 +58,14 @@ void DropTarget::initialize( const Sequence< Any >& arguments ) throw( css::uno: aIdentifier >>= aDisplayName; } - m_pSelectionManager = &SelectionManager::get( aDisplayName ); - m_xSelectionManager = static_cast< XDragSource* >(m_pSelectionManager); - m_pSelectionManager->initialize( arguments ); + m_xSelectionManager = &SelectionManager::get( aDisplayName ); + m_xSelectionManager->initialize( arguments ); - if( m_pSelectionManager->getDisplay() ) // #136582# sanity check + if( m_xSelectionManager->getDisplay() ) // #136582# sanity check { sal_IntPtr aWindow = None; arguments.getConstArray()[1] >>= aWindow; - m_pSelectionManager->registerDropTarget( aWindow, this ); + m_xSelectionManager->registerDropTarget( aWindow, this ); m_aTargetWindow = aWindow; m_bActive = true; } diff --git a/vcl/unx/generic/dtrans/X11_selection.hxx b/vcl/unx/generic/dtrans/X11_selection.hxx index ec46b32..24de1bc 100644 --- a/vcl/unx/generic/dtrans/X11_selection.hxx +++ b/vcl/unx/generic/dtrans/X11_selection.hxx @@ -31,8 +31,8 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/frame/XDesktop2.hpp> #include <osl/thread.h> - #include <osl/conditn.hxx> +#include <rtl/ref.hxx> #include <list> #include <unordered_map> @@ -75,11 +75,10 @@ namespace x11 { bool m_bActive; sal_Int8 m_nDefaultActions; ::Window m_aTargetWindow; - SelectionManager* m_pSelectionManager; - css::uno::Reference< css::datatransfer::dnd::XDragSource > + rtl::Reference<SelectionManager> m_xSelectionManager; ::std::list< css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > > - m_aListeners; + m_aListeners; DropTarget(); virtual ~DropTarget() override; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits