Commit: 6178014eaf1271ca2a83c38310cb2f2794127826 Author: Antonio Vazquez Date: Sun Jun 11 17:32:28 2017 +0200 Branches: greasepencil-object https://developer.blender.org/rB6178014eaf1271ca2a83c38310cb2f2794127826
Implement Ctrl+Tab key to swith modes The Tab key switch between GP mode and object mode or edit if it was in object mode. Ctrl+Tab switch between last mode =================================================================== M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_ops.c =================================================================== diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index 2926397be70..93e17f4ca44 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -131,8 +131,10 @@ static int gpencil_editmode_toggle_poll(bContext *C) return ED_gpencil_data_get_active(C) != NULL; } -static int gpencil_editmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) +static int gpencil_editmode_toggle_exec(bContext *C, wmOperator *op) { + const int back = RNA_int_get(op->ptr, "back"); + WorkSpace *workspace = CTX_wm_workspace(C); bGPdata *gpd = ED_gpencil_data_get_active(C); bool is_object = false; @@ -163,7 +165,7 @@ static int gpencil_editmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) if (is_object) { /* try to back previous mode */ - if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_EDITMODE) == 0)) { + if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_EDITMODE) == 0) && (back == 1)) { mode = ob->restore_mode; } ob->restore_mode = ob->mode; @@ -194,6 +196,8 @@ void GPENCIL_OT_editmode_toggle(wmOperatorType *ot) /* flags */ ot->flag = OPTYPE_UNDO | OPTYPE_REGISTER; + /* properties */ + RNA_def_int(ot->srna, "back", 0, 0, 1, "back", "1 to back previous mode", 0, 1); } /* Stroke Paint Mode Management */ @@ -208,8 +212,10 @@ static int gpencil_paintmode_toggle_poll(bContext *C) return ED_gpencil_data_get_active(C) != NULL; } -static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) +static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *op) { + const int back = RNA_int_get(op->ptr, "back"); + WorkSpace *workspace = CTX_wm_workspace(C); bGPdata *gpd = ED_gpencil_data_get_active(C); bool is_object = false; @@ -236,7 +242,7 @@ static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) if (is_object) { /* try to back previous mode */ - if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_PAINTMODE) == 0)) { + if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_PAINTMODE) == 0) && (back == 1)) { mode = ob->restore_mode; } ob->restore_mode = ob->mode; @@ -267,6 +273,8 @@ void GPENCIL_OT_paintmode_toggle(wmOperatorType *ot) /* flags */ ot->flag = OPTYPE_UNDO | OPTYPE_REGISTER; + /* properties */ + RNA_def_int(ot->srna, "back", 0, 0, 1, "back", "1 to back previous mode", 0, 1); } /* Stroke Scupt Mode Management */ @@ -281,8 +289,10 @@ static int gpencil_sculptmode_toggle_poll(bContext *C) return ED_gpencil_data_get_active(C) != NULL; } -static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) +static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *op) { + const int back = RNA_int_get(op->ptr, "back"); + WorkSpace *workspace = CTX_wm_workspace(C); bGPdata *gpd = ED_gpencil_data_get_active(C); bool is_object = false; @@ -309,7 +319,7 @@ static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) if (is_object) { /* try to back previous mode */ - if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_SCULPTMODE) == 0)) { + if ((ob->restore_mode) && ((gpd->flag & GP_DATA_STROKE_SCULPTMODE) == 0) && (back == 1)) { mode = ob->restore_mode; } ob->restore_mode = ob->mode; @@ -340,6 +350,8 @@ void GPENCIL_OT_sculptmode_toggle(wmOperatorType *ot) /* flags */ ot->flag = OPTYPE_UNDO | OPTYPE_REGISTER; + /* properties */ + RNA_def_int(ot->srna, "back", 0, 0, 1, "back", "1 to back previous mode", 0, 1); } /* ************************************************ */ diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c index fe924fa45fb..7c5d0072c97 100644 --- a/source/blender/editors/gpencil/gpencil_ops.c +++ b/source/blender/editors/gpencil/gpencil_ops.c @@ -236,8 +236,12 @@ static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf) /* ----------------------------------------------- */ /* Exit EditMode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); - + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); + RNA_int_set(kmi->ptr, "back", 0); + + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "back", 1); + /* Brush Settings */ /* NOTE: We cannot expose these in the standard keymap, as they will interfere with regular hotkeys * in other modes. However, when we are dealing with Stroke Edit Mode, we know for certain @@ -377,7 +381,11 @@ static void ed_keymap_gpencil_painting(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "wait_for_input", false); /* Exit PaintMode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", TABKEY, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", TABKEY, KM_PRESS, 0, 0); + RNA_int_set(kmi->ptr, "back", 0); + + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "back", 1); /* Selection */ ed_keymap_gpencil_selection(keymap); @@ -420,8 +428,12 @@ static void ed_keymap_gpencil_sculpting(wmKeyConfig *keyconf) keymap->poll = gp_stroke_sculptmode_poll; /* Exit SculptMode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", TABKEY, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", TABKEY, KM_PRESS, 0, 0); + RNA_int_set(kmi->ptr, "back", 0); + kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "back", 1); + /* Selection */ ed_keymap_gpencil_selection(keymap); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs