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:
authorHans Goudey <h.goudey@me.com>2022-10-07 07:26:44 +0300
committerHans Goudey <h.goudey@me.com>2022-10-07 07:26:44 +0300
commit2c803124d371bbbd564dd4c5051258f53b799d36 (patch)
tree2fc642f1aa96ed9464483a7a7c57cf82f7531578 /release
parent846d8ef8568c035cd7d4e1a8168a4ba391de9119 (diff)
parentcafd204af6d9969654bdee5ae14fef220640487c (diff)
Merge branch 'master' into refactor-mesh-position-generic
Diffstat (limited to 'release')
-rw-r--r--release/datafiles/blender_icons.svg30
-rw-r--r--release/datafiles/blender_icons16/icon16_mod_envelope.datbin0 -> 1048 bytes
-rw-r--r--release/datafiles/blender_icons16/icon16_mod_outline.datbin0 -> 1048 bytes
-rw-r--r--release/datafiles/blender_icons32/icon32_mod_envelope.datbin0 -> 4120 bytes
-rw-r--r--release/datafiles/blender_icons32/icon32_mod_outline.datbin0 -> 4120 bytes
m---------release/scripts/addons0
-rw-r--r--release/scripts/modules/bl_i18n_utils/bl_extract_messages.py19
-rw-r--r--release/scripts/modules/bl_i18n_utils/settings.py4
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py13
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py4
-rw-r--r--release/scripts/startup/bl_operators/assets.py5
-rw-r--r--release/scripts/startup/bl_ui/node_add_menu_geometry.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_output.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py2
-rw-r--r--release/scripts/startup/bl_ui/space_topbar.py18
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py11
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py2
17 files changed, 99 insertions, 19 deletions
diff --git a/release/datafiles/blender_icons.svg b/release/datafiles/blender_icons.svg
index 41707261ac6..9dc7b184b12 100644
--- a/release/datafiles/blender_icons.svg
+++ b/release/datafiles/blender_icons.svg
@@ -18997,6 +18997,36 @@
id="path4817-4"
inkscape:connector-curvature="0" />
</g>
+ <g
+ id="g24638">
+ <path
+ style="color:#000000;fill:none;stroke-linecap:round;-inkscape-stroke:none;opacity:1;stroke:#ffffff;stroke-opacity:1;stroke-linejoin:round"
+ d="m 374.12695,305.31445 c -1.10721,0 -1.93616,0.24199 -2.97851,0.63086 -1.04236,0.38888 -2.18224,0.95849 -3.30078,1.77735 -2.2371,1.63771 -4.46485,4.54533 -4.46485,8.40625 a 3.0581999,3.0581999 0 0 0 3.0586,3.05859 3.0581999,3.0581999 0 0 0 3.05859,-3.05859 c 0,-1.63187 0.77567,-2.603 1.96094,-3.47071 0.59263,-0.43385 1.26841,-0.77311 1.82422,-0.98047 0.5558,-0.20735 1.10962,-0.24804 0.84179,-0.24804 a 3.0581999,3.0581999 0 0 0 3.05664,-3.0586 3.0581999,3.0581999 0 0 0 -3.05664,-3.05664 z"
+ id="path6454-6" />
+ <path
+ style="display:inline;opacity:0.5;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
+ d="m 366.4419,316.12916 c 0,-5.49278 6.00534,-7.75723 7.68412,-7.75723"
+ id="path15424"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ id="g24643">
+ <path
+ style="opacity:0.5;fill:#ffffff;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
+ d="m 343.45275,317.52104 4.51631,-3.99333"
+ id="path4694"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
+ d="m 342.44508,318.83525 c 14.125,0.14581 -0.42233,-12.9179 13.5429,-12.85486"
+ id="path6454"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="opacity:0.5;fill:#ffffff;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
+ d="m 350.84964,311.18794 4.21454,-3.72502"
+ id="path19640"
+ sodipodi:nodetypes="cc" />
+ </g>
</g>
<g
inkscape:groupmode="layer"
diff --git a/release/datafiles/blender_icons16/icon16_mod_envelope.dat b/release/datafiles/blender_icons16/icon16_mod_envelope.dat
new file mode 100644
index 00000000000..7a4a1c2e569
--- /dev/null
+++ b/release/datafiles/blender_icons16/icon16_mod_envelope.dat
Binary files differ
diff --git a/release/datafiles/blender_icons16/icon16_mod_outline.dat b/release/datafiles/blender_icons16/icon16_mod_outline.dat
new file mode 100644
index 00000000000..fa15aabec55
--- /dev/null
+++ b/release/datafiles/blender_icons16/icon16_mod_outline.dat
Binary files differ
diff --git a/release/datafiles/blender_icons32/icon32_mod_envelope.dat b/release/datafiles/blender_icons32/icon32_mod_envelope.dat
new file mode 100644
index 00000000000..b0799fc33f2
--- /dev/null
+++ b/release/datafiles/blender_icons32/icon32_mod_envelope.dat
Binary files differ
diff --git a/release/datafiles/blender_icons32/icon32_mod_outline.dat b/release/datafiles/blender_icons32/icon32_mod_outline.dat
new file mode 100644
index 00000000000..19d31834fcb
--- /dev/null
+++ b/release/datafiles/blender_icons32/icon32_mod_outline.dat
Binary files differ
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject 726d08c9036b939f46b59bceb72a61e3102600c
+Subproject eb09be71a96c4fe910fdc43373be5ec08b419d2
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 21ca38bff20..18a41d86322 100644
--- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
+++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
@@ -978,17 +978,30 @@ def dump_messages(do_messages, do_checks, settings):
# Get strings from addons' bl_info.
import addon_utils
for module in addon_utils.modules():
- if module.bl_info['support'] != 'OFFICIAL':
+ # Only process official add-ons, i.e. those marked as 'OFFICIAL' and
+ # existing in the system add-ons directory (not user-installed ones).
+ if (module.bl_info['support'] != 'OFFICIAL'
+ or not bpy.path.is_subdir(module.__file__, bpy.utils.system_resource('SCRIPTS'))):
continue
dump_addon_bl_info(msgs, reports, module, settings)
# Get strings from addons' categories.
+ system_categories = set()
+ for module in addon_utils.modules():
+ if bpy.path.is_subdir(module.__file__, bpy.utils.system_resource('SCRIPTS')):
+ system_categories.add(module.bl_info['category'])
for uid, label, tip in bpy.types.WindowManager.addon_filter.keywords['items'](
bpy.context.window_manager,
bpy.context,
):
- process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings)
- if tip:
+ if label in system_categories:
+ # Only process add-on if it a system one (i.e shipped with Blender). Also,
+ # we do want to translate official categories, even if they have no official add-ons,
+ # hence the different test than below.
+ process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings)
+ elif tip:
+ # Only special categories get a tip (All and User).
+ process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings)
process_msg(msgs, settings.DEFAULT_CONTEXT, tip, "Add-ons' categories", reports, None, settings)
# Get strings specific to translations' menu.
diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py
index a8a3ed9f4b7..95de2abc709 100644
--- a/release/scripts/modules/bl_i18n_utils/settings.py
+++ b/release/scripts/modules/bl_i18n_utils/settings.py
@@ -260,9 +260,9 @@ PYGETTEXT_KEYWORDS = (() +
# 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
# becomes extremely slow to process some (unrelated) source files.
- ((r"\{(?:(?:\s*\"[^\"',]+\"\s*,)|(?:\s*NULL\s*,)){4}\s*" +
+ ((r"\{(?:(?:\s*\"[^\",]+\"\s*,)|(?:\s*\"\\\"\",)|(?:\s*NULL\s*,)){4}\s*" +
_msg_re + r"\s*,(?:(?:\s*\"[^\"',]+\"\s*,)|(?:\s*NULL\s*,))(?:[^,]+,){2}"
- + "\s*B_UNIT_DEF_[_A-Z]+\s*\}"),) +
+ + "(?:\|?\s*B_UNIT_DEF_[_A-Z]+\s*)+\}"),) +
tuple((r"{}\(\s*" + _msg_re + r"\s*,\s*(?:" +
r"\s*,\s*)?(?:".join(_ctxt_re_gen(i) for i in range(PYGETTEXT_MAX_MULTI_CTXT)) + r")?\s*\)").format(it)
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index ab678ba27c8..5275a83e062 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -142,8 +142,17 @@ def object_data_add(context, obdata, operator=None, name=None):
bpy.ops.object.mode_set(mode='EDIT')
else:
layer.objects.active = obj_new
- if obdata and context.preferences.edit.use_enter_edit_mode:
- bpy.ops.object.mode_set(mode='EDIT')
+ if context.preferences.edit.use_enter_edit_mode:
+ if obdata and obdata.library is None:
+ obtype = obj_new.type
+ mode = None
+ if obtype in {'ARMATURE', 'CURVE', 'CURVES', 'FONT', 'LATTICE', 'MESH', 'META', 'SURFACE'}:
+ mode = 'EDIT'
+ elif obtype == 'GPENCIL':
+ mode = 'EDIT_GPENCIL'
+
+ if mode is not None:
+ bpy.ops.object.mode_set(mode=mode)
return obj_new
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 75d0717184e..5ab9cdb542a 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -5069,8 +5069,8 @@ def km_sculpt(params):
{"properties": [("mode", 'TOGGLE')]}),
("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "shift": True},
{"properties": [("mode", 'HIDE_ACTIVE')]}),
- ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "alt": True},
- {"properties": [("mode", 'SHOW_ALL')]}),
+ ("sculpt.reveal_all", {"type": 'H', "value": 'PRESS', "alt": True},
+ {"properties": []}),
("sculpt.face_set_edit", {"type": 'W', "value": 'PRESS', "ctrl": True},
{"properties": [("mode", 'GROW')]}),
diff --git a/release/scripts/startup/bl_operators/assets.py b/release/scripts/startup/bl_operators/assets.py
index 088f4189ca5..d8182e25641 100644
--- a/release/scripts/startup/bl_operators/assets.py
+++ b/release/scripts/startup/bl_operators/assets.py
@@ -4,6 +4,9 @@ from __future__ import annotations
import bpy
from bpy.types import Operator
+from bpy.app.translations import pgettext_data as data_
+
+
from bpy_extras.asset_utils import (
SpaceAssetInfo,
)
@@ -33,7 +36,7 @@ class ASSET_OT_tag_add(AssetBrowserMetadataOperator, Operator):
def execute(self, context):
active_asset = SpaceAssetInfo.get_active_asset(context)
- active_asset.tags.new("Tag")
+ active_asset.tags.new(data_("Tag"))
return {'FINISHED'}
diff --git a/release/scripts/startup/bl_ui/node_add_menu_geometry.py b/release/scripts/startup/bl_ui/node_add_menu_geometry.py
index 3544c9a4925..e1b57ec4f43 100644
--- a/release/scripts/startup/bl_ui/node_add_menu_geometry.py
+++ b/release/scripts/startup/bl_ui/node_add_menu_geometry.py
@@ -62,6 +62,7 @@ class NODE_MT_geometry_node_GEO_CURVE(Menu):
node_add_menu.add_node_type(layout, "GeometryNodeSplineParameter")
node_add_menu.add_node_type(layout, "GeometryNodeInputSplineResolution")
layout.separator()
+ node_add_menu.add_node_type(layout, "GeometryNodeSetCurveNormal")
node_add_menu.add_node_type(layout, "GeometryNodeSetCurveRadius")
node_add_menu.add_node_type(layout, "GeometryNodeSetCurveTilt")
node_add_menu.add_node_type(layout, "GeometryNodeSetCurveHandlePositions")
@@ -93,7 +94,7 @@ class NODE_MT_geometry_node_curve_topology(Menu):
def draw(self, _context):
layout = self.layout
- node_add_menu.add_node_type(layout, "GeometryNodeInputControlPointNeighbors")
+ node_add_menu.add_node_type(layout, "GeometryNodeOffsetPointInCurve")
node_add_menu.add_node_type(layout, "GeometryNodeCurveOfPoint")
node_add_menu.add_node_type(layout, "GeometryNodePointsOfCurve")
@@ -198,6 +199,7 @@ class NODE_MT_geometry_node_GEO_MESH(Menu):
node_add_menu.add_node_type(layout, "GeometryNodeMeshToPoints")
node_add_menu.add_node_type(layout, "GeometryNodeMeshToVolume")
node_add_menu.add_node_type(layout, "GeometryNodeSampleNearestSurface")
+ node_add_menu.add_node_type(layout, "GeometryNodeSampleUVSurface")
node_add_menu.add_node_type(layout, "GeometryNodeScaleElements")
node_add_menu.add_node_type(layout, "GeometryNodeSplitEdges")
node_add_menu.add_node_type(layout, "GeometryNodeSubdivideMesh")
@@ -232,6 +234,7 @@ class NODE_MT_category_PRIMITIVES_MESH(Menu):
node_add_menu.add_node_type(layout, "GeometryNodeMeshIcoSphere")
node_add_menu.add_node_type(layout, "GeometryNodeMeshCircle")
node_add_menu.add_node_type(layout, "GeometryNodeMeshLine")
+ node_add_menu.add_node_type(layout, "GeometryNodeMeshUVSphere")
class NODE_MT_geometry_node_mesh_topology(Menu):
diff --git a/release/scripts/startup/bl_ui/properties_output.py b/release/scripts/startup/bl_ui/properties_output.py
index bc7e8bb4347..ca0e698500e 100644
--- a/release/scripts/startup/bl_ui/properties_output.py
+++ b/release/scripts/startup/bl_ui/properties_output.py
@@ -3,7 +3,10 @@ import bpy
from bpy.types import Menu, Panel, UIList
from bl_ui.utils import PresetPanel
-from bpy.app.translations import pgettext_tip as tip_
+from bpy.app.translations import (
+ contexts as i18n_contexts,
+ pgettext_tip as tip_,
+)
class RENDER_PT_format_presets(PresetPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 080c8ca5726..c42275fcd54 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -1679,7 +1679,7 @@ class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
if part.use_roughness_curve:
sub = col.column()
sub.template_curve_mapping(part, "roughness_curve")
- sub.prop(part, "roughness_1", text=iface_("Roughness", i18n_contexts.id_particlesettings))
+ sub.prop(part, "roughness_1", text="Roughness", text_ctxt=i18n_contexts.id_particlesettings)
sub.prop(part, "roughness_1_size", text="Size")
else:
sub = col.column(align=True)
diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py
index da089ea23b0..3320e1e24a7 100644
--- a/release/scripts/startup/bl_ui/space_topbar.py
+++ b/release/scripts/startup/bl_ui/space_topbar.py
@@ -2,7 +2,10 @@
import bpy
from bpy.types import Header, Menu, Panel
-from bpy.app.translations import pgettext_iface as iface_
+from bpy.app.translations import (
+ pgettext_iface as iface_,
+ contexts as i18n_contexts,
+)
class TOPBAR_HT_upper_bar(Header):
@@ -269,7 +272,7 @@ class TOPBAR_MT_file(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_AREA'
- layout.menu("TOPBAR_MT_file_new", text="New", icon='FILE_NEW')
+ layout.menu("TOPBAR_MT_file_new", text="New", text_ctxt=i18n_contexts.id_windowmanager, icon='FILE_NEW')
layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
layout.menu("TOPBAR_MT_file_open_recent")
layout.operator("wm.revert_mainfile")
@@ -408,9 +411,16 @@ class TOPBAR_MT_file_defaults(Menu):
app_template, has_ext=False))
layout.operator("wm.save_homefile")
- props = layout.operator("wm.read_factory_settings")
if app_template:
+ display_name = bpy.path.display_name(iface_(app_template))
+ props = layout.operator("wm.read_factory_settings", text="Load Factory Blender Settings")
+ props.app_template = app_template
+ props = layout.operator("wm.read_factory_settings", text="Load Factory %s Settings" % display_name)
props.app_template = app_template
+ props.use_factory_startup_app_template_only = True
+ del display_name
+ else:
+ layout.operator("wm.read_factory_settings")
# Include technical operators here which would otherwise have no way for users to access.
@@ -724,7 +734,7 @@ class TOPBAR_MT_file_context_menu(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_AREA'
- layout.menu("TOPBAR_MT_file_new", text="New", icon='FILE_NEW')
+ layout.menu("TOPBAR_MT_file_new", text="New", text_ctxt=i18n_contexts.id_windowmanager, icon='FILE_NEW')
layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
layout.separator()
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 441babefd60..a9736feb057 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -109,7 +109,16 @@ class USERPREF_MT_save_load(Menu):
sub_revert.operator("wm.read_userpref", text="Revert to Saved Preferences")
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.read_factory_userpref", text="Load Factory Preferences")
+
+ app_template = prefs.app_template
+ if app_template:
+ display_name = bpy.path.display_name(iface_(app_template))
+ layout.operator("wm.read_factory_userpref", text="Load Factory Blender Preferences")
+ props = layout.operator("wm.read_factory_userpref", text="Load Factory %s Preferences" % display_name)
+ props.use_factory_startup_app_template_only = True
+ del display_name
+ else:
+ layout.operator("wm.read_factory_userpref", text="Load Factory Preferences")
class USERPREF_PT_save_preferences(Panel):
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index c1f2bef95e8..3357676bf2f 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -278,7 +278,7 @@ class TEXTURE_UL_texpaintslots(UIList):
# mat = data
if self.layout_type in {'DEFAULT', 'COMPACT'}:
- layout.prop(item, "name", text="", emboss=False, icon_value=item.icon_value)
+ layout.label(text=item.name, icon_value=item.icon_value)
elif self.layout_type == 'GRID':
layout.alignment = 'CENTER'
layout.label(text="")