diff options
-rw-r--r-- | data/ui/remmina_preferences.glade | 34 | ||||
-rw-r--r-- | src/rcw.c | 4 | ||||
-rw-r--r-- | src/remmina_pref.c | 6 | ||||
-rw-r--r-- | src/remmina_pref.h | 1 | ||||
-rw-r--r-- | src/remmina_pref_dialog.c | 3 | ||||
-rw-r--r-- | src/remmina_pref_dialog.h | 1 | ||||
-rw-r--r-- | src/remmina_protocol_widget.c | 2 | ||||
-rw-r--r-- | src/remmina_protocol_widget.h | 2 |
8 files changed, 51 insertions, 2 deletions
diff --git a/data/ui/remmina_preferences.glade b/data/ui/remmina_preferences.glade index 2ad943d20..13fd56710 100644 --- a/data/ui/remmina_preferences.glade +++ b/data/ui/remmina_preferences.glade @@ -1348,6 +1348,40 @@ It changes the background colour of connection names in the Remmina connection t <property name="width">2</property> </packing> </child> + <child> + <object class="GtkLabel" id="label_keyboard_clipboard"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">start</property> + <property name="margin-start">18</property> + <property name="margin-end">6</property> + <property name="margin-bottom">18</property> + <property name="label" translatable="yes">Send clipboard as keystrokes</property> + <property name="ellipsize">start</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">12</property> + </packing> + </child> + <child> + <object class="GtkButton" id="button_keyboard_clipboard"> + <property name="label" translatable="yes">Send-clipboard</property> + <property name="width-request">100</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="margin-start">6</property> + <property name="margin-end">18</property> + <property name="margin-bottom">18</property> + <signal name="clicked" handler="remmina_pref_dialog_on_key_chooser" swapped="no"/> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">12</property> + <property name="width">2</property> + </packing> + </child> </object> </child> </object> @@ -4191,6 +4191,10 @@ static gboolean rcw_hostkey_func(RemminaProtocolWidget *gp, guint keyval, gboole if (i < 0) i = gtk_notebook_get_n_pages(GTK_NOTEBOOK(priv->notebook)) - 1; gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook), i); + } else if (keyval == remmina_pref.shortcutkey_clipboard && !extrahardening) { + if (remmina_protocol_widget_plugin_receives_keystrokes(REMMINA_PROTOCOL_WIDGET(cnnobj->proto))) { + remmina_protocol_widget_send_clipboard((RemminaProtocolWidget*)cnnobj->proto, G_OBJECT(cnnobj->proto)); + } } else if (keyval == remmina_pref.shortcutkey_scale && !extrahardening) { if (gtk_widget_is_sensitive(GTK_WIDGET(priv->toolitem_scale))) { gtk_toggle_tool_button_set_active( diff --git a/src/remmina_pref.c b/src/remmina_pref.c index 0b8238ee3..eff6f47ae 100644 --- a/src/remmina_pref.c +++ b/src/remmina_pref.c @@ -647,6 +647,11 @@ void remmina_pref_init(void) else remmina_pref.shortcutkey_scale = GDK_KEY_s; + if (g_key_file_has_key(gkeyfile, "remmina_pref", "shortcutkey_clipboard", NULL)) + remmina_pref.shortcutkey_clipboard = g_key_file_get_integer(gkeyfile, "remmina_pref", "shortcutkey_clipboard", NULL); + else + remmina_pref.shortcutkey_clipboard = GDK_KEY_b; + if (g_key_file_has_key(gkeyfile, "remmina_pref", "shortcutkey_viewonly", NULL)) remmina_pref.shortcutkey_viewonly = g_key_file_get_integer(gkeyfile, "remmina_pref", "shortcutkey_viewonly", NULL); else @@ -874,6 +879,7 @@ gboolean remmina_pref_save(void) g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_nexttab", remmina_pref.shortcutkey_nexttab); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_prevtab", remmina_pref.shortcutkey_prevtab); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_scale", remmina_pref.shortcutkey_scale); + g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_clipboard", remmina_pref.shortcutkey_clipboard); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_grab", remmina_pref.shortcutkey_grab); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_multimon", remmina_pref.shortcutkey_multimon); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_viewonly", remmina_pref.shortcutkey_viewonly); diff --git a/src/remmina_pref.h b/src/remmina_pref.h index a59da3c09..b1c8d58f2 100644 --- a/src/remmina_pref.h +++ b/src/remmina_pref.h @@ -175,6 +175,7 @@ typedef struct _RemminaPref { guint shortcutkey_fullscreen; guint shortcutkey_autofit; guint shortcutkey_prevtab; + guint shortcutkey_clipboard; guint shortcutkey_nexttab; guint shortcutkey_dynres; guint shortcutkey_scale; diff --git a/src/remmina_pref_dialog.c b/src/remmina_pref_dialog.c index 96a4af937..e2401ac8b 100644 --- a/src/remmina_pref_dialog.c +++ b/src/remmina_pref_dialog.c @@ -319,6 +319,7 @@ void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data) remmina_pref.shortcutkey_prevtab = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_switch_tab_left)); remmina_pref.shortcutkey_nexttab = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_switch_tab_right)); remmina_pref.shortcutkey_scale = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_scaled)); + remmina_pref.shortcutkey_clipboard = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_clipboard)); remmina_pref.shortcutkey_multimon = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_multimon)); remmina_pref.shortcutkey_grab = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_grab_keyboard)); remmina_pref.shortcutkey_screenshot = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_screenshot)); @@ -534,6 +535,7 @@ static void remmina_pref_dialog_init(void) remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_switch_tab_left, remmina_pref.shortcutkey_prevtab); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_switch_tab_right, remmina_pref.shortcutkey_nexttab); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_scaled, remmina_pref.shortcutkey_scale); + remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_clipboard, remmina_pref.shortcutkey_clipboard); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_multimon, remmina_pref.shortcutkey_multimon); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_grab_keyboard, remmina_pref.shortcutkey_grab); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_screenshot, remmina_pref.shortcutkey_screenshot); @@ -756,6 +758,7 @@ GtkWidget *remmina_pref_dialog_new(gint default_tab, GtkWindow *parent) remmina_pref_dialog->button_keyboard_switch_tab_left = GTK_BUTTON(GET_OBJECT("button_keyboard_switch_tab_left")); remmina_pref_dialog->button_keyboard_switch_tab_right = GTK_BUTTON(GET_OBJECT("button_keyboard_switch_tabright")); remmina_pref_dialog->button_keyboard_scaled = GTK_BUTTON(GET_OBJECT("button_keyboard_scaled")); + remmina_pref_dialog->button_keyboard_clipboard = GTK_BUTTON(GET_OBJECT("button_keyboard_clipboard")); remmina_pref_dialog->button_keyboard_grab_keyboard = GTK_BUTTON(GET_OBJECT("button_keyboard_grab_keyboard")); remmina_pref_dialog->button_keyboard_multimon = GTK_BUTTON(GET_OBJECT("button_keyboard_multimon")); remmina_pref_dialog->button_keyboard_screenshot = GTK_BUTTON(GET_OBJECT("button_keyboard_screenshot")); diff --git a/src/remmina_pref_dialog.h b/src/remmina_pref_dialog.h index a0c01d432..c4bd6cd45 100644 --- a/src/remmina_pref_dialog.h +++ b/src/remmina_pref_dialog.h @@ -102,6 +102,7 @@ typedef struct _RemminaPrefDialog { GtkButton * button_keyboard_switch_tab_left; GtkButton * button_keyboard_switch_tab_right; GtkButton * button_keyboard_scaled; + GtkButton * button_keyboard_clipboard; GtkButton * button_keyboard_multimon; GtkButton * button_keyboard_grab_keyboard; GtkButton * button_keyboard_screenshot; diff --git a/src/remmina_protocol_widget.c b/src/remmina_protocol_widget.c index 1192b1906..b6915d44b 100644 --- a/src/remmina_protocol_widget.c +++ b/src/remmina_protocol_widget.c @@ -723,7 +723,7 @@ void remmina_protocol_widget_send_clip_strokes(GtkClipboard *clipboard, const gc return; } -void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget) +void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GObject*widget) { TRACE_CALL(__func__); GtkClipboard *clipboard; diff --git a/src/remmina_protocol_widget.h b/src/remmina_protocol_widget.h index afe4aee3d..6047a0d1a 100644 --- a/src/remmina_protocol_widget.h +++ b/src/remmina_protocol_widget.h @@ -170,7 +170,7 @@ void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *k gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp); /* Send to the plugin some keystrokes */ void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget); -void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget); +void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GObject *widget); /* Take screenshot of plugin */ gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd); /* Deal with the remimna connection window map/unmap events */ |