Fix T67084: Modal keymaps could show the wrong shortcut
WM_modalkeymap_operator_items_to_string() wasnt checking WM_keymap_active(), so it was possible that e.g. when using the Industry Compatible keymap, the shortcut from the Blender keymap was shown. This also fixes the (now exposed) bug that the Industry Compatible keymap would not have a ADD_CUT_CLOSED kmi defined for the Knife Tool [mandatory for the status bar]. Maniphest Tasks: T67084 Differential Revision: https://developer.blender.org/D6748
This commit is contained in:
parent
f7ca86369d
commit
36d09d9029
Notes:
blender-bot
2023-02-14 08:47:25 +01:00
Referenced by issue #67084, Knife tool show wrong shortcut key with industry key map.
|
@ -3444,7 +3444,7 @@ def km_knife_tool_modal_map(_params):
|
|||
("PANNING", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, None),
|
||||
("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None),
|
||||
("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None),
|
||||
("CONFIRM", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "any": True}, None),
|
||||
("ADD_CUT_CLOSED", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "any": True}, None),
|
||||
("ADD_CUT", {"type": 'LEFTMOUSE', "value": 'ANY', "any": True}, None),
|
||||
("NEW_CUT", {"type": 'E', "value": 'PRESS'}, None),
|
||||
("SNAP_MIDPOINTS_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": False}, None),
|
||||
|
|
|
@ -5415,8 +5415,9 @@ void WM_window_cursor_keymap_status_refresh(bContext *C, wmWindow *win)
|
|||
*
|
||||
* \{ */
|
||||
|
||||
bool WM_window_modal_keymap_status_draw(bContext *UNUSED(C), wmWindow *win, uiLayout *layout)
|
||||
bool WM_window_modal_keymap_status_draw(bContext *C, wmWindow *win, uiLayout *layout)
|
||||
{
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
wmKeyMap *keymap = NULL;
|
||||
wmOperator *op = NULL;
|
||||
LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
|
||||
|
@ -5424,7 +5425,7 @@ bool WM_window_modal_keymap_status_draw(bContext *UNUSED(C), wmWindow *win, uiLa
|
|||
wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
|
||||
if (handler->op != NULL) {
|
||||
/* 'handler->keymap' could be checked too, seems not to be used. */
|
||||
wmKeyMap *keymap_test = handler->op->type->modalkeymap;
|
||||
wmKeyMap *keymap_test = WM_keymap_active(wm, handler->op->type->modalkeymap);
|
||||
if (keymap_test && keymap_test->modal_items) {
|
||||
keymap = keymap_test;
|
||||
op = handler->op;
|
||||
|
|
|
@ -1295,7 +1295,9 @@ int WM_modalkeymap_operator_items_to_string(wmOperatorType *ot,
|
|||
char *result,
|
||||
const int result_len)
|
||||
{
|
||||
return WM_modalkeymap_items_to_string(ot->modalkeymap, propvalue, compact, result, result_len);
|
||||
wmWindowManager *wm = G_MAIN->wm.first;
|
||||
wmKeyMap *keymap = WM_keymap_active(wm, ot->modalkeymap);
|
||||
return WM_modalkeymap_items_to_string(keymap, propvalue, compact, result, result_len);
|
||||
}
|
||||
|
||||
char *WM_modalkeymap_operator_items_to_string_buf(wmOperatorType *ot,
|
||||
|
|
Loading…
Reference in New Issue