diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py index 1b7d5e3a40d..6af6488e86b 100644 --- a/release/scripts/startup/bl_operators/image.py +++ b/release/scripts/startup/bl_operators/image.py @@ -118,16 +118,24 @@ class SaveDirty(Operator): unique_paths = set() for image in bpy.data.images: if image.is_dirty: - filepath = bpy.path.abspath(image.filepath) - if "\\" not in filepath and "/" not in filepath: - self.report({'WARNING'}, "Invalid path: " + filepath) - elif filepath in unique_paths: - self.report({'WARNING'}, - "Path used by more then one image: %r" % - filepath) + if image.packed_file: + if image.library: + self.report({'WARNING'}, + "Packed library image: %r from library %r can't be re-packed" % + (image.name, image.library.filepath)) + else: + image.pack(as_png=True) else: - unique_paths.add(filepath) - image.save() + filepath = bpy.path.abspath(image.filepath, library=image.library) + if "\\" not in filepath and "/" not in filepath: + self.report({'WARNING'}, "Invalid path: " + filepath) + elif filepath in unique_paths: + self.report({'WARNING'}, + "Path used by more then one image: %r" % + filepath) + else: + unique_paths.add(filepath) + image.save() return {'FINISHED'}