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:
authorBrecht Van Lommel <brecht@blender.org>2021-09-20 14:06:11 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-09-20 14:06:11 +0300
commite61ae00e7910393d363899a1ab312f469cd07616 (patch)
tree3be2eed8c91a2400635e6fa6fc0116a6941579b2 /source/blender/makesrna
parent8d25aeb6a631fc941be72827134dec5b589e9ed4 (diff)
parent8c7c4549d1fba8eb2236fa397d95b32ad1262789 (diff)
Merge branch 'master' into cycles-x
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_ID.c5
-rw-r--r--source/blender/makesrna/intern/rna_gpencil.c10
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c41
-rw-r--r--source/blender/makesrna/intern/rna_sequencer_api.c4
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c48
-rw-r--r--source/blender/makesrna/intern/rna_wm.c50
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c124
7 files changed, 189 insertions, 93 deletions
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 8f8ad077935..eb887e1881b 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -931,11 +931,10 @@ static void rna_ID_user_remap(ID *id, Main *bmain, ID *new_id)
static struct ID *rna_ID_make_local(struct ID *self, Main *bmain, bool clear_proxy)
{
- BKE_lib_id_make_local(
- bmain, self, false, clear_proxy ? 0 : LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING);
+ BKE_lib_id_make_local(bmain, self, clear_proxy ? 0 : LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING);
ID *ret_id = self->newid ? self->newid : self;
- BKE_id_clear_newpoin(self);
+ BKE_id_newptr_and_tag_clear(self);
return ret_id;
}
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index f06c8a5325c..2bce5f3f4b3 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -843,17 +843,17 @@ static float rna_GPencilStrokePoints_weight_get(bGPDstroke *stroke,
return -1.0f;
}
- if (dvert->totweight <= vertex_group_index || vertex_group_index < 0) {
- BKE_report(reports, RPT_ERROR, "Groups: index out of range");
- return -1.0f;
- }
-
if (stroke->totpoints <= point_index || point_index < 0) {
BKE_report(reports, RPT_ERROR, "GPencilStrokePoints: index out of range");
return -1.0f;
}
MDeformVert *pt_dvert = stroke->dvert + point_index;
+ if ((pt_dvert) && (pt_dvert->totweight <= vertex_group_index || vertex_group_index < 0)) {
+ BKE_report(reports, RPT_ERROR, "Groups: index out of range");
+ return -1.0f;
+ }
+
MDeformWeight *dw = BKE_defvert_find_index(pt_dvert, vertex_group_index);
if (dw) {
return dw->weight;
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 2ef968d6edc..e98b29c6a9b 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -8869,12 +8869,37 @@ static void def_cmp_denoise(StructRNA *srna)
{
PropertyRNA *prop;
+ static const EnumPropertyItem prefilter_items[] = {
+ {CMP_NODE_DENOISE_PREFILTER_NONE,
+ "NONE",
+ 0,
+ "None",
+ "No prefiltering, use when guiding passes are noise-free"},
+ {CMP_NODE_DENOISE_PREFILTER_FAST,
+ "FAST",
+ 0,
+ "Fast",
+ "Denoise image and guiding passes together. Improves quality when guiding passes are noisy "
+ "using least amount of extra processing time"},
+ {CMP_NODE_DENOISE_PREFILTER_ACCURATE,
+ "ACCURATE",
+ 0,
+ "Accurate",
+ "Prefilter noisy guiding passes before denoising image. Improves quality when guiding "
+ "passes are noisy using extra processing time"},
+ {0, NULL, 0, NULL, NULL}};
+
RNA_def_struct_sdna_from(srna, "NodeDenoise", "storage");
prop = RNA_def_property(srna, "use_hdr", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "hdr", 0);
RNA_def_property_ui_text(prop, "HDR", "Process HDR images");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+ prop = RNA_def_property(srna, "prefilter", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, prefilter_items);
+ RNA_def_property_ui_text(prop, "", "Denoising prefilter");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
}
static void def_cmp_antialiasing(StructRNA *srna)
@@ -10070,18 +10095,18 @@ static void def_geo_curve_resample(StructRNA *srna)
PropertyRNA *prop;
static EnumPropertyItem mode_items[] = {
- {GEO_NODE_CURVE_SAMPLE_EVALUATED,
+ {GEO_NODE_CURVE_RESAMPLE_EVALUATED,
"EVALUATED",
0,
"Evaluated",
"Output the input spline's evaluated points, based on the resolution attribute for NURBS "
"and Bezier splines. Poly splines are unchanged"},
- {GEO_NODE_CURVE_SAMPLE_COUNT,
+ {GEO_NODE_CURVE_RESAMPLE_COUNT,
"COUNT",
0,
"Count",
"Sample the specified number of points along each spline"},
- {GEO_NODE_CURVE_SAMPLE_LENGTH,
+ {GEO_NODE_CURVE_RESAMPLE_LENGTH,
"LENGTH",
0,
"Length",
@@ -10115,18 +10140,18 @@ static void def_geo_curve_to_points(StructRNA *srna)
PropertyRNA *prop;
static EnumPropertyItem mode_items[] = {
- {GEO_NODE_CURVE_SAMPLE_EVALUATED,
+ {GEO_NODE_CURVE_RESAMPLE_EVALUATED,
"EVALUATED",
0,
"Evaluated",
"Create points from the curve's evaluated points, based on the resolution attribute for "
"NURBS and Bezier splines"},
- {GEO_NODE_CURVE_SAMPLE_COUNT,
+ {GEO_NODE_CURVE_RESAMPLE_COUNT,
"COUNT",
0,
"Count",
"Sample each spline by evenly distributing the specified number of points"},
- {GEO_NODE_CURVE_SAMPLE_LENGTH,
+ {GEO_NODE_CURVE_RESAMPLE_LENGTH,
"LENGTH",
0,
"Length",
@@ -10147,12 +10172,12 @@ static void def_geo_curve_trim(StructRNA *srna)
PropertyRNA *prop;
static EnumPropertyItem mode_items[] = {
- {GEO_NODE_CURVE_INTERPOLATE_FACTOR,
+ {GEO_NODE_CURVE_SAMPLE_FACTOR,
"FACTOR",
0,
"Factor",
"Find the endpoint positions using a factor of each spline's length"},
- {GEO_NODE_CURVE_INTERPOLATE_LENGTH,
+ {GEO_NODE_CURVE_RESAMPLE_LENGTH,
"LENGTH",
0,
"Length",
diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c
index a0564d3435b..b43b57a35be 100644
--- a/source/blender/makesrna/intern/rna_sequencer_api.c
+++ b/source/blender/makesrna/intern/rna_sequencer_api.c
@@ -323,8 +323,8 @@ static Sequence *rna_Sequences_new_movie(ID *id,
SEQ_add_load_data_init(&load_data, name, file, frame_start, channel);
load_data.fit_method = fit_method;
load_data.allow_invalid_file = true;
- double video_start_offset;
- Sequence *seq = SEQ_add_movie_strip(bmain, scene, seqbase, &load_data, &video_start_offset);
+ double start_offset = -1;
+ Sequence *seq = SEQ_add_movie_strip(bmain, scene, seqbase, &load_data, &start_offset);
DEG_relations_tag_update(bmain);
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 13aea804957..563c6ea35e0 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -559,6 +559,11 @@ static PointerRNA rna_UserDef_system_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_PreferencesSystem, ptr->data);
}
+static PointerRNA rna_UserDef_apps_get(PointerRNA *ptr)
+{
+ return rna_pointer_inherit_refine(ptr, &RNA_PreferencesApps, ptr->data);
+}
+
static void rna_UserDef_audio_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{
BKE_sound_init(bmain);
@@ -4590,12 +4595,6 @@ static void rna_def_userdef_view(BlenderRNA *brna)
"Color range used for weight visualization in weight painting mode");
RNA_def_property_update(prop, 0, "rna_UserDef_weight_color_update");
- prop = RNA_def_property(srna, "show_layout_ui", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "app_flag", USER_APP_LOCK_UI_LAYOUT);
- RNA_def_property_ui_text(
- prop, "Editor Corner Splitting", "Split and join editors by dragging from corners");
- RNA_def_property_update(prop, 0, "rna_userdef_screen_update");
-
prop = RNA_def_property(srna, "show_navigate_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_SHOW_GIZMO_NAVIGATE);
RNA_def_property_ui_text(
@@ -6061,6 +6060,7 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
static const EnumPropertyItem preview_type_items[] = {
{USER_FILE_PREVIEW_NONE, "NONE", 0, "None", "Do not create blend previews"},
+ {USER_FILE_PREVIEW_AUTO, "AUTO", 0, "Auto", "Automatically select best preview type"},
{USER_FILE_PREVIEW_SCREENSHOT, "SCREENSHOT", 0, "Screenshot", "Capture the entire window"},
{USER_FILE_PREVIEW_CAMERA, "CAMERA", 0, "Camera View", "Workbench render of scene"},
{0, NULL, 0, NULL, NULL},
@@ -6230,6 +6230,35 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Asset Libraries", "");
}
+static void rna_def_userdef_apps(BlenderRNA *brna)
+{
+ PropertyRNA *prop;
+ StructRNA *srna;
+
+ srna = RNA_def_struct(brna, "PreferencesApps", NULL);
+ RNA_def_struct_sdna(srna, "UserDef");
+ RNA_def_struct_nested(brna, srna, "Preferences");
+ RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
+ RNA_def_struct_ui_text(srna, "Apps", "Preferences that work only for apps");
+
+ prop = RNA_def_property(srna, "show_corner_split", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "app_flag", USER_APP_LOCK_CORNER_SPLIT);
+ RNA_def_property_ui_text(
+ prop, "Corner Splitting", "Split and join editors by dragging from corners");
+ RNA_def_property_update(prop, 0, "rna_userdef_screen_update");
+
+ prop = RNA_def_property(srna, "show_edge_resize", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "app_flag", USER_APP_LOCK_EDGE_RESIZE);
+ RNA_def_property_ui_text(prop, "Edge Resize", "Resize editors by dragging from the edges");
+ RNA_def_property_update(prop, 0, "rna_userdef_screen_update");
+
+ prop = RNA_def_property(srna, "show_regions_visibility_toggle", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "app_flag", USER_APP_HIDE_REGION_TOGGLE);
+ RNA_def_property_ui_text(
+ prop, "Regions Visibility Toggle", "Header and side bars visibility toggles");
+ RNA_def_property_update(prop, 0, "rna_userdef_screen_update");
+}
+
static void rna_def_userdef_experimental(BlenderRNA *brna)
{
StructRNA *srna;
@@ -6445,6 +6474,12 @@ void RNA_def_userdef(BlenderRNA *brna)
RNA_def_property_ui_text(
prop, "System & OpenGL", "Graphics driver and operating system settings");
+ prop = RNA_def_property(srna, "apps", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_NEVER_NULL);
+ RNA_def_property_struct_type(prop, "PreferencesApps");
+ RNA_def_property_pointer_funcs(prop, "rna_UserDef_apps_get", NULL, NULL, NULL);
+ RNA_def_property_ui_text(prop, "Apps", "Preferences that work only for apps");
+
prop = RNA_def_property(srna, "experimental", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "PreferencesExperimental");
@@ -6506,6 +6541,7 @@ void RNA_def_userdef(BlenderRNA *brna)
rna_def_userdef_studiolights(brna);
rna_def_userdef_studiolight(brna);
rna_def_userdef_pathcompare(brna);
+ rna_def_userdef_apps(brna);
rna_def_userdef_experimental(brna);
USERDEF_TAG_DIRTY_PROPERTY_UPDATE_DISABLE;
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 21a3c087197..c2d1ac67675 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -440,8 +440,7 @@ const EnumPropertyItem rna_enum_event_type_mask_items[] = {
static const EnumPropertyItem keymap_modifiers_items[] = {
{KM_ANY, "ANY", 0, "Any", ""},
{0, "NONE", 0, "None", ""},
- {1, "FIRST", 0, "First", ""},
- {2, "SECOND", 0, "Second", ""},
+ {KM_MOD_HELD, "HELD", 0, "Held", ""},
{0, NULL, 0, NULL, NULL},
};
#endif
@@ -468,6 +467,13 @@ const EnumPropertyItem rna_enum_operator_type_flag_items[] = {
"is enabled"},
{OPTYPE_GRAB_CURSOR_X, "GRAB_CURSOR_X", 0, "Grab Pointer X", "Grab, only warping the X axis"},
{OPTYPE_GRAB_CURSOR_Y, "GRAB_CURSOR_Y", 0, "Grab Pointer Y", "Grab, only warping the Y axis"},
+ {OPTYPE_DEPENDS_ON_CURSOR,
+ "DEPENDS_ON_CURSOR",
+ 0,
+ "Depends on Cursor",
+ "The initial cursor location is used, "
+ "when running from a menus or buttons the user is prompted to place the cursor "
+ "before beginning the operation"},
{OPTYPE_PRESET, "PRESET", 0, "Preset", "Display a preset button with the operators settings"},
{OPTYPE_INTERNAL, "INTERNAL", 0, "Internal", "Removes the operator from search results"},
{0, NULL, 0, NULL, NULL},
@@ -2725,38 +2731,62 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Any", "Any modifier keys pressed");
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
- prop = RNA_def_property(srna, "shift", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "shift", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "shift");
+ RNA_def_property_range(prop, KM_ANY, KM_MOD_HELD);
+ RNA_def_property_ui_text(prop, "Shift", "Shift key pressed, -1 for any state");
+ RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_WINDOWMANAGER);
+ RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
+
+ prop = RNA_def_property(srna, "ctrl", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "ctrl");
+ RNA_def_property_range(prop, KM_ANY, KM_MOD_HELD);
+ RNA_def_property_ui_text(prop, "Ctrl", "Control key pressed, -1 for any state");
+ RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
+
+ prop = RNA_def_property(srna, "alt", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "alt");
+ RNA_def_property_range(prop, KM_ANY, KM_MOD_HELD);
+ RNA_def_property_ui_text(prop, "Alt", "Alt key pressed, -1 for any state");
+ RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
+
+ prop = RNA_def_property(srna, "oskey", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "oskey");
+ RNA_def_property_range(prop, KM_ANY, KM_MOD_HELD);
+ RNA_def_property_ui_text(prop, "OS Key", "Operating system key pressed, -1 for any state");
+ RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
+
+ /* XXX(@campbellbarton): the `*_ui` suffix is only for the UI, may be removed,
+ * since this is only exposed so the UI can show these settings as toggle-buttons. */
+ prop = RNA_def_property(srna, "shift_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shift", 0);
RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_shift_get", NULL);
- /* RNA_def_property_enum_sdna(prop, NULL, "shift"); */
/* RNA_def_property_enum_items(prop, keymap_modifiers_items); */
RNA_def_property_ui_text(prop, "Shift", "Shift key pressed");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_WINDOWMANAGER);
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
- prop = RNA_def_property(srna, "ctrl", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "ctrl_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ctrl", 0);
RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_ctrl_get", NULL);
- /* RNA_def_property_enum_sdna(prop, NULL, "ctrl"); */
/* RNA_def_property_enum_items(prop, keymap_modifiers_items); */
RNA_def_property_ui_text(prop, "Ctrl", "Control key pressed");
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
- prop = RNA_def_property(srna, "alt", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "alt_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "alt", 0);
RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_alt_get", NULL);
- /* RNA_def_property_enum_sdna(prop, NULL, "alt"); */
/* RNA_def_property_enum_items(prop, keymap_modifiers_items); */
RNA_def_property_ui_text(prop, "Alt", "Alt key pressed");
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
- prop = RNA_def_property(srna, "oskey", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "oskey_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "oskey", 0);
RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_oskey_get", NULL);
- /* RNA_def_property_enum_sdna(prop, NULL, "oskey"); */
/* RNA_def_property_enum_items(prop, keymap_modifiers_items); */
RNA_def_property_ui_text(prop, "OS Key", "Operating system key pressed");
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
+ /* End `_ui` modifiers. */
prop = RNA_def_property(srna, "key_modifier", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "keymodifier");
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index e123604cbe9..7c3b119abb9 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -39,6 +39,8 @@
#include "wm_cursors.h"
#include "wm_event_types.h"
+#include "WM_types.h"
+
#include "rna_internal.h" /* own include */
/* confusing 2 enums mixed up here */
@@ -216,49 +218,70 @@ static int rna_Operator_props_popup(bContext *C, wmOperator *op, wmEvent *event)
return WM_operator_props_popup(C, op, event);
}
+static int keymap_item_modifier_flag_from_args(bool any, int shift, int ctrl, int alt, int oskey)
+{
+ int modifier = 0;
+ if (any) {
+ modifier = KM_ANY;
+ }
+ else {
+ if (shift == KM_MOD_HELD) {
+ modifier |= KM_SHIFT;
+ }
+ else if (shift == KM_ANY) {
+ modifier |= KM_SHIFT_ANY;
+ }
+
+ if (ctrl == KM_MOD_HELD) {
+ modifier |= KM_CTRL;
+ }
+ else if (ctrl == KM_ANY) {
+ modifier |= KM_CTRL_ANY;
+ }
+
+ if (alt == KM_MOD_HELD) {
+ modifier |= KM_ALT;
+ }
+ else if (alt == KM_ANY) {
+ modifier |= KM_ALT_ANY;
+ }
+
+ if (oskey == KM_MOD_HELD) {
+ modifier |= KM_OSKEY;
+ }
+ else if (oskey == KM_ANY) {
+ modifier |= KM_OSKEY_ANY;
+ }
+ }
+ return modifier;
+}
+
static wmKeyMapItem *rna_KeyMap_item_new(wmKeyMap *km,
ReportList *reports,
const char *idname,
int type,
int value,
bool any,
- bool shift,
- bool ctrl,
- bool alt,
- bool oskey,
+ int shift,
+ int ctrl,
+ int alt,
+ int oskey,
int keymodifier,
bool repeat,
bool head)
{
- // wmWindowManager *wm = CTX_wm_manager(C);
- wmKeyMapItem *kmi = NULL;
- char idname_bl[OP_MAX_TYPENAME];
- int modifier = 0;
-
/* only on non-modal maps */
if (km->flag & KEYMAP_MODAL) {
BKE_report(reports, RPT_ERROR, "Not a non-modal keymap");
return NULL;
}
- WM_operator_bl_idname(idname_bl, idname);
-
- if (shift) {
- modifier |= KM_SHIFT;
- }
- if (ctrl) {
- modifier |= KM_CTRL;
- }
- if (alt) {
- modifier |= KM_ALT;
- }
- if (oskey) {
- modifier |= KM_OSKEY;
- }
+ // wmWindowManager *wm = CTX_wm_manager(C);
+ wmKeyMapItem *kmi = NULL;
+ char idname_bl[OP_MAX_TYPENAME];
+ const int modifier = keymap_item_modifier_flag_from_args(any, shift, ctrl, alt, oskey);
- if (any) {
- modifier = KM_ANY;
- }
+ WM_operator_bl_idname(idname_bl, idname);
/* create keymap item */
kmi = WM_keymap_add_item(km, idname_bl, type, value, modifier, keymodifier);
@@ -305,39 +328,22 @@ static wmKeyMapItem *rna_KeyMap_item_new_modal(wmKeyMap *km,
int type,
int value,
bool any,
- bool shift,
- bool ctrl,
- bool alt,
- bool oskey,
+ int shift,
+ int ctrl,
+ int alt,
+ int oskey,
int keymodifier,
bool repeat)
{
- wmKeyMapItem *kmi = NULL;
- int modifier = 0;
- int propvalue = 0;
-
/* only modal maps */
if ((km->flag & KEYMAP_MODAL) == 0) {
BKE_report(reports, RPT_ERROR, "Not a modal keymap");
return NULL;
}
- if (shift) {
- modifier |= KM_SHIFT;
- }
- if (ctrl) {
- modifier |= KM_CTRL;
- }
- if (alt) {
- modifier |= KM_ALT;
- }
- if (oskey) {
- modifier |= KM_OSKEY;
- }
-
- if (any) {
- modifier = KM_ANY;
- }
+ wmKeyMapItem *kmi = NULL;
+ const int modifier = keymap_item_modifier_flag_from_args(any, shift, ctrl, alt, oskey);
+ int propvalue = 0;
/* not initialized yet, do delayed lookup */
if (!km->modal_items) {
@@ -641,7 +647,7 @@ static wmEvent *rna_Window_event_add_simulate(wmWindow *win,
e.is_repeat = false;
e.x = x;
e.y = y;
- /* NOTE: KM_MOD_FIRST, KM_MOD_SECOND aren't used anywhere, set as bools. */
+
e.shift = shift;
e.ctrl = ctrl;
e.alt = alt;
@@ -1131,10 +1137,10 @@ void RNA_api_keymapitems(StructRNA *srna)
parm = RNA_def_enum(func, "value", rna_enum_event_value_all_items, 0, "Value", "");
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_boolean(func, "any", 0, "Any", "");
- RNA_def_boolean(func, "shift", 0, "Shift", "");
- RNA_def_boolean(func, "ctrl", 0, "Ctrl", "");
- RNA_def_boolean(func, "alt", 0, "Alt", "");
- RNA_def_boolean(func, "oskey", 0, "OS Key", "");
+ RNA_def_int(func, "shift", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Shift", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "ctrl", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Ctrl", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "alt", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Alt", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "oskey", KM_NOTHING, KM_ANY, KM_MOD_HELD, "OS Key", "", KM_ANY, KM_MOD_HELD);
RNA_def_enum(func, "key_modifier", rna_enum_event_type_items, 0, "Key Modifier", "");
RNA_def_boolean(func, "repeat", false, "Repeat", "When set, accept key-repeat events");
RNA_def_boolean(func,
@@ -1155,10 +1161,10 @@ void RNA_api_keymapitems(StructRNA *srna)
parm = RNA_def_enum(func, "value", rna_enum_event_value_all_items, 0, "Value", "");
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_boolean(func, "any", 0, "Any", "");
- RNA_def_boolean(func, "shift", 0, "Shift", "");
- RNA_def_boolean(func, "ctrl", 0, "Ctrl", "");
- RNA_def_boolean(func, "alt", 0, "Alt", "");
- RNA_def_boolean(func, "oskey", 0, "OS Key", "");
+ RNA_def_int(func, "shift", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Shift", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "ctrl", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Ctrl", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "alt", KM_NOTHING, KM_ANY, KM_MOD_HELD, "Alt", "", KM_ANY, KM_MOD_HELD);
+ RNA_def_int(func, "oskey", KM_NOTHING, KM_ANY, KM_MOD_HELD, "OS Key", "", KM_ANY, KM_MOD_HELD);
RNA_def_enum(func, "key_modifier", rna_enum_event_type_items, 0, "Key Modifier", "");
RNA_def_boolean(func, "repeat", false, "Repeat", "When set, accept key-repeat events");
parm = RNA_def_pointer(func, "item", "KeyMapItem", "Item", "Added key map item");