diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/aqua/source/dtrans/aqua_clipboard.cxx | 2 | ||||
-rw-r--r-- | vcl/aqua/source/dtrans/aqua_clipboard.hxx | 6 | ||||
-rw-r--r-- | vcl/source/components/dtranscomp.cxx | 12 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 41 | ||||
-rw-r--r-- | vcl/unx/generic/dtrans/X11_clipboard.cxx | 8 | ||||
-rw-r--r-- | vcl/unx/generic/dtrans/X11_clipboard.hxx | 12 |
6 files changed, 53 insertions, 28 deletions
diff --git a/vcl/aqua/source/dtrans/aqua_clipboard.cxx b/vcl/aqua/source/dtrans/aqua_clipboard.cxx index 383c7488aa2f..eaaf7e8f0698 100644 --- a/vcl/aqua/source/dtrans/aqua_clipboard.cxx +++ b/vcl/aqua/source/dtrans/aqua_clipboard.cxx @@ -81,7 +81,7 @@ Sequence<OUString> clipboard_getSupportedServiceNames() AquaClipboard::AquaClipboard(NSPasteboard* pasteboard, bool bUseSystemPasteboard) : - WeakComponentImplHelper3<XSystemClipboard, XFlushableClipboard, XServiceInfo>(m_aMutex), + WeakComponentImplHelper4<XClipboardEx, XClipboardNotifier, XFlushableClipboard, XServiceInfo>(m_aMutex), mIsSystemPasteboard(bUseSystemPasteboard) { Reference<XComponentContext> xContext = comphelper::getProcessComponentContext(); diff --git a/vcl/aqua/source/dtrans/aqua_clipboard.hxx b/vcl/aqua/source/dtrans/aqua_clipboard.hxx index 2e7670588ede..855297fbcaf9 100644 --- a/vcl/aqua/source/dtrans/aqua_clipboard.hxx +++ b/vcl/aqua/source/dtrans/aqua_clipboard.hxx @@ -23,13 +23,12 @@ #include "DataFlavorMapping.hxx" #include <rtl/ustring.hxx> #include <sal/types.h> -#include <cppuhelper/compbase3.hxx> +#include <cppuhelper/compbase4.hxx> #include <com/sun/star/datatransfer/XTransferable.hpp> #include <com/sun/star/datatransfer/clipboard/XClipboardEx.hpp> #include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp> #include <com/sun/star/datatransfer/clipboard/XClipboardListener.hpp> #include <com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp> -#include <com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp> #include <com/sun/star/datatransfer/XMimeContentTypeFactory.hpp> #include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -64,7 +63,8 @@ class AquaClipboard; class AquaClipboard : public ::cppu::BaseMutex, - public ::cppu::WeakComponentImplHelper3< com::sun::star::datatransfer::clipboard::XSystemClipboard, + public ::cppu::WeakComponentImplHelper4< com::sun::star::datatransfer::clipboard::XClipboardEx, + com::sun::star::datatransfer::clipboard::XClipboardNotifier, com::sun::star::datatransfer::clipboard::XFlushableClipboard, com::sun::star::lang::XServiceInfo >, private ::boost::noncopyable 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 ); diff --git a/vcl/unx/generic/dtrans/X11_clipboard.cxx b/vcl/unx/generic/dtrans/X11_clipboard.cxx index 6325e19e7f1e..aec38f0303c3 100644 --- a/vcl/unx/generic/dtrans/X11_clipboard.cxx +++ b/vcl/unx/generic/dtrans/X11_clipboard.cxx @@ -46,9 +46,11 @@ using namespace x11; X11Clipboard::X11Clipboard( SelectionManager& rManager, Atom aSelection ) : - ::cppu::WeakComponentImplHelper2< - ::com::sun::star::datatransfer::clipboard::XSystemClipboard, - ::com::sun::star::lang::XServiceInfo + ::cppu::WeakComponentImplHelper4< + ::com::sun::star::datatransfer::clipboard::XClipboardEx, + ::com::sun::star::datatransfer::clipboard::XClipboardNotifier, + ::com::sun::star::lang::XServiceInfo, + ::com::sun::star::lang::XInitialization >( rManager.getMutex() ), m_rSelectionManager( rManager ), diff --git a/vcl/unx/generic/dtrans/X11_clipboard.hxx b/vcl/unx/generic/dtrans/X11_clipboard.hxx index 18c08b036f7e..ea4535819834 100644 --- a/vcl/unx/generic/dtrans/X11_clipboard.hxx +++ b/vcl/unx/generic/dtrans/X11_clipboard.hxx @@ -23,9 +23,9 @@ #include <X11_selection.hxx> #include <com/sun/star/datatransfer/clipboard/XClipboardEx.hpp> + #include <com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp> -#include <com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp> -#include <cppuhelper/compbase2.hxx> +#include <cppuhelper/compbase4.hxx> // ------------------------------------------------------------------------ @@ -34,9 +34,11 @@ namespace x11 { class X11Clipboard : - public ::cppu::WeakComponentImplHelper2 < - ::com::sun::star::datatransfer::clipboard::XSystemClipboard, - ::com::sun::star::lang::XServiceInfo + public ::cppu::WeakComponentImplHelper4 < + ::com::sun::star::datatransfer::clipboard::XClipboardEx, + ::com::sun::star::datatransfer::clipboard::XClipboardNotifier, + ::com::sun::star::lang::XServiceInfo, + ::com::sun::star::lang::XInitialization >, public SelectionAdaptor { |