Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormyheroyuki <myheroyuki@outlook.com>2023-09-20 15:21:17 +0300
committermyheroyuki <myheroyuki@outlook.com>2023-09-20 15:21:17 +0300
commitb37e5996d72426f03f16a6073511643a17747d95 (patch)
tree12ef4abf358592c3f5ef28e4c7925af00478900e /src
parent0a2e484dc6b70fbd2319c999a441a89dcdd101b4 (diff)
[REM-2977] add shortcut for 'send clipboard as keystrokes'
Diffstat (limited to 'src')
-rw-r--r--src/rcw.c4
-rw-r--r--src/remmina_pref.c6
-rw-r--r--src/remmina_pref.h1
-rw-r--r--src/remmina_pref_dialog.c3
-rw-r--r--src/remmina_pref_dialog.h1
-rw-r--r--src/remmina_protocol_widget.c2
-rw-r--r--src/remmina_protocol_widget.h2
7 files changed, 17 insertions, 2 deletions
diff --git a/src/rcw.c b/src/rcw.c
index 136ccc0d7..8d00965c5 100644
--- a/src/rcw.c
+++ b/src/rcw.c
@@ -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 */