diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-07-10 16:40:30 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-07-10 17:08:57 +0200 |
commit | 60455c972b09ca02b18660c6fb3dafc03b30b2b5 (patch) | |
tree | 58eec185446de910ad735862ff4393b1501f9c6b /vcl/source | |
parent | f19b16e0b0aba67c355010271a81cfe5420fab93 (diff) |
fdo#66718: Revert "fdo#46808, Adapt SystemClipboard UNO service to new style"
This reverts commit 2fe852386c9450014f84910b0a282d684f40b56a, see
<https://bugs.freedesktop.org/show_bug.cgi?id=66718#c8> for details. (On master
towards LO 4.2, this will be addressed differently, by modifying
2fe852386c9450014f84910b0a282d684f40b56a instead of reverting it, so this
libreoffice-4-1 commit is not a cherry-pick of any master commit.)
Conflicts:
dtrans/source/win32/clipb/WinClipboard.cxx
offapi/com/sun/star/datatransfer/clipboard/XSystemClipboard.idl
offapi/type_reference/types.rdb
vcl/ios/source/dtrans/ios_clipboard.cxx
vcl/ios/source/dtrans/ios_clipboard.hxx
vcl/source/window/window.cxx
Change-Id: Idb804196bc5693e4e8674d805edefd9d1ae7c178
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/components/dtranscomp.cxx | 12 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 41 |
2 files changed, 37 insertions, 16 deletions
diff --git a/vcl/source/components/dtranscomp.cxx b/vcl/source/components/dtranscomp.cxx index 650fce07f7fc..81ef30a9f40e 100644 --- a/vcl/source/components/dtranscomp.cxx +++ b/vcl/source/components/dtranscomp.cxx @@ -34,13 +34,13 @@ #include "com/sun/star/datatransfer/clipboard/XClipboardEx.hpp" #include "com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp" #include "com/sun/star/datatransfer/clipboard/XClipboardListener.hpp" -#include "com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp" #include "com/sun/star/datatransfer/dnd/XDragSource.hpp" #include "com/sun/star/datatransfer/dnd/XDropTarget.hpp" #include "com/sun/star/datatransfer/dnd/DNDConstants.hpp" #include "cppuhelper/compbase1.hxx" #include "cppuhelper/compbase2.hxx" +#include "cppuhelper/compbase3.hxx" #include "cppuhelper/implbase1.hxx" using namespace com::sun::star; @@ -53,8 +53,9 @@ namespace vcl { // generic implementation to satisfy SalInstance class GenericClipboard : - public cppu::WeakComponentImplHelper2 < - datatransfer::clipboard::XSystemClipboard, + public cppu::WeakComponentImplHelper3 < + datatransfer::clipboard::XClipboardEx, + datatransfer::clipboard::XClipboardNotifier, XServiceInfo > { @@ -68,8 +69,9 @@ class GenericClipboard : public: - GenericClipboard() : cppu::WeakComponentImplHelper2< - datatransfer::clipboard::XSystemClipboard, + GenericClipboard() : cppu::WeakComponentImplHelper3< + datatransfer::clipboard::XClipboardEx, + datatransfer::clipboard::XClipboardNotifier, XServiceInfo >( m_aMutex ) {} diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 1018bb80efcd..470f91225127 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -84,7 +84,6 @@ #include "com/sun/star/datatransfer/dnd/XDragSource.hpp" #include "com/sun/star/datatransfer/dnd/XDropTarget.hpp" #include "com/sun/star/datatransfer/clipboard/XClipboard.hpp" -#include "com/sun/star/datatransfer/clipboard/SystemClipboard.hpp" #include "com/sun/star/lang/XInitialization.hpp" #include "com/sun/star/lang/XComponent.hpp" #include "com/sun/star/lang/XServiceName.hpp" @@ -8434,15 +8433,28 @@ uno::Reference< XClipboard > Window::GetClipboard() { try { - uno::Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() ); - Reference<XSystemClipboard> xSystemClipboard; + uno::Reference< XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory() ); + + mpWindowImpl->mpFrameData->mxClipboard = uno::Reference< XClipboard >( xFactory->createInstance( OUString("com.sun.star.datatransfer.clipboard.SystemClipboard") ), UNO_QUERY ); + #if defined(UNX) && !defined(MACOSX) // unix clipboard needs to be initialized - xSystemClipboard = SystemClipboard::createUnix( xContext, Application::GetDisplayConnection(), "CLIPBOARD", vcl::createBmpConverter() ); -#else - xSystemClipboard = SystemClipboard::createDefault(xContext); + if( mpWindowImpl->mpFrameData->mxClipboard.is() ) + { + uno::Reference< XInitialization > xInit = uno::Reference< XInitialization >( mpWindowImpl->mpFrameData->mxClipboard, UNO_QUERY ); + + if( xInit.is() ) + { + Sequence< Any > aArgumentList( 3 ); + aArgumentList[ 0 ] = makeAny( Application::GetDisplayConnection() ); + aArgumentList[ 1 ] = makeAny( OUString("CLIPBOARD") ); + aArgumentList[ 2 ] = makeAny( vcl::createBmpConverter() ); + + xInit->initialize( aArgumentList ); + } + } #endif - mpWindowImpl->mpFrameData->mxClipboard.set( xSystemClipboard, UNO_QUERY ); } + // createInstance can throw any exception catch (const Exception&) { @@ -8469,12 +8481,19 @@ uno::Reference< XClipboard > Window::GetPrimarySelection() { try { - uno::Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() ); - #if defined(UNX) && !defined(MACOSX) - Reference<XSystemClipboard> xSystemClipboard = SystemClipboard::createUnix( xContext, Application::GetDisplayConnection(), "PRIMARY", vcl::createBmpConverter() ); - mpWindowImpl->mpFrameData->mxSelection = uno::Reference< XClipboard >( xSystemClipboard, UNO_QUERY ); + uno::Reference< XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory() ); + + Sequence< Any > aArgumentList( 3 ); + aArgumentList[ 0 ] = makeAny( Application::GetDisplayConnection() ); + aArgumentList[ 1 ] = makeAny( OUString("PRIMARY") ); + aArgumentList[ 2 ] = makeAny( vcl::createBmpConverter() ); + + mpWindowImpl->mpFrameData->mxSelection = uno::Reference< XClipboard >( xFactory->createInstanceWithArguments( + OUString("com.sun.star.datatransfer.clipboard.SystemClipboard"), aArgumentList ), UNO_QUERY ); # else + uno::Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() ); + static uno::Reference< XClipboard > s_xSelection( xContext->getServiceManager()->createInstanceWithContext( "com.sun.star.datatransfer.clipboard.GenericClipboard", xContext ), UNO_QUERY ); |