diff options
author | bhatman1441 <blackhat1441@protonmail.com> | 2023-08-11 20:01:25 +0300 |
---|---|---|
committer | bhatman1441 <blackhat1441@protonmail.com> | 2023-08-11 20:01:25 +0300 |
commit | 9e2bd959c6f40f364635ee3e726f3e3641dee0a7 (patch) | |
tree | 062a3b5163ac01f083e08ae4b528268aac08142b | |
parent | 12777701281ec07f2aefa46fb55637ad2844209b (diff) | |
parent | 5c11e8f181d03819643dfdc6e0035cd8fa72e218 (diff) |
Merge branch 'host-key-combo' into 'master'
New feature: Allow user to specify use of modifiers when changing key preferences
See merge request Remmina/Remmina!2523
-rw-r--r-- | data/ui/remmina_key_chooser.glade | 43 | ||||
-rw-r--r-- | src/remmina_key_chooser.c | 14 |
2 files changed, 55 insertions, 2 deletions
diff --git a/data/ui/remmina_key_chooser.glade b/data/ui/remmina_key_chooser.glade index 2e7710ef4..f8edb45dd 100644 --- a/data/ui/remmina_key_chooser.glade +++ b/data/ui/remmina_key_chooser.glade @@ -18,7 +18,7 @@ </object> <object class="GtkDialog" id="KeyChooserDialog"> <property name="width_request">250</property> - <property name="height_request">100</property> + <property name="height_request">200</property> <property name="can_focus">False</property> <property name="title" translatable="yes">Choose a new key</property> <property name="resizable">False</property> @@ -33,6 +33,7 @@ <object class="GtkButtonBox" id="dialog-action_area1"> <property name="can_focus">False</property> <property name="layout_style">end</property> + <property name="halign">center</property> <child> <object class="GtkButton" id="button_remove"> <property name="label">button</property> @@ -71,6 +72,44 @@ </packing> </child> <child> + <object class="GtkGrid" id="dialog-grid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="row-spacing">5</property> + <property name="column-spacing">7</property> + <child> + <object class="GtkLabel" id="label_option_key_modifier"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="tooltip-text" translatable="yes">Allow key modifiers</property> + <property name="halign">center</property> + <property name="margin-start">18</property> + <property name="margin-end">6</property> + <property name="label" translatable="yes">Allow key modifiers</property> + <property name="justify">right</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="switch_option_key_modifier"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="margin-end">18</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + <property name="width">2</property> + </packing> + </child> + </object> + </child> + <child> <object class="GtkEventBox" id="eventbox_key_chooser"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -86,7 +125,7 @@ <packing> <property name="expand">True</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> </object> diff --git a/src/remmina_key_chooser.c b/src/remmina_key_chooser.c index 876eb9d84..69a87c75b 100644 --- a/src/remmina_key_chooser.c +++ b/src/remmina_key_chooser.c @@ -52,6 +52,14 @@ static gboolean remmina_key_chooser_dialog_on_key_press(GtkWidget *widget, GdkEv return TRUE; } +/* User option to use key modifiers when selecting keyboard shortcuts */ +void remmina_key_chooser_dialog_set_option_modifier(GtkWidget *widget, gboolean state, RemminaKeyChooserArguments *arguments) +{ + TRACE_CALL(__func__); + gtk_switch_set_state(GTK_SWITCH(widget), state); + arguments->use_modifiers = state; +} + /* Show a key chooser dialog and return the keyval for the selected key */ RemminaKeyChooserArguments* remmina_key_chooser_new(GtkWindow *parent_window, gboolean use_modifiers) { @@ -66,9 +74,15 @@ RemminaKeyChooserArguments* remmina_key_chooser_new(GtkWindow *parent_window, gb /* Setup the dialog */ dialog = GTK_DIALOG(gtk_builder_get_object(builder, "KeyChooserDialog")); gtk_window_set_transient_for(GTK_WINDOW(dialog), parent_window); + + /* Connect the key modifier switch signal */ + g_signal_connect(gtk_builder_get_object(builder, "switch_option_key_modifier"), "state-set", + G_CALLBACK(remmina_key_chooser_dialog_set_option_modifier), arguments); + /* Connect the GtkEventBox signal */ g_signal_connect(gtk_builder_get_object(builder, "eventbox_key_chooser"), "key-press-event", G_CALLBACK(remmina_key_chooser_dialog_on_key_press), arguments); + /* Show the dialog and destroy it after the use */ arguments->response = gtk_dialog_run(dialog); gtk_widget_destroy(GTK_WIDGET(dialog)); |