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
path: root/source
diff options
context:
space:
mode:
authorGermano Cavalcante <mano-wii>2020-09-01 15:37:43 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2020-09-01 15:39:06 +0300
commit526fbdec3b6a0fb574e4d0ebe43eead9c1078e39 (patch)
tree0cd1b37662fde0b6082ef0fd44cb4118b7f7082e /source
parent17cf5001016d3c37df33a13da7c34c417c1f0cc0 (diff)
Transform: Move some hardcoded keyitems to keymap_data in python
Keymaps must be customized by the user. But this is not the case for hardcoded keymaps. Also the repetition of hardcoded and user-defined keyitems may induce the user to think they have made a mistake or it is a bug. Differential Revision: https://developer.blender.org/D6454
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/transform/transform.c271
-rw-r--r--source/blender/editors/transform/transform.h3
m---------source/tools0
3 files changed, 63 insertions, 211 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 2fa291e7ae4..421a8e2d43e 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -560,94 +560,6 @@ static void viewRedrawPost(bContext *C, TransInfo *t)
#endif
}
-/* ************************** TRANSFORMATIONS **************************** */
-
-static void view_editmove(ushort UNUSED(event))
-{
-#if 0 // TRANSFORM_FIX_ME
- int refresh = 0;
- /* Regular: Zoom in */
- /* Shift: Scroll up */
- /* Ctrl: Scroll right */
- /* Alt-Shift: Rotate up */
- /* Alt-Ctrl: Rotate right */
-
- /* only work in 3D window for now
- * In the end, will have to send to event to a 2D window handler instead
- */
- if (Trans.flag & T_2D_EDIT) {
- return;
- }
-
- switch (event) {
- case WHEELUPMOUSE:
- if (G.qual & LR_SHIFTKEY) {
- if (G.qual & LR_ALTKEY) {
- G.qual &= ~LR_SHIFTKEY;
- persptoetsen(PAD2);
- G.qual |= LR_SHIFTKEY;
- }
- else {
- persptoetsen(PAD2);
- }
- }
- else if (G.qual & LR_CTRLKEY) {
- if (G.qual & LR_ALTKEY) {
- G.qual &= ~LR_CTRLKEY;
- persptoetsen(PAD4);
- G.qual |= LR_CTRLKEY;
- }
- else {
- persptoetsen(PAD4);
- }
- }
- else if (U.uiflag & USER_WHEELZOOMDIR) {
- persptoetsen(PADMINUS);
- }
- else {
- persptoetsen(PADPLUSKEY);
- }
-
- refresh = 1;
- break;
- case WHEELDOWNMOUSE:
- if (G.qual & LR_SHIFTKEY) {
- if (G.qual & LR_ALTKEY) {
- G.qual &= ~LR_SHIFTKEY;
- persptoetsen(PAD8);
- G.qual |= LR_SHIFTKEY;
- }
- else {
- persptoetsen(PAD8);
- }
- }
- else if (G.qual & LR_CTRLKEY) {
- if (G.qual & LR_ALTKEY) {
- G.qual &= ~LR_CTRLKEY;
- persptoetsen(PAD6);
- G.qual |= LR_CTRLKEY;
- }
- else {
- persptoetsen(PAD6);
- }
- }
- else if (U.uiflag & USER_WHEELZOOMDIR) {
- persptoetsen(PADPLUSKEY);
- }
- else {
- persptoetsen(PADMINUS);
- }
-
- refresh = 1;
- break;
- }
-
- if (refresh) {
- setTransformViewMatrices(&Trans);
- }
-#endif
-}
-
/* ************************************************* */
static bool transform_modal_item_poll(const wmOperator *op, int value)
@@ -770,6 +682,17 @@ wmKeyMap *transform_modal_keymap(wmKeyConfig *keyconf)
{TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Move", ""},
{TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""},
{TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""},
+
+ {TFM_MODAL_AUTOCONSTRAINT,
+ "AUTOCONSTRAIN",
+ 0,
+ "Automatically detects one direction for constraint",
+ ""},
+ {TFM_MODAL_CONSTRAINTPLANE,
+ "CONSTRAINPLANE",
+ 0,
+ "modifier that enables the plane type constraint",
+ ""},
{0, NULL, 0, NULL, NULL},
};
@@ -778,6 +701,25 @@ wmKeyMap *transform_modal_keymap(wmKeyConfig *keyconf)
keymap = WM_modalkeymap_ensure(keyconf, "Transform Modal Map", modal_items);
keymap->poll_modal_item = transform_modal_item_poll;
+ /* Default modal map values:
+ *
+ * \code{.c}
+ * WM_modalkeymap_add_item(keymap, EVT_RETKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM);
+ * WM_modalkeymap_add_item(keymap, EVT_ESCKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CANCEL);
+ * WM_modalkeymap_add_item(keymap, EVT_PAGEUPKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_AUTOIK_LEN_INC);
+ * WM_modalkeymap_add_item(
+ * keymap, EVT_PAGEDOWNKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_AUTOIK_LEN_DEC);
+ * WM_modalkeymap_add_item(keymap, EVT_GKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_TRANSLATE);
+ * WM_modalkeymap_add_item(keymap, EVT_RKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_ROTATE);
+ * WM_modalkeymap_add_item(keymap, EVT_SKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_RESIZE);
+ * WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, KM_ANY, 0, TFM_MODAL_AUTOCONSTRAINT);
+ * WM_modalkeymap_add_item(
+ * keymap, EVT_LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONSTRAINTPLANE);
+ * WM_modalkeymap_add_item(
+ * keymap, EVT_RIGHTSHIFTKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONSTRAINTPLANE);
+ * \endcode
+ */
+
return keymap;
}
@@ -887,6 +829,7 @@ int transformEvent(TransInfo *t, const wmEvent *event)
handled = true;
}
/* handle modal keymap first */
+ /* enforce redraw of transform when modifiers are used */
else if (event->type == EVT_MODAL_MAP) {
switch (event->val) {
case TFM_MODAL_CANCEL:
@@ -1147,40 +1090,7 @@ int transformEvent(TransInfo *t, const wmEvent *event)
t->redraw |= TREDRAW_SOFT;
}
break;
- /* Those two are only handled in transform's own handler, see T44634! */
- case TFM_MODAL_EDGESLIDE_UP:
- case TFM_MODAL_EDGESLIDE_DOWN:
- default:
- break;
- }
- }
- /* else do non-mapped events */
- else if (event->val == KM_PRESS) {
- switch (event->type) {
- case EVT_ESCKEY:
- case RIGHTMOUSE:
- t->state = TRANS_CANCEL;
- handled = true;
- break;
-
- case EVT_SPACEKEY:
- case EVT_PADENTER:
- case EVT_RETKEY:
- if (event->is_repeat) {
- break;
- }
- t->state = TRANS_CONFIRM;
- handled = true;
- break;
-
- /* enforce redraw of transform when modifiers are used */
- case EVT_LEFTSHIFTKEY:
- case EVT_RIGHTSHIFTKEY:
- t->modifiers |= MOD_CONSTRAINT_PLANE;
- t->redraw |= TREDRAW_HARD;
- handled = true;
- break;
- case MIDDLEMOUSE:
+ case TFM_MODAL_AUTOCONSTRAINT:
if ((t->flag & T_NO_CONSTRAINT) == 0) {
/* exception for switching to dolly, or trackball, in camera view */
if (t->flag & T_CAMERA) {
@@ -1206,59 +1116,21 @@ int transformEvent(TransInfo *t, const wmEvent *event)
handled = true;
}
break;
- case EVT_GKEY:
- if (event->is_repeat) {
- break;
- }
- /* only switch when... */
- if (t->mode != TFM_TRANSLATION && transform_mode_is_changeable(t->mode)) {
- restoreTransObjects(t);
- resetTransModal(t);
- resetTransRestrictions(t);
- transform_mode_init(t, NULL, TFM_TRANSLATION);
- initSnapping(t, NULL); // need to reinit after mode change
- t->redraw |= TREDRAW_HARD;
- handled = true;
- }
- break;
- case EVT_SKEY:
- if (event->is_repeat) {
- break;
- }
- /* only switch when... */
- if (t->mode != TFM_RESIZE && transform_mode_is_changeable(t->mode)) {
- restoreTransObjects(t);
- resetTransModal(t);
- resetTransRestrictions(t);
- transform_mode_init(t, NULL, TFM_RESIZE);
- initSnapping(t, NULL); // need to reinit after mode change
- t->redraw |= TREDRAW_HARD;
- handled = true;
- }
+ case TFM_MODAL_CONSTRAINTPLANE:
+ t->modifiers |= MOD_CONSTRAINT_PLANE;
+ t->redraw |= TREDRAW_HARD;
+ handled = true;
break;
- case EVT_RKEY:
- if (event->is_repeat) {
- break;
- }
- /* only switch when... */
- if (!(t->options & CTX_TEXTURE)) {
- if (transform_mode_is_changeable(t->mode)) {
- restoreTransObjects(t);
- resetTransModal(t);
- resetTransRestrictions(t);
-
- if (t->mode == TFM_ROTATION) {
- transform_mode_init(t, NULL, TFM_TRACKBALL);
- }
- else {
- transform_mode_init(t, NULL, TFM_ROTATION);
- }
- initSnapping(t, NULL); // need to reinit after mode change
- t->redraw |= TREDRAW_HARD;
- handled = true;
- }
- }
+ /* Those two are only handled in transform's own handler, see T44634! */
+ case TFM_MODAL_EDGESLIDE_UP:
+ case TFM_MODAL_EDGESLIDE_DOWN:
+ default:
break;
+ }
+ }
+ /* Else do non-mapped events. */
+ else if (event->val == KM_PRESS) {
+ switch (event->type) {
case EVT_CKEY:
if (event->is_repeat) {
break;
@@ -1295,17 +1167,6 @@ int transformEvent(TransInfo *t, const wmEvent *event)
handled = true;
}
break;
- case EVT_PAGEUPKEY:
- case WHEELDOWNMOUSE:
- if (t->flag & T_AUTOIK) {
- transform_autoik_update(t, 1);
- }
- else {
- view_editmove(event->type);
- }
- t->redraw = TREDRAW_HARD;
- handled = true;
- break;
case EVT_PADMINUS:
if (event->alt && t->flag & T_PROP_EDIT) {
t->prop_size /= (t->modifiers & MOD_PRECISION) ? 1.01f : 1.1f;
@@ -1314,17 +1175,6 @@ int transformEvent(TransInfo *t, const wmEvent *event)
handled = true;
}
break;
- case EVT_PAGEDOWNKEY:
- case WHEELUPMOUSE:
- if (t->flag & T_AUTOIK) {
- transform_autoik_update(t, -1);
- }
- else {
- view_editmove(event->type);
- }
- t->redraw = TREDRAW_HARD;
- handled = true;
- break;
case EVT_LEFTALTKEY:
case EVT_RIGHTALTKEY:
if (ELEM(t->spacetype, SPACE_SEQ, SPACE_VIEW3D)) {
@@ -1357,31 +1207,30 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
else if (event->val == KM_RELEASE) {
switch (event->type) {
- case EVT_LEFTSHIFTKEY:
- case EVT_RIGHTSHIFTKEY:
- t->modifiers &= ~MOD_CONSTRAINT_PLANE;
- t->redraw |= TREDRAW_HARD;
- handled = true;
- break;
-
- case MIDDLEMOUSE:
- if ((t->flag & T_NO_CONSTRAINT) == 0) {
- t->modifiers &= ~MOD_CONSTRAINT_SELECT;
- postSelectConstraint(t);
- t->redraw |= TREDRAW_HARD;
- handled = true;
- }
- break;
case EVT_LEFTALTKEY:
case EVT_RIGHTALTKEY:
+ /* TODO: Modal Map */
if (ELEM(t->spacetype, SPACE_SEQ, SPACE_VIEW3D)) {
t->flag &= ~T_ALT_TRANSFORM;
t->redraw |= TREDRAW_HARD;
handled = true;
}
break;
- default:
+ default: {
+ /* Disable modifiers. */
+ int modifiers = t->modifiers;
+ modifiers &= ~MOD_CONSTRAINT_SELECT;
+ modifiers &= ~MOD_CONSTRAINT_PLANE;
+ if (modifiers != t->modifiers) {
+ if (t->modifiers & MOD_CONSTRAINT_SELECT) {
+ postSelectConstraint(t);
+ }
+ t->modifiers = modifiers;
+ t->redraw |= TREDRAW_HARD;
+ handled = true;
+ }
break;
+ }
}
/* confirm transform if launch key is released after mouse move */
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 6356144d77a..9618e0d1bb9 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -575,6 +575,9 @@ enum {
TFM_MODAL_PROPSIZE = 26,
/* node editor insert offset (aka auto-offset) direction toggle */
TFM_MODAL_INSERTOFS_TOGGLE_DIR = 27,
+
+ TFM_MODAL_AUTOCONSTRAINT = 28,
+ TFM_MODAL_CONSTRAINTPLANE = 29,
};
bool initTransform(struct bContext *C,
diff --git a/source/tools b/source/tools
-Subproject f4aa2de034d359bf85c6a0f90c0d045c5858eb8
+Subproject 2afbb8ec472cac5102eb239f57b006f8c938768