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
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs