Apache OpenOffice (AOO) Bugzilla – Issue 99123
Hyperlink is lost on import if assigned to transparent object.
Last modified: 2009-02-26 10:31:08 UTC
To reproduce please open the bugdoc document, start the slide-show and go to the last page of the presentation. There is no hyperlink in OOo3.1, although OOo3.0.1 works well. According to sj the problem looks to be that the hyperlink is assigned to a transparent object, and thus is no more available in OOo3.1.
The bugdoc can be found in q:\bugdocs\issuezilla\099000\099123.pps
AW: Problem is the usage of MetaFile for presentation, one more argument to change to primitive usage. MetaFile is a paint recording, while primitives are a scene graph. In the primitives is an extra handling for invisible objects to derive valid BoundRects for them; in it's usage as scene graph this is valid. The MetaFile does not contain data anymore for invisible objects. This was the case before by pure chance, e.g. VCL could have since ever not recorded paints when pen and fill is not set. It is not a good idea to base the BoundRect functionality in the slideshow on such data. The ideal scenario would be (A): The Slideshow uses primitives and such gets a correct BoundRect even for invisible objects. With MetaFile in Slideshow (B): When slideshow gets the MetaFile for each object, it seems to generate the BoundRect from it. If this is empty, use the API and xShape to get topLeft() amd Size() and build a BoundRect from them. With primitive renderer (C): Do not ignore invisible geometry when emulating the MetaFile generation, but paint an invisible rectangle instead. The letters are in order of clean programming, but in the inverse order of time needed for the change.
AW: Experimented a bit. There are various hidden shapes, but the one in question is not added. It seems to be an AutoShape, so i will need to look deeper. Need to add a look at svx, though.
Created attachment 60122 [details] Reduced BugDoc with invisible object containing a UserAction
AW: It is indeed an AutoShape who's decomposition creates an empty sequence of prmitives. While this sounds correct in the first place, for emulating the old MetaFile behaviour, it will be necessary to produce primitives for invisible geometries; that's what the slideshow implementation currently is based on. It wants to have MetaFile entries for painting an invisible object. To emulate that, i will need to do two changes: (1) Create helper data for invisible geometries, using HitTestPrimitive2D which luckily already exists and adapting primitive creators (in this case ViewContactOfSdrRectObj::createViewIndependentPrimitive2DSequence()) to do so. (2) Change VclMetafileProcessor2D (the primitive rendeer producing MetaFiles in a compatible way) to no longer ignore HitTestPrimitive2D, but to paint empty rectangles instead. Added a reduced BugDoc, doing some more tests, looking for a CWS to add...
AW: Works as expected, committed changes to drawinglayer and svx. Added task to CWS aw063. Done.
AW->WG: Please verify. Use BugDoc, presentation -> in the lower third of the screen should be a link, hoovering above it should change the mousepointer, clicking it should trigger the browser.
Verified in CWS.
Tested in OOO310_m3. Closed.