From bf60ce7d75949a8d6d53473d3b2430c162f5f897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 4 Sep 2014 22:44:53 +0200 Subject: Skip modes with common prefix if it does not match --- main.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index d1c0b07..5e7240e 100644 --- a/main.c +++ b/main.c @@ -103,6 +103,8 @@ static bool keymatch(Key *key0, Key *key1) { static KeyBinding *keybinding(Mode *mode, Key *key0, Key *key1) { for (; mode; mode = mode->parent) { + if (mode->common_prefix && !keymatch(key0, &mode->bindings->key[0])) + continue; for (KeyBinding *kb = mode->bindings; kb && (kb->key[0].code || kb->key[0].str[0]); kb++) { if (keymatch(key0, &kb->key[0]) && (!key1 || keymatch(key1, &kb->key[1]))) return kb; -- cgit v1.2.3