Fix action-zones showing up as shortcuts
Toggle fullscreen area for eg, was showing the action-zone instead of the key binding.
This commit is contained in:
parent
768e69eb37
commit
bbb71ccbde
|
@ -1169,7 +1169,7 @@ static wmKeyMapItem *wm_keymap_item_find_handlers(
|
|||
|
||||
bool kmi_match = false;
|
||||
|
||||
if (STREQ(kmi->idname, opname) && WM_key_event_string(kmi->type, false)[0]) {
|
||||
if (STREQ(kmi->idname, opname)) {
|
||||
if (properties) {
|
||||
/* example of debugging keymaps */
|
||||
#if 0
|
||||
|
@ -1389,12 +1389,24 @@ static wmKeyMapItem *wm_keymap_item_find(
|
|||
return found;
|
||||
}
|
||||
|
||||
static bool kmi_filter_is_visible(const wmKeyMap *UNUSED(km), const wmKeyMapItem *kmi, void *UNUSED(user_data))
|
||||
{
|
||||
return ((WM_key_event_string(kmi->type, false)[0] != '\0') &&
|
||||
(IS_EVENT_ACTIONZONE(kmi->type) == false));
|
||||
}
|
||||
|
||||
char *WM_key_event_operator_string(
|
||||
const bContext *C, const char *opname, int opcontext,
|
||||
IDProperty *properties, const bool is_strict,
|
||||
char *result, const int result_len)
|
||||
{
|
||||
wmKeyMapItem *kmi = wm_keymap_item_find(C, opname, opcontext, properties, is_strict, NULL, NULL);
|
||||
wmKeyMapItem *kmi = wm_keymap_item_find(
|
||||
C, opname, opcontext, properties, is_strict,
|
||||
&(struct wmKeyMapItemFind_Params){
|
||||
.filter_fn = kmi_filter_is_visible,
|
||||
.user_data = NULL,
|
||||
},
|
||||
NULL);
|
||||
if (kmi) {
|
||||
WM_keymap_item_to_string(kmi, false, result, result_len);
|
||||
return result;
|
||||
|
@ -1403,9 +1415,9 @@ char *WM_key_event_operator_string(
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static bool kmi_is_hotkey(const wmKeyMap *UNUSED(km), const wmKeyMapItem *kmi, void *UNUSED(user_data))
|
||||
static bool kmi_filter_is_visible_hotkey(const wmKeyMap *km, const wmKeyMapItem *kmi, void *user_data)
|
||||
{
|
||||
return ISHOTKEY(kmi->type);
|
||||
return (ISHOTKEY(kmi->type) && kmi_filter_is_visible(km, kmi, user_data));
|
||||
}
|
||||
|
||||
wmKeyMapItem *WM_key_event_operator(
|
||||
|
@ -1415,9 +1427,8 @@ wmKeyMapItem *WM_key_event_operator(
|
|||
{
|
||||
return wm_keymap_item_find(
|
||||
C, opname, opcontext, properties, true,
|
||||
(is_hotkey == false) ? NULL :
|
||||
&(struct wmKeyMapItemFind_Params){
|
||||
.filter_fn = kmi_is_hotkey,
|
||||
.filter_fn = is_hotkey ? kmi_filter_is_visible_hotkey : kmi_filter_is_visible,
|
||||
.user_data = NULL,
|
||||
},
|
||||
r_keymap);
|
||||
|
|
|
@ -308,9 +308,11 @@ enum {
|
|||
TIMERF = 0x011F, /* last timer */
|
||||
|
||||
/* Actionzones, tweak, gestures: 0x500x, 0x501x */
|
||||
#define EVT_ACTIONZONE_FIRST EVT_ACTIONZONE_AREA
|
||||
EVT_ACTIONZONE_AREA = 0x5000,
|
||||
EVT_ACTIONZONE_REGION = 0x5001,
|
||||
EVT_ACTIONZONE_FULLSCREEN = 0x5011,
|
||||
#define EVT_ACTIONZONE_LAST (EVT_ACTIONZONE_FULLSCREEN + 1)
|
||||
|
||||
/* NOTE: these values are saved in keymap files, do not change them but just add new ones */
|
||||
|
||||
|
@ -374,6 +376,8 @@ enum {
|
|||
/* test whether the event is a NDOF event */
|
||||
#define ISNDOF(event_type) ((event_type) >= NDOF_MOTION && (event_type) < NDOF_LAST)
|
||||
|
||||
#define IS_EVENT_ACTIONZONE(event_type) ((event_type) >= EVT_ACTIONZONE_FIRST && (event_type) < EVT_ACTIONZONE_LAST)
|
||||
|
||||
/* test whether event type is acceptable as hotkey, excluding modifiers */
|
||||
#define ISHOTKEY(event_type) \
|
||||
((ISKEYBOARD(event_type) || ISMOUSE(event_type) || ISNDOF(event_type)) && \
|
||||
|
|
Loading…
Reference in New Issue