summaryrefslogtreecommitdiff
path: root/vcl/unx/generic/dtrans/X11_clipboard.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/generic/dtrans/X11_clipboard.cxx')
-rw-r--r--vcl/unx/generic/dtrans/X11_clipboard.cxx15
1 files changed, 11 insertions, 4 deletions
diff --git a/vcl/unx/generic/dtrans/X11_clipboard.cxx b/vcl/unx/generic/dtrans/X11_clipboard.cxx
index 4e6b953e1728..95d44a548eee 100644
--- a/vcl/unx/generic/dtrans/X11_clipboard.cxx
+++ b/vcl/unx/generic/dtrans/X11_clipboard.cxx
@@ -29,6 +29,7 @@
#include <uno/mapping.hxx>
#include <cppuhelper/factory.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <rtl/ref.hxx>
#include <rtl/tencinfo.h>
#if OSL_DEBUG_LEVEL > 1
@@ -57,16 +58,22 @@ X11Clipboard::X11Clipboard( SelectionManager& rManager, Atom aSelection ) :
#if OSL_DEBUG_LEVEL > 1
fprintf( stderr, "creating instance of X11Clipboard (this=%p)\n", this );
#endif
+}
- if( m_aSelection != None )
+css::uno::Reference<css::datatransfer::clipboard::XClipboard>
+X11Clipboard::create( SelectionManager& rManager, Atom aSelection )
+{
+ rtl::Reference<X11Clipboard> cb(new X11Clipboard(rManager, aSelection));
+ if( aSelection != None )
{
- m_rSelectionManager.registerHandler( m_aSelection, *this );
+ rManager.registerHandler( aSelection, *cb.get() );
}
else
{
- m_rSelectionManager.registerHandler( XA_PRIMARY, *this );
- m_rSelectionManager.registerHandler( m_rSelectionManager.getAtom( OUString("CLIPBOARD") ), *this );
+ rManager.registerHandler( XA_PRIMARY, *cb.get() );
+ rManager.registerHandler( rManager.getAtom( OUString("CLIPBOARD") ), *cb.get() );
}
+ return cb.get();
}
X11Clipboard::~X11Clipboard()