diff --git a/src/plugins/dbus3270/gobject.c b/src/plugins/dbus3270/gobject.c index 83ba239..f3b5d62 100644 --- a/src/plugins/dbus3270/gobject.c +++ b/src/plugins/dbus3270/gobject.c @@ -391,6 +391,12 @@ void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DB } } +void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context) +{ + gtk_clipboard_set_text(gtk_widget_get_clipboard(pw3270_get_toplevel(),GDK_SELECTION_CLIPBOARD),(gchar *) text, -1); + dbus_g_method_return(context,0); +} + void pw3270_dbus_set_script(PW3270Dbus *object, const gchar *text, int mode, DBusGMethodInvocation *context) { GtkWidget *widget = pw3270_get_terminal_widget(NULL); diff --git a/src/plugins/dbus3270/pw3270dbus.xml b/src/plugins/dbus3270/pw3270dbus.xml index 3b5b945..80a9cb5 100644 --- a/src/plugins/dbus3270/pw3270dbus.xml +++ b/src/plugins/dbus3270/pw3270dbus.xml @@ -61,6 +61,10 @@ + + + + diff --git a/src/plugins/dbus3270/service.h b/src/plugins/dbus3270/service.h index 4acf99c..247f36c 100644 --- a/src/plugins/dbus3270/service.h +++ b/src/plugins/dbus3270/service.h @@ -99,6 +99,8 @@ void pw3270_dbus_get_text_at(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context); void pw3270_dbus_cmp_text_at(PW3270Dbus *object, int row, int col, const gchar *text, DBusGMethodInvocation *context); void pw3270_dbus_input(PW3270Dbus *object, const gchar *utftext, DBusGMethodInvocation *context); + + void pw3270_dbus_set_clipboard(PW3270Dbus *object, const gchar *text, DBusGMethodInvocation *context); void pw3270_dbus_get_clipboard(PW3270Dbus *object, int row, int col, int len, DBusGMethodInvocation *context); G_END_DECLS diff --git a/src/plugins/rx3270/remote.cc b/src/plugins/rx3270/remote.cc index 65ad5ea..5307e57 100644 --- a/src/plugins/rx3270/remote.cc +++ b/src/plugins/rx3270/remote.cc @@ -1165,6 +1165,21 @@ int remote::get_next_unprotected(int baddr) int remote::set_clipboard(const char *text) { +#if defined(WIN32) + + return -1; + +#elif defined(HAVE_DBUS) + + DBusMessage * msg = create_message("setClipboard"); + if(msg) + { + dbus_message_append_args(msg, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); + return get_intval(call(msg)); + } + +#endif + return -1; } -- libgit2 0.21.2