diff options
author | Tino Rachui <tra@openoffice.org> | 2001-03-14 13:54:58 +0000 |
---|---|---|
committer | Tino Rachui <tra@openoffice.org> | 2001-03-14 13:54:58 +0000 |
commit | 29282c05c13cabd08026c6aead8017455c23834b (patch) | |
tree | b9ae869bf04e928c0b60dc5cec02f7d21776871c /dtrans/source/win32/clipb/WinClipbImpl.cxx | |
parent | 0f83d61036c9eeab823f85ed0730046f64645bbb (diff) |
*** empty log message ***
Diffstat (limited to 'dtrans/source/win32/clipb/WinClipbImpl.cxx')
-rw-r--r-- | dtrans/source/win32/clipb/WinClipbImpl.cxx | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/dtrans/source/win32/clipb/WinClipbImpl.cxx b/dtrans/source/win32/clipb/WinClipbImpl.cxx index dd929602c624..9e3789d83bf9 100644 --- a/dtrans/source/win32/clipb/WinClipbImpl.cxx +++ b/dtrans/source/win32/clipb/WinClipbImpl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: WinClipbImpl.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: tra $ $Date: 2001-03-07 11:23:10 $ + * last change: $Author: tra $ $Date: 2001-03-14 14:43:14 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -75,10 +75,6 @@ #include "..\..\inc\DtObjFactory.hxx" #endif -#ifndef _MTAOLECLIPB_H_ -#include <systools\win32\MtaOleClipb.h> -#endif - #ifndef _APNDATAOBJECT_HXX_ #include "APNDataObject.hxx" #endif @@ -152,15 +148,15 @@ Reference< XTransferable > SAL_CALL CWinClipbImpl::getContents( ) throw( Runtime { MutexGuard aGuard( m_aMutex ); + Reference< XTransferable > rClipContent; + if ( m_rCurrentClipbContent.is( ) ) - { - return m_rCurrentClipbContent; - } + rClipContent = m_rCurrentClipbContent; else { // get the current dataobject from clipboard IDataObjectPtr pIDataObject; - MTAGetClipboard( &pIDataObject ); + m_MtaOleClipboard.getClipboard( &pIDataObject ); // create an apartment neutral dataobject and initialize it with a // com smart pointer to the IDataObject from clipboard @@ -169,8 +165,10 @@ Reference< XTransferable > SAL_CALL CWinClipbImpl::getContents( ) throw( Runtime CDTransObjFactory objFactory; // remeber pIDo destroys itself due to the smart pointer - return objFactory.createTransferableFromDataObj( m_pWinClipboard->m_SrvMgr, pIDo ); + rClipContent = objFactory.createTransferableFromDataObj( m_pWinClipboard->m_SrvMgr, pIDo ); } + + return rClipContent; } //------------------------------------------------------------------------ @@ -203,7 +201,7 @@ void SAL_CALL CWinClipbImpl::setContents( const Reference< XTransferable >& xTra m_pWinClipboard->m_aCondition.reset( ); aGuard.clear( ); - MTASetClipboard( pIDataObj ); + m_MtaOleClipboard.setClipboard( pIDataObj ); } //------------------------------------------------------------------------ @@ -230,25 +228,26 @@ sal_Int8 SAL_CALL CWinClipbImpl::getRenderingCapabilities( ) throw( RuntimeExce void SAL_CALL CWinClipbImpl::flushClipboard( ) throw( RuntimeException ) { - MTAFlushClipboard( ); + if ( m_rCurrentClipbContent.is( ) ) + m_MtaOleClipboard.flushClipboard( ); } //------------------------------------------------------------------------ // //------------------------------------------------------------------------ -void SAL_CALL CWinClipbImpl::registerClipboardViewer( ) const +void SAL_CALL CWinClipbImpl::registerClipboardViewer( ) { - MTARegisterClipboardViewer( CWinClipbImpl::onClipboardContentChanged ); + m_MtaOleClipboard.registerClipViewer( CWinClipbImpl::onClipboardContentChanged ); } //------------------------------------------------------------------------ // //------------------------------------------------------------------------ -void SAL_CALL CWinClipbImpl::unregisterClipboardViewer( ) const +void SAL_CALL CWinClipbImpl::unregisterClipboardViewer( ) { - MTARegisterClipboardViewer( NULL ); + m_MtaOleClipboard.registerClipViewer( NULL ); } //------------------------------------------------------------------------ @@ -261,37 +260,37 @@ void SAL_CALL CWinClipbImpl::dispose() throw( RuntimeException ) !m_rOldClipbOwner.is( ) && !m_rCurrentClipbContent.is( ) && !m_rCurrentClipbOwner.is( ), - "Clipboard was not flushed before!" ); + "Clipboard was not flushed before shutdown!" ); } //------------------------------------------------------------------------ // //------------------------------------------------------------------------ -void CALLBACK CWinClipbImpl::onClipboardContentChanged( void ) +void WINAPI CWinClipbImpl::onClipboardContentChanged( void ) { ClearableMutexGuard aGuard( s_pCWinClipbImpl->m_aMutex ); Reference< XTransferable > xClipbContent; Reference< XClipboardOwner > xClipbOwner; - if ( s_pCWinClipbImpl->m_rOldClipbContent.is( ) && - s_pCWinClipbImpl->m_rOldClipbOwner.is( ) ) + if ( s_pCWinClipbImpl->m_rOldClipbContent.is( ) ) { // release the condition because of expected callbacks // to the clipboard service (remeber: the mutex is already // released) s_pCWinClipbImpl->m_pWinClipboard->m_aCondition.set( ); - s_pCWinClipbImpl->m_rOldClipbOwner->lostOwnership( - s_pCWinClipbImpl->m_pWinClipboard, s_pCWinClipbImpl->m_rOldClipbContent ); + // notify the old ClipboardOwner + if ( s_pCWinClipbImpl->m_rOldClipbOwner.is( ) ) + s_pCWinClipbImpl->m_rOldClipbOwner->lostOwnership( + s_pCWinClipbImpl->m_pWinClipboard, s_pCWinClipbImpl->m_rOldClipbContent ); s_pCWinClipbImpl->m_rOldClipbOwner = Reference< XClipboardOwner >( ); s_pCWinClipbImpl->m_rOldClipbContent = Reference< XTransferable >( ); } else if ( !s_pCWinClipbImpl->m_bSelfTriggered && - ( s_pCWinClipbImpl->m_rCurrentClipbContent.is( ) && - s_pCWinClipbImpl->m_rCurrentClipbOwner.is( ) ) ) + s_pCWinClipbImpl->m_rCurrentClipbContent.is( ) ) { // save the state variables locally xClipbContent = s_pCWinClipbImpl->m_rCurrentClipbContent; @@ -306,7 +305,8 @@ void CALLBACK CWinClipbImpl::onClipboardContentChanged( void ) s_pCWinClipbImpl->m_pWinClipboard->m_aCondition.set( ); // notify the old ClipboardOwner - xClipbOwner->lostOwnership( s_pCWinClipbImpl->m_pWinClipboard, xClipbContent ); + if ( xClipbOwner.is( ) ) + xClipbOwner->lostOwnership( s_pCWinClipbImpl->m_pWinClipboard, xClipbContent ); } s_pCWinClipbImpl->m_pWinClipboard->m_aCondition.set( ); |