summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-07-10 16:40:30 +0200
committerStephan Bergmann <sbergman@redhat.com>2013-07-10 17:08:57 +0200
commit60455c972b09ca02b18660c6fb3dafc03b30b2b5 (patch)
tree58eec185446de910ad735862ff4393b1501f9c6b /vcl/source
parentf19b16e0b0aba67c355010271a81cfe5420fab93 (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.cxx12
-rw-r--r--vcl/source/window/window.cxx41
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 );