Keymap: cancel 3D viewport operations using Escape
While RMB was canceling, the check for Escape was overridden by the modal keymap, causing Escape to confirm. Resolve by: - Removing Escape binding from the modal keymap, rely on hard coded check as Escape to cancel is an assumption made in many places. - Move RMB hard-coded check into the modal keymap since it's non-default keymaps may use mouse buttons differently.
This commit is contained in:
@@ -6288,7 +6288,7 @@ def km_view3d_rotate_modal(_params):
|
||||
)
|
||||
|
||||
items.extend([
|
||||
("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
|
||||
("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
|
||||
("AXIS_SNAP_ENABLE", {"type": 'LEFT_ALT', "value": 'PRESS', "any": True}, None),
|
||||
("AXIS_SNAP_DISABLE", {"type": 'LEFT_ALT', "value": 'RELEASE', "any": True}, None),
|
||||
("AXIS_SNAP_ENABLE", {"type": 'RIGHT_ALT', "value": 'PRESS', "any": True}, None),
|
||||
@@ -6307,7 +6307,7 @@ def km_view3d_move_modal(_params):
|
||||
)
|
||||
|
||||
items.extend([
|
||||
("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
|
||||
("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
|
||||
])
|
||||
|
||||
return keymap
|
||||
@@ -6322,7 +6322,7 @@ def km_view3d_zoom_modal(_params):
|
||||
)
|
||||
|
||||
items.extend([
|
||||
("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
|
||||
("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
|
||||
])
|
||||
|
||||
return keymap
|
||||
@@ -6337,7 +6337,7 @@ def km_view3d_dolly_modal(_params):
|
||||
)
|
||||
|
||||
items.extend([
|
||||
("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
|
||||
("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
|
||||
])
|
||||
|
||||
return keymap
|
||||
|
||||
@@ -49,6 +49,7 @@ enum {
|
||||
|
||||
/* NOTE: these defines are saved in keymap files, do not change values but just add new ones */
|
||||
enum {
|
||||
VIEW_MODAL_CANCEL = 0, /* used for all view operations */
|
||||
VIEW_MODAL_CONFIRM = 1, /* used for all view operations */
|
||||
VIEWROT_MODAL_AXIS_SNAP_ENABLE = 2,
|
||||
VIEWROT_MODAL_AXIS_SNAP_DISABLE = 3,
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
void viewdolly_modal_keymap(wmKeyConfig *keyconf)
|
||||
{
|
||||
static const EnumPropertyItem modal_items[] = {
|
||||
{VIEW_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""},
|
||||
{VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""},
|
||||
|
||||
{VIEWROT_MODAL_SWITCH_ROTATE, "SWITCH_TO_ROTATE", 0, "Switch to Rotate"},
|
||||
@@ -139,7 +140,7 @@ static int viewdolly_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
event_code = VIEW_CONFIRM;
|
||||
}
|
||||
}
|
||||
else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
|
||||
else if (event->type == EVT_ESCKEY) {
|
||||
if (event->val == KM_PRESS) {
|
||||
event_code = VIEW_CANCEL;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
void viewmove_modal_keymap(wmKeyConfig *keyconf)
|
||||
{
|
||||
static const EnumPropertyItem modal_items[] = {
|
||||
{VIEW_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""},
|
||||
{VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""},
|
||||
|
||||
{VIEWROT_MODAL_SWITCH_ZOOM, "SWITCH_TO_ZOOM", 0, "Switch to Zoom"},
|
||||
@@ -62,6 +63,9 @@ static int viewmove_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
case VIEW_MODAL_CONFIRM:
|
||||
event_code = VIEW_CONFIRM;
|
||||
break;
|
||||
case VIEW_MODAL_CANCEL:
|
||||
event_code = VIEW_CANCEL;
|
||||
break;
|
||||
case VIEWROT_MODAL_SWITCH_ZOOM:
|
||||
WM_operator_name_call(C, "VIEW3D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL, event);
|
||||
event_code = VIEW_CONFIRM;
|
||||
@@ -81,7 +85,7 @@ static int viewmove_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
event_code = VIEW_CONFIRM;
|
||||
}
|
||||
}
|
||||
else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
|
||||
else if (event->type == EVT_ESCKEY) {
|
||||
if (event->val == KM_PRESS) {
|
||||
event_code = VIEW_CANCEL;
|
||||
}
|
||||
|
||||
@@ -93,6 +93,9 @@ static int viewroll_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
case VIEW_MODAL_CONFIRM:
|
||||
event_code = VIEW_CONFIRM;
|
||||
break;
|
||||
case VIEW_MODAL_CANCEL:
|
||||
event_code = VIEW_CANCEL;
|
||||
break;
|
||||
case VIEWROT_MODAL_SWITCH_MOVE:
|
||||
WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL, event);
|
||||
event_code = VIEW_CONFIRM;
|
||||
@@ -114,7 +117,7 @@ static int viewroll_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
event_code = VIEW_CONFIRM;
|
||||
}
|
||||
}
|
||||
else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
|
||||
else if (event->type == EVT_ESCKEY) {
|
||||
if (event->val == KM_PRESS) {
|
||||
event_code = VIEW_CANCEL;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
void viewrotate_modal_keymap(wmKeyConfig *keyconf)
|
||||
{
|
||||
static const EnumPropertyItem modal_items[] = {
|
||||
{VIEW_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""},
|
||||
{VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""},
|
||||
|
||||
{VIEWROT_MODAL_AXIS_SNAP_ENABLE, "AXIS_SNAP_ENABLE", 0, "Axis Snap", ""},
|
||||
@@ -305,6 +306,9 @@ static int viewrotate_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
case VIEW_MODAL_CONFIRM:
|
||||
event_code = VIEW_CONFIRM;
|
||||
break;
|
||||
case VIEW_MODAL_CANCEL:
|
||||
event_code = VIEW_CANCEL;
|
||||
break;
|
||||
case VIEWROT_MODAL_AXIS_SNAP_ENABLE:
|
||||
vod->axis_snap = true;
|
||||
event_code = VIEW_APPLY;
|
||||
@@ -333,7 +337,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
event_code = VIEW_CONFIRM;
|
||||
}
|
||||
}
|
||||
else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
|
||||
else if (event->type == EVT_ESCKEY) {
|
||||
if (event->val == KM_PRESS) {
|
||||
event_code = VIEW_CANCEL;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
void viewzoom_modal_keymap(wmKeyConfig *keyconf)
|
||||
{
|
||||
static const EnumPropertyItem modal_items[] = {
|
||||
{VIEW_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""},
|
||||
{VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""},
|
||||
|
||||
{VIEWROT_MODAL_SWITCH_ROTATE, "SWITCH_TO_ROTATE", 0, "Switch to Rotate"},
|
||||
@@ -355,6 +356,9 @@ static int viewzoom_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
case VIEW_MODAL_CONFIRM:
|
||||
event_code = VIEW_CONFIRM;
|
||||
break;
|
||||
case VIEW_MODAL_CANCEL:
|
||||
event_code = VIEW_CANCEL;
|
||||
break;
|
||||
case VIEWROT_MODAL_SWITCH_MOVE:
|
||||
WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL, event);
|
||||
event_code = VIEW_CONFIRM;
|
||||
@@ -380,7 +384,7 @@ static int viewzoom_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
event_code = VIEW_CONFIRM;
|
||||
}
|
||||
}
|
||||
else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
|
||||
else if (event->type == EVT_ESCKEY) {
|
||||
if (event->val == KM_PRESS) {
|
||||
event_code = VIEW_CANCEL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user