Fix T59461: Follow active quad asserts
authorCampbell Barton <ideasman42@gmail.com>
Tue, 18 Dec 2018 02:35:43 +0000 (13:35 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 18 Dec 2018 02:35:43 +0000 (13:35 +1100)
release/scripts/startup/bl_operators/uvcalc_follow_active.py

index 58d604264641af5745249aa1ac8d1ac47fb50d26..21c89444a32ecf3633f4c5ec01f313912712be32 100644 (file)
@@ -34,14 +34,14 @@ STATUS_ERR_NOT_QUAD = (1 << 3)
 def extend(obj, operator, EXTEND_MODE):
     import bmesh
     me = obj.data
-    # script will fail without UVs
-    if not me.uv_layers:
-        me.uv_layers.new()
 
     bm = bmesh.from_edit_mesh(me)
 
+    faces = [f for f in bm.faces if f.select and len(f.verts) == 4]
+    if not faces:
+        return 0
+
     f_act = bm.faces.active
-    uv_act = bm.loops.layers.uv.active
 
     if f_act is None:
         return STATUS_ERR_ACTIVE_FACE
@@ -50,7 +50,11 @@ def extend(obj, operator, EXTEND_MODE):
     elif len(f_act.verts) != 4:
         return STATUS_ERR_NOT_QUAD
 
-    faces = [f for f in bm.faces if f.select and len(f.verts) == 4]
+    # Script will fail without UVs.
+    if not me.uv_layers:
+        me.uv_layers.new()
+
+    uv_act = bm.loops.layers.uv.active
 
     # our own local walker
     def walk_face_init(faces, f_act):
@@ -222,16 +226,9 @@ def main(context, operator):
     num_errors = 0
     status = 0
 
-    ob_list = [ob for ob in context.selected_objects if ob and ob.type == 'MESH']
+    ob_list = context.objects_in_mode_unique_data
     for ob in ob_list:
-        ob.data.tag = False
-
-    for ob in ob_list:
-        if ob.data.tag:
-            continue
-
         num_meshes += 1
-        ob.data.tag = True
 
         ret = extend(ob, operator, operator.properties.mode)
         if ret != STATUS_OK: