Issue 99123 - Hyperlink is lost on import if assigned to transparent object.
Summary: Hyperlink is lost on import if assigned to transparent object.
Status: CLOSED FIXED
Alias: None
Product: Impress
Classification: Application
Component: code (show other issues)
Version: DEV300m40
Hardware: All All
: P3 Trivial (vote)
Target Milestone: OOo 3.1
Assignee: wolframgarten
QA Contact: issues@graphics
URL:
Keywords: oooqa, release_blocker
Depends on:
Blocks: 95768
  Show dependency tree
 
Reported: 2009-02-11 16:16 UTC by mikhail.voytenko
Modified: 2009-02-26 10:31 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
Reduced BugDoc with invisible object containing a UserAction (118.43 KB, text/plain)
2009-02-12 11:52 UTC, Armin Le Grand
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description mikhail.voytenko 2009-02-11 16:16:14 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.
Comment 1 mikhail.voytenko 2009-02-11 16:18:57 UTC
The bugdoc can be found in q:\bugdocs\issuezilla\099000\099123.pps
Comment 2 Armin Le Grand 2009-02-11 16:48:26 UTC
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.
Comment 3 Armin Le Grand 2009-02-11 17:40:02 UTC
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.
Comment 4 Armin Le Grand 2009-02-12 11:52:34 UTC
Created attachment 60122 [details]
Reduced BugDoc with invisible object containing a UserAction
Comment 5 Armin Le Grand 2009-02-12 12:07:38 UTC
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...
Comment 6 Armin Le Grand 2009-02-12 12:32:11 UTC
AW: Works as expected, committed changes to drawinglayer and svx. Added task to
CWS aw063. Done.
Comment 7 Armin Le Grand 2009-02-12 13:19:58 UTC
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.
Comment 8 wolframgarten 2009-02-12 15:50:38 UTC
Verified in CWS.
Comment 9 wolframgarten 2009-02-26 10:31:08 UTC
Tested in OOO310_m3. Closed.