aboutsummaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-09-18 23:42:07 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-09 14:08:59 +0200
commit677ac164a953a90acff60e7b84b0091184f56464 (patch)
treee015357c23ab56326fae4217c25d294b6626b850 /main/src
parent2f1f04b3e80beaf2c7f333a14cb7e14eeafe935e (diff)
downloaddino-677ac164a953a90acff60e7b84b0091184f56464.tar.gz
Make Ctrl-Q accelerator user-configurable
Some devices, such as those using virtual keyboards such as Squeekboard, might find the Ctrl-Q accelerator annoying, as it can be easily mistyped.
Diffstat (limited to 'main/src')
-rw-r--r--main/src/ui/application.vala17
-rw-r--r--main/src/ui/settings_dialog.vala3
2 files changed, 19 insertions, 1 deletions
diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala
index 91d4dec4..a7aaf075 100644
--- a/main/src/ui/application.vala
+++ b/main/src/ui/application.vala
@@ -117,6 +117,8 @@ public class Dino.Ui.Application : Gtk.Application, Dino.Application {
}
private void create_actions() {
+ Dino.Entities.Settings settings = Dino.Application.get_default().settings;
+
SimpleAction accounts_action = new SimpleAction("accounts", null);
accounts_action.activate.connect(show_accounts_window);
add_action(accounts_action);
@@ -132,7 +134,20 @@ public class Dino.Ui.Application : Gtk.Application, Dino.Application {
SimpleAction quit_action = new SimpleAction("quit", null);
quit_action.activate.connect(quit);
add_action(quit_action);
- set_accels_for_action("app.quit", KEY_COMBINATION_QUIT);
+
+ if (settings.quit_ctrl_q) {
+ set_accels_for_action("app.quit", KEY_COMBINATION_QUIT);
+ }
+
+ settings.quit_ctrl_q_update.connect((active) =>
+ {
+ if (active) {
+ set_accels_for_action("app.quit", KEY_COMBINATION_QUIT);
+ }
+ else {
+ set_accels_for_action("app.quit", {null});
+ }
+ });
SimpleAction open_conversation_action = new SimpleAction("open-conversation", VariantType.INT32);
open_conversation_action.activate.connect((variant) => {
diff --git a/main/src/ui/settings_dialog.vala b/main/src/ui/settings_dialog.vala
index fc1eb678..14abc580 100644
--- a/main/src/ui/settings_dialog.vala
+++ b/main/src/ui/settings_dialog.vala
@@ -16,6 +16,7 @@ class SettingsDialog : Dialog {
[GtkChild] private unowned RadioButton encryption_radio_openpgp;
[GtkChild] private unowned CheckButton send_button_checkbutton;
[GtkChild] private unowned CheckButton enter_newline_checkbutton;
+ [GtkChild] private unowned CheckButton quit_ctrl_q_checkbutton;
Dino.Entities.Settings settings = Dino.Application.get_default().settings;
@@ -33,6 +34,7 @@ class SettingsDialog : Dialog {
send_button_checkbutton.active = settings.send_button;
enter_newline_checkbutton.active = settings.enter_newline;
enter_newline_checkbutton.sensitive = settings.send_button;
+ quit_ctrl_q_checkbutton.active = settings.quit_ctrl_q;
typing_checkbutton.toggled.connect(() => { settings.send_typing = typing_checkbutton.active; } );
marker_checkbutton.toggled.connect(() => { settings.send_marker = marker_checkbutton.active; } );
@@ -67,6 +69,7 @@ class SettingsDialog : Dialog {
enter_newline_checkbutton.active = visible;
}
});
+ quit_ctrl_q_checkbutton.toggled.connect(() => { settings.quit_ctrl_q = quit_ctrl_q_checkbutton.active; });
}
}