Skip to content

Commit

Permalink
Don't let user to set media keybindings
Browse files Browse the repository at this point in the history
- It clashes with the system handling.
- There is Multimedia keys feature for that.
- Issue: #473

Signed-off-by: Jiří Janoušek <janousek.jiri@gmail.com>
  • Loading branch information
jiri-janousek committed Oct 13, 2018
1 parent 4f4ddbb commit b7b849c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/nuvolakit-runner/components/actions/ActionsHelper.vala
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,17 @@ public class Nuvola.ActionsHelper: GLib.Object, ActionsInterface {

public Drtgtk.SimpleAction simple_action(string group, string scope, string name, string? label, string? mnemo_label, string? icon, string? keybinding, owned Drtgtk.ActionCallback? callback) {
string? kbd = config.get_string("nuvola.keybindings." + name) ?? keybinding;
if (kbd == "") {
if (kbd == "" || is_multimedia_key(kbd)) {
kbd = null;
}
return new Drtgtk.SimpleAction(group, scope, name, label, mnemo_label, icon, kbd, (owned) callback);
}

public Drtgtk.ToggleAction toggle_action(string group, string scope, string name, string? label, string? mnemo_label, string? icon, string? keybinding, owned Drtgtk.ActionCallback? callback, Variant state) {
string? kbd = config.get_string("nuvola.keybindings." + name) ?? keybinding;
if (kbd == "" || is_multimedia_key(kbd)) {
kbd = null;
}
return new Drtgtk.ToggleAction(group, scope, name, label, mnemo_label, icon, kbd, (owned) callback, state);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ public class GlobalActionsKeyBinder : GLib.Object, ActionsKeyBinder {
}

public string? get_keybinding(string action) {
return config.get_string(CONF_PREFIX + action);
string keybinding = config.get_string(CONF_PREFIX + action);
if (keybinding != null && (keybinding == "" || is_multimedia_key(keybinding))) {
keybinding = null;
}
return keybinding;
}

public bool set_keybinding(string action, string? keybinding) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@

namespace Nuvola {

public static bool is_multimedia_key(string? keybinding) {
return keybinding != null && (keybinding.has_prefix("Audio") || keybinding.has_prefix("XF86Audio"));
}

public class KeybindingsSettings : Gtk.Grid {
private Drtgtk.Actions actions_reg;
private Config config;
Expand Down Expand Up @@ -136,8 +140,19 @@ public class KeybindingsSettings : Gtk.Grid {
view.show();
}

private bool check_not_multimedia_key(string keybinding) {
if (is_multimedia_key(keybinding)) {
set_error("Cannot set '%s'. Use Multimedia keys feature to handle multimedia keys.".printf(keybinding));
return false;
}
return true;
}

private void on_accel_edited(string path_string, uint accel_key, Gdk.ModifierType accel_mods, uint hardware_keycode) {
string keybinding = Gtk.accelerator_name(accel_key, accel_mods);
if (!check_not_multimedia_key(keybinding)) {
return;
}
Gtk.TreePath path = new Gtk.TreePath.from_string(path_string);
Gtk.TreeIter iter;
model.get_iter(out iter, path);
Expand All @@ -149,6 +164,7 @@ public class KeybindingsSettings : Gtk.Grid {
Drtgtk.Action? action = actions_reg.get_action(name);
return_if_fail(action != null);
action.keybinding = keybinding;
set_error(null);
}

private void on_accel_cleared(string path_string) {
Expand All @@ -162,11 +178,15 @@ public class KeybindingsSettings : Gtk.Grid {
Drtgtk.Action? action = actions_reg.get_action(name);
return_if_fail(action != null);
action.keybinding = null;
set_error(null);
}

private void on_glob_accel_edited(string path_string, uint accel_key, Gdk.ModifierType accel_mods, uint hardware_keycode) {
assert(global_keybindings != null);
string keybinding = Gtk.accelerator_name(accel_key, accel_mods);
if (!check_not_multimedia_key(keybinding)) {
return;
}
var path = new Gtk.TreePath.from_string(path_string);
Gtk.TreeIter iter;
model.get_iter(out iter, path);
Expand Down

0 comments on commit b7b849c

Please sign in to comment.