diff options
Diffstat (limited to 'src/command/cmd_funcs.c')
-rw-r--r-- | src/command/cmd_funcs.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index ad9a2fb8..cc26bba2 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -93,6 +93,7 @@ #ifdef HAVE_GTK #include "ui/tray.h" +#include "tools/clipboard.h" #endif #ifdef HAVE_PYTHON @@ -8575,3 +8576,48 @@ cmd_reload(ProfWin *window, const char *const command, gchar **args) prefs_reload(); return TRUE; } + +gboolean +cmd_paste(ProfWin *window, const char *const command, gchar **args) +{ +#ifdef HAVE_GTK + char *clipboard_buffer = clipboard_get(); + + if (clipboard_buffer) { + switch (window->type) { + case WIN_MUC: + { + ProfMucWin *mucwin = (ProfMucWin*)window; + assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); + cl_ev_send_muc_msg(mucwin, clipboard_buffer, NULL); + break; + } + case WIN_CHAT: + { + ProfChatWin *chatwin = (ProfChatWin*)window; + assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); + cl_ev_send_msg(chatwin, clipboard_buffer, NULL); + break; + } + case WIN_PRIVATE: + { + ProfPrivateWin *privatewin = (ProfPrivateWin*)window; + assert(privatewin->memcheck == PROFPRIVATEWIN_MEMCHECK); + cl_ev_send_priv_msg(privatewin, clipboard_buffer, NULL); + break; + } + case WIN_CONSOLE: + case WIN_XML: + default: + cons_bad_cmd_usage(command); + break; + } + + free(clipboard_buffer); + } +#else + cons_show("This version of Profanity has not been built with GTK support enabled. It is needed for the clipboard feature to work."); +#endif + + return TRUE; +} |