[Bf-blender-cvs] [4f69dca547c] master: Fix 'bl_app_override' wrapping multiple times.

Campbell Barton noreply at git.blender.org
Wed Mar 29 05:30:25 CEST 2017


Commit: 4f69dca547cf58f7a27dfa20699115e1171e84f1
Author: Campbell Barton
Date:   Wed Mar 29 14:29:18 2017 +1100
Branches: master
https://developer.blender.org/rB4f69dca547cf58f7a27dfa20699115e1171e84f1

Fix 'bl_app_override' wrapping multiple times.

Calling `SomeClass.draw(self, context)` instead of `self.draw()`
would try to wrap the argument `self` multiple times, causing an error.

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

M	release/scripts/modules/bl_app_override/__init__.py

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

diff --git a/release/scripts/modules/bl_app_override/__init__.py b/release/scripts/modules/bl_app_override/__init__.py
index 66857701669..89cc8a0eb28 100644
--- a/release/scripts/modules/bl_app_override/__init__.py
+++ b/release/scripts/modules/bl_app_override/__init__.py
@@ -147,10 +147,12 @@ def ui_draw_filter_register(
             return super().operator(*args, **kw)
 
     def draw_override(func_orig, self_real, context):
-        # simple, no wrapping
-        # return func_orig(self_wrap, context)
+        cls_real = self_real.__class__
+        if cls_real is super:
+            # simple, no wrapping
+            return func_orig(self_real, context)
 
-        class Wrapper(self_real.__class__):
+        class Wrapper(cls_real):
             __slots__ = ()
             def __getattribute__(self, attr):
                 if attr == "layout":




More information about the Bf-blender-cvs mailing list