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. --- .../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 + 3 files changed, 28 insertions(+) (limited to 'source/blender/editors/space_view3d') 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