From a3f5d4cb147d7f1186e9614c1f253efcd7b562ec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 5 Jul 2018 21:28:25 +0200 Subject: Keymap: Make Ctrl-Tab toggles pose mode Showing a pie menu is redundant since tab is already mapped to edit mode. Bypass the menu for pose mode toggle. --- source/blender/editors/object/object_ops.c | 6 ++++- .../blender/editors/space_view3d/view3d_buttons.c | 26 ++++++++++++++++++++++ .../blender/editors/space_view3d/view3d_intern.h | 1 + source/blender/editors/space_view3d/view3d_ops.c | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index cae8005c86c..43d993531bc 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -297,7 +297,11 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT); RNA_boolean_set(kmi->ptr, "toggle", true); - kmi = WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_object_mode_pie", TABKEY, KM_PRESS, KM_CTRL, 0); +#if 0 + WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_object_mode_pie", TABKEY, KM_PRESS, KM_CTRL, 0); +#else + WM_keymap_add_item(keymap, "VIEW3D_OT_object_mode_pie_or_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); +#endif #ifdef USE_WM_KEYMAP_27X WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0); diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index f5e8bf10817..bcf9a7c4ad1 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -1222,3 +1222,29 @@ void VIEW3D_OT_properties(wmOperatorType *ot) /* flags */ ot->flag = 0; } + +static int view3d_object_mode_menu(bContext *C, wmOperator *UNUSED(op)) +{ + Object *ob = CTX_data_active_object(C); + if (ob->type == OB_ARMATURE) { + ED_object_mode_toggle(C, OB_MODE_POSE); + return OPERATOR_CANCELLED; + } + else { + UI_pie_menu_invoke(C, "VIEW3D_MT_object_mode_pie", CTX_wm_window(C)->eventstate); + return OPERATOR_CANCELLED; + } +} + +void VIEW3D_OT_object_mode_pie_or_toggle(wmOperatorType *ot) +{ + ot->name = "Object Mode Menu"; + ot->description = ""; + ot->idname = "VIEW3D_OT_object_mode_pie_or_toggle"; + + ot->exec = view3d_object_mode_menu; + ot->poll = ED_operator_view3d_active; + + /* flags */ + ot->flag = 0; +} diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 1b6e4213513..b74a40969a1 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -216,6 +216,7 @@ void viewdolly_modal_keymap(struct wmKeyConfig *keyconf); /* view3d_buttons.c */ void VIEW3D_OT_properties(struct wmOperatorType *ot); +void VIEW3D_OT_object_mode_pie_or_toggle(struct wmOperatorType *ot); void view3d_buttons_register(struct ARegionType *art); /* view3d_camera_control.c */ diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 4d5e6661bd0..00f0dea8fe2 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -212,6 +212,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_pastebuffer); WM_operatortype_append(VIEW3D_OT_properties); + WM_operatortype_append(VIEW3D_OT_object_mode_pie_or_toggle); WM_operatortype_append(VIEW3D_OT_toolshelf); WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid); -- cgit v1.2.3