[Bf-blender-cvs] [3b5a81936d8] master: Fix custom property UI handling names with quotes and back-slashes

Campbell Barton noreply at git.blender.org
Wed Dec 9 07:05:16 CET 2020


Commit: 3b5a81936d8955a2de3ab4d3732bc5a7f9baec8a
Author: Campbell Barton
Date:   Wed Dec 9 17:01:03 2020 +1100
Branches: master
https://developer.blender.org/rB3b5a81936d8955a2de3ab4d3732bc5a7f9baec8a

Fix custom property UI handling names with quotes and back-slashes

Custom property names wasn't escaping strings, causing exceptions
editing custom properties with characters that needed to be escaped.

===================================================================

M	release/scripts/modules/rna_prop_ui.py
M	release/scripts/startup/bl_operators/wm.py

===================================================================

diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py
index 8fdd66dff9f..e3158118146 100644
--- a/release/scripts/modules/rna_prop_ui.py
+++ b/release/scripts/modules/rna_prop_ui.py
@@ -49,7 +49,7 @@ def rna_idprop_ui_del(item):
 
 
 def rna_idprop_quote_path(prop):
-    return "[\"%s\"]" % prop.replace("\"", "\\\"")
+    return "[\"%s\"]" % bpy.utils.escape_identifier(prop)
 
 
 def rna_idprop_ui_prop_update(item, prop):
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 387e93cb769..3d8ed7ef0b5 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -1265,6 +1265,7 @@ class WM_OT_properties_edit(Operator):
 
         data_path = self.data_path
         prop = self.property
+        prop_escape = bpy.utils.escape_identifier(prop)
 
         prop_old = getattr(self, "_last_prop", [None])[0]
 
@@ -1289,7 +1290,7 @@ class WM_OT_properties_edit(Operator):
 
         # Reassign
         item[prop] = value_eval
-        item.property_overridable_library_set('["%s"]' % prop, self.is_overridable_library)
+        item.property_overridable_library_set('["%s"]' % prop_escape, self.is_overridable_library)
         rna_idprop_ui_prop_update(item, prop)
 
         self._last_prop[:] = [prop]
@@ -1322,7 +1323,7 @@ class WM_OT_properties_edit(Operator):
 
         # If we have changed the type of the property, update its potential anim curves!
         if prop_type_old != prop_type_new:
-            data_path = '["%s"]' % bpy.utils.escape_identifier(prop)
+            data_path = '["%s"]' % prop_escape
             done = set()
 
             def _update(fcurves):
@@ -1364,13 +1365,16 @@ class WM_OT_properties_edit(Operator):
             rna_idprop_value_item_type
         )
 
+        prop = self.property
+        prop_escape = bpy.utils.escape_identifier(prop)
+
         data_path = self.data_path
 
         if not data_path:
             self.report({'ERROR'}, "Data path not set")
             return {'CANCELLED'}
 
-        self._last_prop = [self.property]
+        self._last_prop = [prop]
 
         item = eval("context.%s" % data_path)
 
@@ -1379,7 +1383,7 @@ class WM_OT_properties_edit(Operator):
             return {'CANCELLED'}
 
         # retrieve overridable static
-        is_overridable = item.is_property_overridable_library('["%s"]' % self.property)
+        is_overridable = item.is_property_overridable_library('["%s"]' % prop_escape)
         self.is_overridable_library = bool(is_overridable)
 
         # default default value
@@ -1390,7 +1394,7 @@ class WM_OT_properties_edit(Operator):
             self.default = ""
 
         # setup defaults
-        prop_ui = rna_idprop_ui_prop_get(item, self.property, False)  # don't create
+        prop_ui = rna_idprop_ui_prop_get(item, prop, False)  # don't create
         if prop_ui:
             self.min = prop_ui.get("min", -1000000000)
             self.max = prop_ui.get("max", 1000000000)



More information about the Bf-blender-cvs mailing list