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:
Diffstat (limited to 'release')
m---------release/datafiles/locale0
-rw-r--r--release/datafiles/userdef/userdef_default.c1
m---------release/scripts/addons0
-rw-r--r--release/scripts/modules/bl_i18n_utils/bl_extract_messages.py23
-rw-r--r--release/scripts/modules/bl_i18n_utils/settings.py15
-rw-r--r--release/scripts/modules/bl_i18n_utils/utils_spell_check.py8
-rwxr-xr-xrelease/scripts/modules/blend_render_info.py5
-rw-r--r--release/scripts/modules/bpy_types.py15
-rw-r--r--release/scripts/presets/cycles/performance/Default.py12
-rw-r--r--release/scripts/presets/cycles/performance/Faster_Render.py12
-rw-r--r--release/scripts/presets/cycles/performance/Lower_Memory.py12
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py13
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py9
-rw-r--r--release/scripts/startup/bl_operators/node.py4
-rw-r--r--release/scripts/startup/bl_ui/__init__.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_data_camera.py2
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py4
-rw-r--r--release/scripts/startup/bl_ui/space_image.py6
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py2
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py12
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py4
-rw-r--r--release/scripts/startup/nodeitems_builtins.py2
22 files changed, 126 insertions, 39 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale
-Subproject 055bc5223c1cd249e32ccbc8e8796ba9925c8c3
+Subproject a2eb507891449a0b67582be9561840075513661
diff --git a/release/datafiles/userdef/userdef_default.c b/release/datafiles/userdef/userdef_default.c
index fba3c7882c6..b4a1ab6d5f8 100644
--- a/release/datafiles/userdef/userdef_default.c
+++ b/release/datafiles/userdef/userdef_default.c
@@ -174,7 +174,6 @@ const UserDef U_default = {
.pie_menu_confirm = 0,
.pie_menu_radius = 100,
.pie_menu_threshold = 12,
- .opensubdiv_compute_type = 0,
.factor_display_type = USER_FACTOR_AS_FACTOR,
.render_display_type = USER_RENDER_DISPLAY_WINDOW,
.filebrowser_display_type = USER_TEMP_SPACE_DISPLAY_WINDOW,
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 403b95ef6ff38918de966ed2a5843cfa3274a58
+Subproject 7a8502871c34db0343cc7de52d6b49b15a84238
diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
index 319fd3396a0..3edb5b445fe 100644
--- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
+++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
@@ -803,20 +803,21 @@ def dump_src_messages(msgs, reports, settings):
line += data[pos:m.start()].count('\n')
msgsrc = rel_path + ":" + str(line)
_msgid = d.get("msg_raw")
- # First, try the "multi-contexts" stuff!
- _msgctxts = tuple(d.get("ctxt_raw{}".format(i)) for i in range(settings.PYGETTEXT_MAX_MULTI_CTXT))
- if _msgctxts[0]:
- for _msgctxt in _msgctxts:
- if not _msgctxt:
- break
+ if _msgid not in {'""', "''"}:
+ # First, try the "multi-contexts" stuff!
+ _msgctxts = tuple(d.get("ctxt_raw{}".format(i)) for i in range(settings.PYGETTEXT_MAX_MULTI_CTXT))
+ if _msgctxts[0]:
+ for _msgctxt in _msgctxts:
+ if not _msgctxt:
+ break
+ msgctxt, msgid = process_entry(_msgctxt, _msgid)
+ process_msg(msgs, msgctxt, msgid, msgsrc, reports, check_ctxt_src, settings)
+ reports["src_messages"].append((msgctxt, msgid, msgsrc))
+ else:
+ _msgctxt = d.get("ctxt_raw")
msgctxt, msgid = process_entry(_msgctxt, _msgid)
process_msg(msgs, msgctxt, msgid, msgsrc, reports, check_ctxt_src, settings)
reports["src_messages"].append((msgctxt, msgid, msgsrc))
- else:
- _msgctxt = d.get("ctxt_raw")
- msgctxt, msgid = process_entry(_msgctxt, _msgid)
- process_msg(msgs, msgctxt, msgid, msgsrc, reports, check_ctxt_src, settings)
- reports["src_messages"].append((msgctxt, msgid, msgsrc))
pos = m.end()
line += data[m.start():pos].count('\n')
diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py
index 408f8523b8d..3b69f8a6bf7 100644
--- a/release/scripts/modules/bl_i18n_utils/settings.py
+++ b/release/scripts/modules/bl_i18n_utils/settings.py
@@ -248,9 +248,14 @@ PYGETTEXT_KEYWORDS = (() +
tuple(("{}\\((?:[^\"',]+,){{3}}\\s*" + _msg_re + r"\s*\)").format(it)
for it in ("BMO_error_raise",)) +
- tuple(("{}\\((?:[^\"',]+,)\\s*" + _msg_re + r"\s*(?:\)|,)").format(it)
+ tuple(("{}\\((?:[^\"',]+,){{2}}\\s*" + _msg_re + r"\s*(?:\)|,)").format(it)
for it in ("BKE_modifier_set_error",)) +
+ # This one is a tad more risky, but in practice would not expect a name/uid string parameter
+ # (the second one in those functions) to ever have a comma in it, so think this is fine.
+ tuple(("{}\\((?:[^,]+,){{2}}\\s*" + _msg_re + r"\s*(?:\)|,)").format(it)
+ for it in ("modifier_subpanel_register", "gpencil_modifier_subpanel_register")) +
+
# bUnitDef unit names.
# NOTE: regex is a bit more complex than it would need too. Since the actual
# identifier (`B_UNIT_DEF_`) is at the end, if it's simpler/too general it
@@ -297,6 +302,7 @@ WARN_MSGID_NOT_CAPITALIZED_ALLOWED = {
"ascii",
"author", # Addons' field. :/
"bItasc",
+ "blender.org",
"color_index is invalid",
"cos(A)",
"cosh(A)",
@@ -312,6 +318,7 @@ WARN_MSGID_NOT_CAPITALIZED_ALLOWED = {
"glTF 2.0 (.glb/.gltf)",
"glTF Binary (.glb)",
"glTF Embedded (.gltf)",
+ "glTF Original PBR data",
"glTF Separate (.gltf + .bin + textures)",
"invoke() needs to be called before execute()",
"iScale",
@@ -330,6 +337,7 @@ WARN_MSGID_NOT_CAPITALIZED_ALLOWED = {
"mp3",
"normal",
"ogg",
+ "oneAPI",
"p0",
"px",
"re",
@@ -340,6 +348,8 @@ WARN_MSGID_NOT_CAPITALIZED_ALLOWED = {
"sinh(A)",
"sqrt(x*x+y*y+z*z)",
"sRGB",
+ "sRGB display space",
+ "sRGB display space with Filmic view transform",
"tan(A)",
"tanh(A)",
"utf-8",
@@ -356,7 +366,9 @@ WARN_MSGID_NOT_CAPITALIZED_ALLOWED = {
"all and invert unselected",
"and AMD driver version 22.10 or newer",
"and AMD Radeon Pro 21.Q4 driver or newer",
+ "and Linux driver version xx.xx.28000 or newer",
"and NVIDIA driver version 470 or newer",
+ "and Windows driver version 101.1660 or newer",
"available with",
"brown fox",
"can't save image while rendering",
@@ -431,6 +443,7 @@ WARN_MSGID_END_POINT_ALLOWED = {
"The program will now close.",
"Your graphics card or driver has limited support. It may work, but with issues.",
"Your graphics card or driver is not supported.",
+ "Invalid surface UVs on %d curves.",
}
PARSER_CACHE_HASH = 'sha1'
diff --git a/release/scripts/modules/bl_i18n_utils/utils_spell_check.py b/release/scripts/modules/bl_i18n_utils/utils_spell_check.py
index 74785c81bfd..462c954d54a 100644
--- a/release/scripts/modules/bl_i18n_utils/utils_spell_check.py
+++ b/release/scripts/modules/bl_i18n_utils/utils_spell_check.py
@@ -433,6 +433,7 @@ class SpellChecker:
"polyline", "polylines",
"probabilistically",
"pulldown", "pulldowns",
+ "quadratically",
"quantized",
"quartic",
"quaternion", "quaternions",
@@ -501,6 +502,7 @@ class SpellChecker:
"luminance",
"mantaflow",
"matcap",
+ "microfacet",
"midtones",
"mipmap", "mipmaps", "mip",
"ngon", "ngons",
@@ -508,6 +510,7 @@ class SpellChecker:
"nurb", "nurbs",
"perlin",
"phong",
+ "photorealistic",
"pinlight",
"posterize",
"qi",
@@ -675,7 +678,7 @@ class SpellChecker:
"ascii",
"atrac",
"avx",
- "bsdf",
+ "bsdf", "bsdfs",
"bssrdf",
"bw",
"ccd",
@@ -708,14 +711,17 @@ class SpellChecker:
"hdc",
"hdr", "hdri", "hdris",
"hh", "mm", "ss", "ff", # hh:mm:ss:ff timecode
+ "hpg", # Intel Xe-HPG architecture
"hsv", "hsva", "hsl",
"id",
"ies",
"ior",
"itu",
"jonswap",
+ "lfe",
"lhs",
"lmb", "mmb", "rmb",
+ "lscm",
"kb",
"mocap",
"msgid", "msgids",
diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py
index 37c5f6dd3ba..6b45a6f7e72 100755
--- a/release/scripts/modules/blend_render_info.py
+++ b/release/scripts/modules/blend_render_info.py
@@ -93,6 +93,11 @@ def _read_blend_rend_chunk_from_file(blendfile, filepath):
break
sizeof_data_left = struct.unpack('>i' if is_big_endian else '<i', blendfile.read(4))[0]
+ if sizeof_data_left < 0:
+ # Very unlikely, but prevent other errors.
+ sys.stderr.write("Negative block size found (corrupt file): %s\n" % filepath)
+ break
+
# 4 from the `head_id`, another 4 for the size of the BHEAD.
sizeof_bhead_left = sizeof_bhead - 8
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index aaa2ae59a0d..df0631ec26d 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -56,6 +56,21 @@ class Context(StructRNA):
if value is None:
return value
+ # If the attribute is a list property, apply subscripting.
+ if isinstance(value, list) and path_rest.startswith("["):
+ index_str, div, index_tail = path_rest[1:].partition("]")
+ if not div:
+ raise ValueError("Path index is not terminated: %s%s" % (attr, path_rest))
+ try:
+ index = int(index_str)
+ except ValueError:
+ raise ValueError("Path index is invalid: %s[%s]" % (attr, index_str))
+ if 0 <= index < len(value):
+ path_rest = index_tail
+ value = value[index]
+ else:
+ raise IndexError("Path index out of range: %s[%s]" % (attr, index_str))
+
# Resolve the rest of the path if necessary.
if path_rest:
path_resolve_fn = getattr(value, "path_resolve", None)
diff --git a/release/scripts/presets/cycles/performance/Default.py b/release/scripts/presets/cycles/performance/Default.py
new file mode 100644
index 00000000000..5c25f23eca0
--- /dev/null
+++ b/release/scripts/presets/cycles/performance/Default.py
@@ -0,0 +1,12 @@
+import bpy
+render = bpy.context.scene.render
+cycles = bpy.context.scene.cycles
+
+render.threads_mode = 'AUTO'
+render.use_persistent_data = False
+cycles.debug_use_spatial_splits = False
+cycles.debug_use_compact_bvh = False
+cycles.debug_use_hair_bvh = True
+cycles.debug_bvh_time_steps = 0
+cycles.use_auto_tile = True
+cycles.tile_size = 2048
diff --git a/release/scripts/presets/cycles/performance/Faster_Render.py b/release/scripts/presets/cycles/performance/Faster_Render.py
new file mode 100644
index 00000000000..7f1e3c68f1f
--- /dev/null
+++ b/release/scripts/presets/cycles/performance/Faster_Render.py
@@ -0,0 +1,12 @@
+import bpy
+render = bpy.context.scene.render
+cycles = bpy.context.scene.cycles
+
+render.threads_mode = 'AUTO'
+render.use_persistent_data = True
+cycles.debug_use_spatial_splits = True
+cycles.debug_use_compact_bvh = False
+cycles.debug_use_hair_bvh = True
+cycles.debug_bvh_time_steps = 2
+cycles.use_auto_tile = True
+cycles.tile_size = 2048
diff --git a/release/scripts/presets/cycles/performance/Lower_Memory.py b/release/scripts/presets/cycles/performance/Lower_Memory.py
new file mode 100644
index 00000000000..d1a45f1888d
--- /dev/null
+++ b/release/scripts/presets/cycles/performance/Lower_Memory.py
@@ -0,0 +1,12 @@
+import bpy
+render = bpy.context.scene.render
+cycles = bpy.context.scene.cycles
+
+render.threads_mode = 'AUTO'
+render.use_persistent_data = False
+cycles.debug_use_spatial_splits = False
+cycles.debug_use_compact_bvh = True
+cycles.debug_use_hair_bvh = True
+cycles.debug_bvh_time_steps = 0
+cycles.use_auto_tile = True
+cycles.tile_size = 512
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index c0db6c5f523..d08efc6909b 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -1027,7 +1027,7 @@ def km_markers(params):
("marker.select_box", {"type": 'B', "value": 'PRESS'}, None),
*_template_items_select_actions(params, "marker.select_all"),
("marker.delete", {"type": 'X', "value": 'PRESS'}, None),
- ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None),
+ ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, {"properties": [("confirm", False)]}),
op_panel("TOPBAR_PT_name_marker", {"type": 'F2', "value": 'PRESS'}, [("keep_open", False)]),
("marker.move", {"type": 'G', "value": 'PRESS'}, None),
("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
@@ -2578,10 +2578,8 @@ def km_nla_editor(params):
("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None),
("nla.meta_add", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
("nla.meta_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
- ("nla.duplicate", {"type": 'D', "value": 'PRESS', "shift": True},
- {"properties": [("linked", False)]}),
- ("nla.duplicate", {"type": 'D', "value": 'PRESS', "alt": True},
- {"properties": [("linked", True)]}),
+ ("nla.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
+ ("nla.duplicate_linked_move", {"type": 'D', "value": 'PRESS', "alt": True}, None),
("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None),
("nla.delete", {"type": 'X', "value": 'PRESS'}, None),
("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None),
@@ -4397,7 +4395,7 @@ def km_face_mask(params):
items.extend([
*_template_items_select_actions(params, "paint.face_select_all"),
- *_template_items_hide_reveal_actions("paint.face_select_hide", "paint.face_select_reveal"),
+ *_template_items_hide_reveal_actions("paint.face_select_hide", "paint.face_vert_reveal"),
("paint.face_select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
("paint.face_select_linked_pick", {"type": 'L', "value": 'PRESS'},
{"properties": [("deselect", False)]}),
@@ -4418,6 +4416,7 @@ def km_weight_paint_vertex_selection(params):
items.extend([
*_template_items_select_actions(params, "paint.vert_select_all"),
+ *_template_items_hide_reveal_actions("paint.vert_select_hide", "paint.face_vert_reveal"),
("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
("view3d.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True},
{"properties": [("mode", 'ADD')]}),
@@ -4968,6 +4967,7 @@ def km_vertex_paint(params):
op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}),
("wm.context_menu_enum", {"type": 'E', "value": 'PRESS'},
{"properties": [("data_path", 'tool_settings.vertex_paint.brush.stroke_method')]}),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
*_template_items_context_panel("VIEW3D_PT_paint_vertex_context_menu", params.context_menu_event),
])
@@ -5015,6 +5015,7 @@ def km_weight_paint(params):
("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.weight_paint.brush.use_smooth_stroke')]}),
op_menu_pie("VIEW3D_MT_wpaint_vgroup_lock_pie", {"type": 'K', "value": 'PRESS'}),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
*_template_items_context_panel("VIEW3D_PT_paint_weight_context_menu", params.context_menu_event),
])
diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
index d60bbfed67a..c9d66afb796 100644
--- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
+++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
@@ -844,7 +844,7 @@ def km_markers(params):
"shift": True}, {"properties": [("action", 'DESELECT')]}),
("marker.select_all", {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
("marker.delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, None),
- ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None),
+ ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, {"properties": [("confirm", False)]}),
op_panel("TOPBAR_PT_name_marker", {"type": 'RET', "value": 'PRESS'}, [("keep_open", False)]),
("marker.move", {"type": 'W', "value": 'PRESS'}, None),
])
@@ -2948,7 +2948,7 @@ def km_face_mask(params):
{"properties": [("unselected", False)]}),
("paint.face_select_hide", {"type": 'H', "value": 'PRESS', "shift": True},
{"properties": [("unselected", True)]}),
- ("paint.face_select_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
("paint.face_select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
("paint.face_select_linked_pick", {"type": 'L', "value": 'PRESS'},
{"properties": [("deselect", False)]}),
@@ -2969,6 +2969,9 @@ def km_weight_paint_vertex_selection(params):
items.extend([
("paint.vert_select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
+ ("paint.vert_select_hide", {"type": 'H', "value": 'PRESS', "shift": True},
+ {"properties": [("unselected", True)]}),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
])
return keymap
@@ -3330,6 +3333,7 @@ def km_vertex_paint(params):
("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.vertex_paint.brush.use_smooth_stroke')]}),
op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
*_template_items_context_panel("VIEW3D_PT_paint_vertex_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}),
# Tools
("paint.brush_select", {"type": 'D', "value": 'PRESS'},
@@ -3362,6 +3366,7 @@ def km_weight_paint(params):
{"properties": [("data_path", 'weight_paint_object.data.use_paint_mask')]}),
("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.weight_paint.brush.use_smooth_stroke')]}),
+ ("paint.face_vert_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
*_template_items_context_panel("VIEW3D_PT_paint_weight_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}),
# Bone selection for combined weight paint + pose mode.
("view3d.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index bad12ff4621..df4ca9ef170 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -14,6 +14,8 @@ from bpy.props import (
StringProperty,
)
+from bpy.app.translations import pgettext_tip as tip_
+
class NodeSetting(PropertyGroup):
value: StringProperty(
@@ -134,7 +136,7 @@ class NodeAddOperator:
nodetype = properties["type"]
bl_rna = bpy.types.Node.bl_rna_get_subclass(nodetype)
if bl_rna is not None:
- return bl_rna.description
+ return tip_(bl_rna.description)
else:
return ""
diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index c61dde87d7c..c4e3df469b7 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -128,8 +128,8 @@ def register():
return items
WindowManager.addon_search = StringProperty(
- name="Search",
- description="Search within the selected filter",
+ name="Filter",
+ description="Filter by add-on name, author & category",
options={'TEXTEDIT_UPDATE'},
)
WindowManager.addon_filter = EnumProperty(
diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index 8213a865990..a9a032ac4a3 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -218,6 +218,8 @@ class DATA_PT_camera_dof(CameraButtonsPanel, Panel):
col = layout.column()
col.prop(dof, "focus_object", text="Focus on Object")
+ if dof.focus_object and dof.focus_object.type == 'ARMATURE':
+ col.prop_search(dof, "focus_subtarget", dof.focus_object.data, "bones", text="Focus on Bone")
sub = col.column()
sub.active = (dof.focus_object is None)
sub.prop(dof, "focus_distance", text="Focus Distance")
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index a1c086db745..4d1514c2777 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -567,10 +567,10 @@ class DOPESHEET_PT_action(DopesheetActionPanelBase, Panel):
@classmethod
def poll(cls, context):
- return bool(context.selected_visible_actions)
+ return bool(context.active_action)
def draw(self, context):
- action = context.selected_visible_actions[0]
+ action = context.active_action
self.draw_generic_panel(context, self.layout, action)
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 5d25d02d98e..ab3c863ea2d 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -306,6 +306,7 @@ class IMAGE_MT_uvs_snap(Menu):
layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS'
layout.operator("uv.snap_cursor", text="Cursor to Selected").target = 'SELECTED'
+ layout.operator("uv.snap_cursor", text="Cursor to Origin").target = 'ORIGIN'
class IMAGE_MT_uvs_mirror(Menu):
@@ -572,6 +573,11 @@ class IMAGE_MT_uvs_snap_pie(Menu):
text="Selected to Adjacent Unselected",
icon='RESTRICT_SELECT_OFF',
).target = 'ADJACENT_UNSELECTED'
+ pie.operator(
+ "uv.snap_cursor",
+ text="Cursor to Origin",
+ icon='PIVOT_CURSOR',
+ ).target = 'ORIGIN'
class IMAGE_MT_view_pie(Menu):
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 060c00c0443..a99df1164a0 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -1650,7 +1650,7 @@ class SEQUENCER_PT_source(SequencerButtonsPanel, Panel):
if sound.samplerate <= 0:
split.label(text="Unknown")
else:
- split.label(text="%d Hz." % sound.samplerate, translate=False)
+ split.label(text="%d Hz" % sound.samplerate, translate=False)
split = col.split(factor=0.5, align=False)
split.alignment = 'RIGHT'
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index cccbb63d27c..52b2fb7f3da 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -589,12 +589,6 @@ class USERPREF_PT_system_cycles_devices(SystemPanel, CenterAlignMixIn, Panel):
addon.preferences.draw_impl(col, context)
del addon
- # NOTE: Disabled for until GPU side of OpenSubdiv is brought back.
- # system = prefs.system
- # if hasattr(system, "opensubdiv_compute_type"):
- # col.label(text="OpenSubdiv compute:")
- # col.row().prop(system, "opensubdiv_compute_type", text="")
-
class USERPREF_PT_system_os_settings(SystemPanel, CenterAlignMixIn, Panel):
bl_label = "Operating System Settings"
@@ -1485,11 +1479,13 @@ class USERPREF_PT_saveload_file_browser(SaveLoadPanel, CenterAlignMixIn, Panel):
prefs = context.preferences
paths = prefs.filepaths
+ col = layout.column(heading="Show Locations")
+ col.prop(paths, "show_recent_locations", text="Recent")
+ col.prop(paths, "show_system_bookmarks", text="System")
+
col = layout.column(heading="Defaults")
col.prop(paths, "use_filter_files")
col.prop(paths, "show_hidden_files_datablocks")
- col.prop(paths, "show_recent_locations")
- col.prop(paths, "show_system_bookmarks")
# -----------------------------------------------------------------------------
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 92dc4138530..1a30c666bcb 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -603,8 +603,8 @@ class VIEW3D_HT_header(Header):
show_snap = True
else:
if (object_mode not in {
- 'SCULPT', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT',
- 'PAINT_GPENCIL', 'SCULPT_GPENCIL', 'WEIGHT_GPENCIL', 'VERTEX_GPENCIL'
+ 'SCULPT', 'SCULPT_CURVES', 'VERTEX_PAINT', 'WEIGHT_PAINT', 'TEXTURE_PAINT',
+ 'PAINT_GPENCIL', 'SCULPT_GPENCIL', 'WEIGHT_GPENCIL', 'VERTEX_GPENCIL',
}) or has_pose_mode:
show_snap = True
else:
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index e59c98163d7..6f3054100f8 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -73,7 +73,7 @@ def curve_node_items(context):
yield NodeItem("GeometryNodeCurveLength")
yield NodeItem("GeometryNodeCurveToMesh")
yield NodeItem("GeometryNodeCurveToPoints")
- yield NodeItem("GeometryNodeDeformCurvesWithSurface")
+ yield NodeItem("GeometryNodeDeformCurvesOnSurface")
yield NodeItem("GeometryNodeFillCurve")
yield NodeItem("GeometryNodeFilletCurve")
yield NodeItem("GeometryNodeResampleCurve")