Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/windowmanager/intern/wm_keymap.c')
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 25bcf1967ea..f955abaed53 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -460,8 +460,11 @@ bool WM_keymap_poll(bContext *C, wmKeyMap *keymap)
if (UNLIKELY(BLI_listbase_is_empty(&keymap->items))) {
/* Empty key-maps may be missing more there may be a typo in the name.
- * Warn early to avoid losing time investigating each case. */
- CLOG_WARN(WM_LOG_KEYMAPS, "empty keymap '%s'", keymap->idname);
+ * Warn early to avoid losing time investigating each case.
+ * When developing a customized Blender though you may want empty keymaps. */
+ if (!U.app_template[0]) {
+ CLOG_WARN(WM_LOG_KEYMAPS, "empty keymap '%s'", keymap->idname);
+ }
}
if (keymap->poll != NULL) {
@@ -481,13 +484,20 @@ static void keymap_event_set(
kmi->shift = kmi->ctrl = kmi->alt = kmi->oskey = KM_ANY;
}
else {
- kmi->shift = (modifier & KM_SHIFT) ? KM_MOD_FIRST :
- ((modifier & KM_SHIFT2) ? KM_MOD_SECOND : false);
- kmi->ctrl = (modifier & KM_CTRL) ? KM_MOD_FIRST :
- ((modifier & KM_CTRL2) ? KM_MOD_SECOND : false);
- kmi->alt = (modifier & KM_ALT) ? KM_MOD_FIRST : ((modifier & KM_ALT2) ? KM_MOD_SECOND : false);
- kmi->oskey = (modifier & KM_OSKEY) ? KM_MOD_FIRST :
- ((modifier & KM_OSKEY2) ? KM_MOD_SECOND : false);
+ /* Only one of the flags should be set. */
+ BLI_assert(((modifier & (KM_SHIFT | KM_SHIFT_ANY)) != (KM_SHIFT | KM_SHIFT_ANY)) &&
+ ((modifier & (KM_CTRL | KM_CTRL_ANY)) != (KM_CTRL | KM_CTRL_ANY)) &&
+ ((modifier & (KM_ALT | KM_ALT_ANY)) != (KM_ALT | KM_ALT_ANY)) &&
+ ((modifier & (KM_OSKEY | KM_OSKEY_ANY)) != (KM_OSKEY | KM_OSKEY_ANY)));
+
+ kmi->shift = ((modifier & KM_SHIFT) ? KM_MOD_HELD :
+ ((modifier & KM_SHIFT_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->ctrl = ((modifier & KM_CTRL) ? KM_MOD_HELD :
+ ((modifier & KM_CTRL_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->alt = ((modifier & KM_ALT) ? KM_MOD_HELD :
+ ((modifier & KM_ALT_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->oskey = ((modifier & KM_OSKEY) ? KM_MOD_HELD :
+ ((modifier & KM_OSKEY_ANY) ? KM_ANY : KM_NOTHING));
}
}
@@ -1161,7 +1171,6 @@ int WM_keymap_item_raw_to_string(const short shift,
buf[0] = '\0';
- /* TODO: support order (KM_SHIFT vs. KM_SHIFT2) ? */
if (shift == KM_ANY && ctrl == KM_ANY && alt == KM_ANY && oskey == KM_ANY) {
/* Don't show anything for any mapping. */
}