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:
authorTon Roosendaal <ton@blender.org>2009-01-30 21:18:41 +0300
committerTon Roosendaal <ton@blender.org>2009-01-30 21:18:41 +0300
commit480be71514a010549b62c302e2bb1216c4339b0c (patch)
tree4bad708e39a5eed6945d96a149dd8e92e30a19d1 /source/blender/windowmanager/intern/wm_keymap.c
parent128c8167afa003984b7446ad53915c79f872fdbf (diff)
2.5
- Edit mesh: Add ctrl+click add vertex or extrude. I've made it not move the 3d cursor in that case. Also found out tweak events conflicted with existing keymap definitions; on tweak failure (= no mousemove) it now passes on the mouse event as 'mouse down' for the remaining keymaps to check. These then actually respond to mouse-up instead of down... The location in the keymaps where tweaks get generated remains important. Examples: 1 - 'select' mouse-handler, operator return pass-through 2 - tweak handler checks, and makes tweak event 3 - grabber responds to tweak event 1 - ctrl+mouse tweak handler checks, makes tweak event, or passes event on 2 - if tweak event, it runs lasso 3 - else when passed on, ctrl+click extrude happens In the first case, select works on mouse-down, immediate. In the second case, extrude happens on mouse-release, even though the keymap defined mouse-press. This will make designing nice balanced keymaps still not simple; especially because you can't tell operators to pass on the key... although we can add the convention that select-mouse operators always pass on to enable tweaks. Still a good reason to wait with custom keymaps when this is fully settled!
Diffstat (limited to 'source/blender/windowmanager/intern/wm_keymap.c')
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 46a5c45a30d..14cdf919ff9 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -111,25 +111,6 @@ wmKeymapItem *WM_keymap_verify_item(ListBase *lb, char *idname, short type, shor
return kmi;
}
-/* if item was added, then replace */
-wmKeymapItem *WM_keymap_set_item(ListBase *lb, char *idname, short type, short val, int modifier, short keymodifier)
-{
- wmKeymapItem *kmi;
-
- for(kmi= lb->first; kmi; kmi= kmi->next)
- if(strncmp(kmi->idname, idname, OP_MAX_TYPENAME)==0)
- break;
- if(kmi==NULL) {
- kmi= MEM_callocN(sizeof(wmKeymapItem), "keymap entry");
-
- BLI_addtail(lb, kmi);
- BLI_strncpy(kmi->idname, idname, OP_MAX_TYPENAME);
- }
- keymap_event_set(kmi, type, val, modifier, keymodifier);
- keymap_properties_set(kmi);
- return kmi;
-}
-
/* always add item */
wmKeymapItem *WM_keymap_add_item(ListBase *lb, char *idname, short type, short val, int modifier, short keymodifier)
{
@@ -143,6 +124,15 @@ wmKeymapItem *WM_keymap_add_item(ListBase *lb, char *idname, short type, short v
return kmi;
}
+/* enables tweak for mouse/modifier combo
+ on tweak fail, it passes on event with 'val=1', so other keymap items can test */
+wmKeymapItem *WM_keymap_tweak(ListBase *lb, short type, short val, int modifier, short keymodifier)
+{
+ wmKeymapItem *km= WM_keymap_add_item(lb, "WM_OT_tweak_gesture", type, val, modifier, keymodifier);
+ km->is_tweak= 1;
+}
+
+
/* ****************** storage in WM ************ */
/* name id's are for storing general or multiple keymaps,