diff --git a/remmina/src/remmina_connection_window.c b/remmina/src/remmina_connection_window.c index ffb7c35c3f..b7001fbb17 100644 --- a/remmina/src/remmina_connection_window.c +++ b/remmina/src/remmina_connection_window.c @@ -3570,6 +3570,12 @@ static gboolean remmina_connection_window_hostkey_func(RemminaProtocolWidget* gp remmina_connection_holder_toolbar_minimize(GTK_WIDGET(gp), cnnhld); } + else if (keyval == remmina_pref.shortcutkey_viewonly) + { + remmina_file_set_int(cnnobj->remmina_file, "viewonly", + ( remmina_file_get_int(cnnobj->remmina_file, "viewonly", 0 ) + == 0 ) ? 1 : 0 ); + } else if (keyval == remmina_pref.shortcutkey_screenshot) { remmina_connection_holder_toolbar_screenshot(GTK_WIDGET(gp), diff --git a/remmina/src/remmina_pref.c b/remmina/src/remmina_pref.c index f15cd15b27..87d95d53dc 100644 --- a/remmina/src/remmina_pref.c +++ b/remmina/src/remmina_pref.c @@ -485,6 +485,11 @@ void remmina_pref_init(void) else remmina_pref.shortcutkey_scale = GDK_KEY_s; + 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 + remmina_pref.shortcutkey_viewonly = GDK_KEY_m; + if (g_key_file_has_key(gkeyfile, "remmina_pref", "shortcutkey_grab", NULL)) remmina_pref.shortcutkey_grab = g_key_file_get_integer(gkeyfile, "remmina_pref", "shortcutkey_grab", NULL); else @@ -754,6 +759,7 @@ void remmina_pref_save(void) 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_grab", remmina_pref.shortcutkey_grab); + g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_viewonly", remmina_pref.shortcutkey_viewonly); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_screenshot", remmina_pref.shortcutkey_screenshot); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_minimize", remmina_pref.shortcutkey_minimize); g_key_file_set_integer(gkeyfile, "remmina_pref", "shortcutkey_disconnect", remmina_pref.shortcutkey_disconnect); diff --git a/remmina/src/remmina_pref.h b/remmina/src/remmina_pref.h index d3c8fd9ab1..27616410cd 100644 --- a/remmina/src/remmina_pref.h +++ b/remmina/src/remmina_pref.h @@ -129,6 +129,7 @@ typedef struct _RemminaPref guint shortcutkey_nexttab; guint shortcutkey_scale; guint shortcutkey_grab; + guint shortcutkey_viewonly; guint shortcutkey_screenshot; guint shortcutkey_minimize; guint shortcutkey_disconnect; diff --git a/remmina/src/remmina_pref_dialog.c b/remmina/src/remmina_pref_dialog.c index 004c2bd5cd..46bce6bd56 100644 --- a/remmina/src/remmina_pref_dialog.c +++ b/remmina/src/remmina_pref_dialog.c @@ -212,6 +212,7 @@ void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data) remmina_pref.shortcutkey_scale = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_scaled)); 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)); + remmina_pref.shortcutkey_viewonly = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_viewonly)); remmina_pref.shortcutkey_minimize = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_minimize)); remmina_pref.shortcutkey_disconnect = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_disconnect)); remmina_pref.shortcutkey_toolbar = remmina_key_chooser_get_keyval(gtk_button_get_label(remmina_pref_dialog->button_keyboard_toolbar)); @@ -369,6 +370,7 @@ static void remmina_pref_dialog_init(void) 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_grab_keyboard, remmina_pref.shortcutkey_grab); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_screenshot, remmina_pref.shortcutkey_screenshot); + remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_viewonly, remmina_pref.shortcutkey_viewonly); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_minimize, remmina_pref.shortcutkey_minimize); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_disconnect, remmina_pref.shortcutkey_disconnect); remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_toolbar, remmina_pref.shortcutkey_toolbar); @@ -507,6 +509,7 @@ GtkDialog* remmina_pref_dialog_new(gint default_tab, GtkWindow *parent) remmina_pref_dialog->button_keyboard_scaled = GTK_BUTTON(GET_OBJECT("button_keyboard_scaled")); remmina_pref_dialog->button_keyboard_grab_keyboard = GTK_BUTTON(GET_OBJECT("button_keyboard_grab_keyboard")); remmina_pref_dialog->button_keyboard_screenshot = GTK_BUTTON(GET_OBJECT("button_keyboard_screenshot")); + remmina_pref_dialog->button_keyboard_viewonly = GTK_BUTTON(GET_OBJECT("button_keyboard_viewonly")); remmina_pref_dialog->button_keyboard_minimize = GTK_BUTTON(GET_OBJECT("button_keyboard_minimize")); remmina_pref_dialog->button_keyboard_disconnect = GTK_BUTTON(GET_OBJECT("button_keyboard_disconnect")); remmina_pref_dialog->button_keyboard_toolbar = GTK_BUTTON(GET_OBJECT("button_keyboard_toolbar")); diff --git a/remmina/src/remmina_pref_dialog.h b/remmina/src/remmina_pref_dialog.h index 7c02a2e7de..06ba2423e5 100644 --- a/remmina/src/remmina_pref_dialog.h +++ b/remmina/src/remmina_pref_dialog.h @@ -85,6 +85,7 @@ typedef struct _RemminaPrefDialog GtkButton *button_keyboard_scaled; GtkButton *button_keyboard_grab_keyboard; GtkButton *button_keyboard_screenshot; + GtkButton *button_keyboard_viewonly; GtkButton *button_keyboard_minimize; GtkButton *button_keyboard_disconnect; GtkButton *button_keyboard_toolbar; diff --git a/remmina/ui/remmina_preferences.glade b/remmina/ui/remmina_preferences.glade index 017df22f51..7824a1cd77 100644 --- a/remmina/ui/remmina_preferences.glade +++ b/remmina/ui/remmina_preferences.glade @@ -977,6 +977,35 @@ Author: Antenore Gatta 2 + + + True + False + start + True + View-only mode + start + + + 0 + 10 + + + + + VIEW-ONLY MODE + 100 + True + True + True + + + + 1 + 10 + 2 + +