words: images with anchoring enabled will be saved twice to odf.

Boudewijn Rempt boud at valdyas.org
Fri Dec 16 11:47:15 GMT 2011


On Friday 16 December 2011 Dec, Silvio Heinrich wrote:
> There is a problem when saving a text document that contains anchored 
> images.
> In the saving process the saveOdf method of the shape (the pictureshape 
> in this case) is called twice because the shape itself exists twice in 
> the document.
> The shape is added to the KWDocument and if it is anchored it is also 
> passed to a KoTextAnchor instance that is added as an inline object.
> Now when saving it seems as if first all the shapes and then all the 
> inline objects will be saved.
> That leads to an odf output like this:
> 
> // 1. pictureshape is saves
> <frame ...><image .../></frame>
> // 2. inline object (the KoTextAnchor) is saved
> // it puts a paragraph tag around the image and calls the safeOdf method 
> of the imageshape again
> <p ...><frame ...><image .../></frame></p>
> 
> So for me it seems when the shape is anchored it should be removed from 
> the KWDocument
> but on the other hand it needs to be present in the KWDocument to render 
> and interact with the shape.
> 
> Does anyone have a guess how to solve this problem?

I've gone through the code as well, and I'm beginning to think that there are two options:

1) mark the shape as anchored and if so, not save except through KoTextAnchor
2) on saving, get a list of anchored shapes from the text document, add that to the shapesavingcontext as a list of do-not-save-shapes, and make all shapes check that list. That would be more generic, but also slower.

-- 
Boudewijn Rempt
http://www.valdyas.org, http://www.krita.org, http://www.boudewijnrempt.nl



More information about the calligra-devel mailing list