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
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-04-04 06:47:06 +0300
committerCampbell Barton <campbell@blender.org>2022-04-04 07:32:42 +0300
commitf699dbba86156ad3f24c24e3d369f0708b3fd1b5 (patch)
treee244f3f17a5a2166d443d25c14abb915d316f1a2 /source/blender/windowmanager
parent0ef96cd3922dbc16271f2dbaca0c7752db92a40d (diff)
Cleanup: use event parameters for functions that create key-map items
Replace 5 arguments with a single struct as the same arguments are used in many places. This didn't read well and was confusing with both arguments named `val` & `value` in the case of WM_modalkeymap_add_item.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_keymap.h56
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c162
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c64
-rw-r--r--source/blender/windowmanager/intern/wm_keymap_utils.c36
4 files changed, 189 insertions, 129 deletions
diff --git a/source/blender/windowmanager/WM_keymap.h b/source/blender/windowmanager/WM_keymap.h
index 068dbb32be2..591da28ded2 100644
--- a/source/blender/windowmanager/WM_keymap.h
+++ b/source/blender/windowmanager/WM_keymap.h
@@ -37,6 +37,20 @@ void WM_keyconfig_update_operatortype(void);
/* Keymap */
+/** Parameters for matching events, passed into functions that create key-map items. */
+typedef struct KeyMapItem_Params {
+ /** #wmKeyMapItem.type */
+ int16_t type;
+ /** #wmKeyMapItem.val */
+ int8_t value;
+ /** #wmKeyMapItem `ctrl, shift, alt, oskey` */
+ int8_t modifier;
+ /** #wmKeyMapItem.keymodifier */
+ int16_t keymodifier;
+ /** #wmKeyMapItem.direction */
+ int8_t direction;
+} KeyMapItem_Params;
+
void WM_keymap_clear(struct wmKeyMap *keymap);
/**
@@ -44,11 +58,7 @@ void WM_keymap_clear(struct wmKeyMap *keymap);
*/
wmKeyMapItem *WM_keymap_add_item(struct wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction);
+ const KeyMapItem_Params *params);
wmKeyMapItem *WM_keymap_add_item_copy(struct wmKeyMap *keymap, wmKeyMapItem *kmi_src);
bool WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi);
@@ -87,41 +97,25 @@ bool WM_keymap_item_compare(const struct wmKeyMapItem *k1, const struct wmKeyMap
*/
wmKeyMapItem *WM_keymap_add_menu(struct wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction);
+ const KeyMapItem_Params *params);
/**
* Pie-menu wrapper for #WM_keymap_add_item.
*/
wmKeyMapItem *WM_keymap_add_menu_pie(struct wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction);
+ const KeyMapItem_Params *params);
/**
* Panel (popover) wrapper for #WM_keymap_add_item.
*/
wmKeyMapItem *WM_keymap_add_panel(struct wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction);
+ const KeyMapItem_Params *params);
/**
* Tool wrapper for #WM_keymap_add_item.
*/
wmKeyMapItem *WM_keymap_add_tool(struct wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction);
+ const KeyMapItem_Params *params);
wmKeyMap *WM_keymap_guess_from_context(const struct bContext *C);
@@ -154,18 +148,10 @@ wmKeyMap *WM_modalkeymap_ensure(struct wmKeyConfig *keyconf,
const struct EnumPropertyItem *items);
wmKeyMap *WM_modalkeymap_find(struct wmKeyConfig *keyconf, const char *idname);
wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction,
+ const KeyMapItem_Params *params,
int value);
wmKeyMapItem *WM_modalkeymap_add_item_str(struct wmKeyMap *km,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction,
+ const KeyMapItem_Params *params,
const char *value);
const wmKeyMapItem *WM_modalkeymap_find_propvalue(const wmKeyMap *km, int propvalue);
void WM_modalkeymap_assign(struct wmKeyMap *km, const char *opname);
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
index d7b54129caa..4ecadbc5685 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
@@ -640,29 +640,105 @@ wmKeyMap *wm_gizmogroup_tweak_modal_keymap(wmKeyConfig *keyconf)
keymap = WM_modalkeymap_ensure(keyconf, name, modal_items);
/* items for modal map */
- WM_modalkeymap_add_item(keymap, EVT_ESCKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_CANCEL);
- WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_CANCEL);
-
- WM_modalkeymap_add_item(keymap, EVT_RETKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_CONFIRM);
- WM_modalkeymap_add_item(keymap, EVT_PADENTER, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_CONFIRM);
-
- WM_modalkeymap_add_item(
- keymap, EVT_RIGHTSHIFTKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_PRECISION_ON);
- WM_modalkeymap_add_item(
- keymap, EVT_RIGHTSHIFTKEY, KM_RELEASE, KM_ANY, 0, KM_ANY, TWEAK_MODAL_PRECISION_OFF);
- WM_modalkeymap_add_item(
- keymap, EVT_LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_PRECISION_ON);
- WM_modalkeymap_add_item(
- keymap, EVT_LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, KM_ANY, TWEAK_MODAL_PRECISION_OFF);
-
- WM_modalkeymap_add_item(
- keymap, EVT_RIGHTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_SNAP_ON);
- WM_modalkeymap_add_item(
- keymap, EVT_RIGHTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_ANY, TWEAK_MODAL_SNAP_OFF);
- WM_modalkeymap_add_item(
- keymap, EVT_LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_ANY, TWEAK_MODAL_SNAP_ON);
- WM_modalkeymap_add_item(
- keymap, EVT_LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_ANY, TWEAK_MODAL_SNAP_OFF);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_ESCKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_CANCEL);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = RIGHTMOUSE,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_CANCEL);
+
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_RETKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_CONFIRM);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_PADENTER,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_CONFIRM);
+
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_RIGHTSHIFTKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_PRECISION_ON);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_RIGHTSHIFTKEY,
+ .value = KM_RELEASE,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_PRECISION_OFF);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_LEFTSHIFTKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_PRECISION_ON);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_LEFTSHIFTKEY,
+ .value = KM_RELEASE,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_PRECISION_OFF);
+
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_RIGHTCTRLKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_SNAP_ON);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_RIGHTCTRLKEY,
+ .value = KM_RELEASE,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_SNAP_OFF);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_LEFTCTRLKEY,
+ .value = KM_PRESS,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_SNAP_ON);
+ WM_modalkeymap_add_item(keymap,
+ &(const KeyMapItem_Params){
+ .type = EVT_LEFTCTRLKEY,
+ .value = KM_RELEASE,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ },
+ TWEAK_MODAL_SNAP_OFF);
WM_modalkeymap_assign(keymap, "GIZMOGROUP_OT_gizmo_tweak");
@@ -720,20 +796,44 @@ static wmKeyMap *WM_gizmogroup_keymap_template_select_ex(
#endif
if (do_init) {
- WM_keymap_add_item(
- km, "GIZMOGROUP_OT_gizmo_tweak", action_mouse, action_mouse_val, KM_ANY, 0, KM_ANY);
- WM_keymap_add_item(
- km, "GIZMOGROUP_OT_gizmo_tweak", select_tweak, select_tweak_val, 0, 0, KM_ANY);
+ WM_keymap_add_item(km,
+ "GIZMOGROUP_OT_gizmo_tweak",
+ &(const KeyMapItem_Params){
+ .type = action_mouse,
+ .value = action_mouse_val,
+ .modifier = KM_ANY,
+ .direction = KM_ANY,
+ });
+ WM_keymap_add_item(km,
+ "GIZMOGROUP_OT_gizmo_tweak",
+ &(const KeyMapItem_Params){
+ .type = select_tweak,
+ .value = select_tweak_val,
+ .modifier = 0,
+ .direction = KM_ANY,
+ });
}
if (do_init) {
- wmKeyMapItem *kmi = WM_keymap_add_item(
- km, "GIZMOGROUP_OT_gizmo_select", select_mouse, select_mouse_val, 0, 0, KM_ANY);
+ wmKeyMapItem *kmi = WM_keymap_add_item(km,
+ "GIZMOGROUP_OT_gizmo_select",
+ &(const KeyMapItem_Params){
+ .type = select_mouse,
+ .value = select_mouse_val,
+ .modifier = 0,
+ .direction = KM_ANY,
+ });
RNA_boolean_set(kmi->ptr, "extend", false);
RNA_boolean_set(kmi->ptr, "deselect", false);
RNA_boolean_set(kmi->ptr, "toggle", false);
- kmi = WM_keymap_add_item(
- km, "GIZMOGROUP_OT_gizmo_select", select_mouse, select_mouse_val, KM_SHIFT, 0, KM_ANY);
+ kmi = WM_keymap_add_item(km,
+ "GIZMOGROUP_OT_gizmo_select",
+ &(const KeyMapItem_Params){
+ .type = select_mouse,
+ .value = select_mouse_val,
+ .modifier = KM_SHIFT,
+ .direction = KM_ANY,
+ });
RNA_boolean_set(kmi->ptr, "extend", false);
RNA_boolean_set(kmi->ptr, "deselect", false);
RNA_boolean_set(kmi->ptr, "toggle", true);
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index ffac585cde7..1fa5e64093f 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -456,32 +456,35 @@ bool WM_keymap_poll(bContext *C, wmKeyMap *keymap)
return true;
}
-static void keymap_event_set(
- wmKeyMapItem *kmi, short type, short val, int modifier, short keymodifier, int direction)
+static void keymap_event_set(wmKeyMapItem *kmi, const KeyMapItem_Params *params)
{
- kmi->type = type;
- kmi->val = val;
- kmi->keymodifier = keymodifier;
- kmi->direction = direction;
+ kmi->type = params->type;
+ kmi->val = params->value;
+ kmi->keymodifier = params->keymodifier;
+ kmi->direction = params->direction;
- if (modifier == KM_ANY) {
+ if (params->modifier == KM_ANY) {
kmi->shift = kmi->ctrl = kmi->alt = kmi->oskey = KM_ANY;
}
else {
/* Only one of the flags should be set. */
- BLI_assert(((modifier & (KM_SHIFT | KM_SHIFT_ANY)) != (KM_SHIFT | KM_SHIFT_ANY)) &&
- ((modifier & (KM_CTRL | KM_CTRL_ANY)) != (KM_CTRL | KM_CTRL_ANY)) &&
- ((modifier & (KM_ALT | KM_ALT_ANY)) != (KM_ALT | KM_ALT_ANY)) &&
- ((modifier & (KM_OSKEY | KM_OSKEY_ANY)) != (KM_OSKEY | KM_OSKEY_ANY)));
-
- kmi->shift = ((modifier & KM_SHIFT) ? KM_MOD_HELD :
- ((modifier & KM_SHIFT_ANY) ? KM_ANY : KM_NOTHING));
- kmi->ctrl = ((modifier & KM_CTRL) ? KM_MOD_HELD :
- ((modifier & KM_CTRL_ANY) ? KM_ANY : KM_NOTHING));
- kmi->alt = ((modifier & KM_ALT) ? KM_MOD_HELD :
- ((modifier & KM_ALT_ANY) ? KM_ANY : KM_NOTHING));
- kmi->oskey = ((modifier & KM_OSKEY) ? KM_MOD_HELD :
- ((modifier & KM_OSKEY_ANY) ? KM_ANY : KM_NOTHING));
+ BLI_assert(((params->modifier & (KM_SHIFT | KM_SHIFT_ANY)) != (KM_SHIFT | KM_SHIFT_ANY)) &&
+ ((params->modifier & (KM_CTRL | KM_CTRL_ANY)) != (KM_CTRL | KM_CTRL_ANY)) &&
+ ((params->modifier & (KM_ALT | KM_ALT_ANY)) != (KM_ALT | KM_ALT_ANY)) &&
+ ((params->modifier & (KM_OSKEY | KM_OSKEY_ANY)) != (KM_OSKEY | KM_OSKEY_ANY)));
+
+ kmi->shift = ((params->modifier & KM_SHIFT) ?
+ KM_MOD_HELD :
+ ((params->modifier & KM_SHIFT_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->ctrl = ((params->modifier & KM_CTRL) ?
+ KM_MOD_HELD :
+ ((params->modifier & KM_CTRL_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->alt = ((params->modifier & KM_ALT) ?
+ KM_MOD_HELD :
+ ((params->modifier & KM_ALT_ANY) ? KM_ANY : KM_NOTHING));
+ kmi->oskey = ((params->modifier & KM_OSKEY) ?
+ KM_MOD_HELD :
+ ((params->modifier & KM_OSKEY_ANY) ? KM_ANY : KM_NOTHING));
}
}
@@ -498,18 +501,14 @@ static void keymap_item_set_id(wmKeyMap *keymap, wmKeyMapItem *kmi)
wmKeyMapItem *WM_keymap_add_item(wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction)
+ const KeyMapItem_Params *params)
{
wmKeyMapItem *kmi = MEM_callocN(sizeof(wmKeyMapItem), "keymap entry");
BLI_addtail(&keymap->items, kmi);
BLI_strncpy(kmi->idname, idname, OP_MAX_TYPENAME);
- keymap_event_set(kmi, type, val, modifier, keymodifier, direction);
+ keymap_event_set(kmi, params);
wm_keymap_item_properties_set(kmi);
keymap_item_set_id(keymap, kmi);
@@ -922,15 +921,14 @@ wmKeyMap *WM_modalkeymap_find(wmKeyConfig *keyconf, const char *idname)
return NULL;
}
-wmKeyMapItem *WM_modalkeymap_add_item(
- wmKeyMap *km, int type, int val, int modifier, int keymodifier, int direction, int value)
+wmKeyMapItem *WM_modalkeymap_add_item(wmKeyMap *km, const KeyMapItem_Params *params, int value)
{
wmKeyMapItem *kmi = MEM_callocN(sizeof(wmKeyMapItem), "keymap entry");
BLI_addtail(&km->items, kmi);
kmi->propvalue = value;
- keymap_event_set(kmi, type, val, modifier, keymodifier, direction);
+ keymap_event_set(kmi, params);
keymap_item_set_id(km, kmi);
@@ -940,11 +938,7 @@ wmKeyMapItem *WM_modalkeymap_add_item(
}
wmKeyMapItem *WM_modalkeymap_add_item_str(wmKeyMap *km,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction,
+ const KeyMapItem_Params *params,
const char *value)
{
wmKeyMapItem *kmi = MEM_callocN(sizeof(wmKeyMapItem), "keymap entry");
@@ -952,7 +946,7 @@ wmKeyMapItem *WM_modalkeymap_add_item_str(wmKeyMap *km,
BLI_addtail(&km->items, kmi);
BLI_strncpy(kmi->propvalue_str, value, sizeof(kmi->propvalue_str));
- keymap_event_set(kmi, type, val, modifier, keymodifier, direction);
+ keymap_event_set(kmi, params);
keymap_item_set_id(km, kmi);
diff --git a/source/blender/windowmanager/intern/wm_keymap_utils.c b/source/blender/windowmanager/intern/wm_keymap_utils.c
index 24c221221d1..5a35570296a 100644
--- a/source/blender/windowmanager/intern/wm_keymap_utils.c
+++ b/source/blender/windowmanager/intern/wm_keymap_utils.c
@@ -31,42 +31,27 @@
wmKeyMapItem *WM_keymap_add_menu(wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction)
+ const KeyMapItem_Params *params)
{
- wmKeyMapItem *kmi = WM_keymap_add_item(
- keymap, "WM_OT_call_menu", type, val, modifier, keymodifier, direction);
+ wmKeyMapItem *kmi = WM_keymap_add_item(keymap, "WM_OT_call_menu", params);
RNA_string_set(kmi->ptr, "name", idname);
return kmi;
}
wmKeyMapItem *WM_keymap_add_menu_pie(wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction)
+ const KeyMapItem_Params *params)
{
- wmKeyMapItem *kmi = WM_keymap_add_item(
- keymap, "WM_OT_call_menu_pie", type, val, modifier, keymodifier, direction);
+ wmKeyMapItem *kmi = WM_keymap_add_item(keymap, "WM_OT_call_menu_pie", params);
RNA_string_set(kmi->ptr, "name", idname);
return kmi;
}
wmKeyMapItem *WM_keymap_add_panel(wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction)
+ const KeyMapItem_Params *params)
{
- wmKeyMapItem *kmi = WM_keymap_add_item(
- keymap, "WM_OT_call_panel", type, val, modifier, keymodifier, direction);
+ wmKeyMapItem *kmi = WM_keymap_add_item(keymap, "WM_OT_call_panel", params);
RNA_string_set(kmi->ptr, "name", idname);
/* TODO: we might want to disable this. */
RNA_boolean_set(kmi->ptr, "keep_open", false);
@@ -75,14 +60,9 @@ wmKeyMapItem *WM_keymap_add_panel(wmKeyMap *keymap,
wmKeyMapItem *WM_keymap_add_tool(wmKeyMap *keymap,
const char *idname,
- int type,
- int val,
- int modifier,
- int keymodifier,
- int direction)
+ const KeyMapItem_Params *params)
{
- wmKeyMapItem *kmi = WM_keymap_add_item(
- keymap, "WM_OT_tool_set_by_id", type, val, modifier, keymodifier, direction);
+ wmKeyMapItem *kmi = WM_keymap_add_item(keymap, "WM_OT_tool_set_by_id", params);
RNA_string_set(kmi->ptr, "name", idname);
return kmi;
}