From: Michael Jumper Date: Mon, 30 Apr 2012 06:12:58 +0000 (-0700) Subject: Store clipboard data in client data. X-Git-Url: http://git.alex.org.uk Store clipboard data in client data. --- diff --git a/include/client.h b/include/client.h index 306dbce..f3e4dad 100644 --- a/include/client.h +++ b/include/client.h @@ -82,6 +82,8 @@ typedef struct rdp_guac_client_data { guac_rdp_keysym_state_map keysym_state; + const char* clipboard; + } rdp_guac_client_data; typedef struct rdp_freerdp_context { diff --git a/src/client.c b/src/client.c index 87823ad..930f55c 100644 --- a/src/client.c +++ b/src/client.c @@ -367,6 +367,7 @@ int guac_client_init(guac_client* client, int argc, char** argv) { guac_client_data->rdp_inst = rdp_inst; guac_client_data->mouse_button_mask = 0; guac_client_data->current_surface = GUAC_DEFAULT_LAYER; + guac_client_data->clipboard = ""; /* Clear keysym state mapping and keymap */ memset(guac_client_data->keysym_state, 0, diff --git a/src/rdp_cliprdr.c b/src/rdp_cliprdr.c index db57bf8..44318bb 100644 --- a/src/rdp_cliprdr.c +++ b/src/rdp_cliprdr.c @@ -144,8 +144,16 @@ void guac_rdp_process_cb_data_response(guac_client* client, RDP_CB_DATA_RESPONSE_EVENT* event) { /* Received clipboard data */ - if (event->data[event->size - 1] == '\0') + if (event->data[event->size - 1] == '\0') { + + /* Store clipboard data */ + ((rdp_guac_client_data*) client->data)->clipboard = + strdup((char*) event->data); + + /* Send clipboard data */ guac_protocol_send_clipboard(client->socket, (char*) event->data); + + } else guac_client_log_error(client, "Clipboard data missing null terminator");