Closed Bug 351798 Opened 18 years ago Closed 18 years ago

Path mouseover fires outside svg

Categories

(Core :: SVG, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

VERIFIED FIXED

People

(Reporter: Richard.M.Smith, Assigned: tor)

Details

(Keywords: testcase, verified1.8.1.2)

Attachments

(5 files, 2 obsolete files)

User-Agent:       Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ONS Internet Explorer 6.1; .NET CLR 1.1.4322)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2

I have a multi-part SVG consisting of a number of sections each one defined within its own svg. The "map" section contains geographic area polygons defined via path statements. Sometimes the coordinates of the polygons exceed the viewbox dimensions, i.e. only part of the polygon is inside the map area. These are clipped to the inner svg but the mouseover event still fires in the area outside the SVG where the polygon would have extended were it not clipped. Sounds complex but very easy to see with the attached testcase.

Reproducible: Always

Steps to Reproduce:
1. Load the attached testcase into Firefox
2. Hold the mouse over the text "HELLO".
3.

Actual Results:  
The mouseover associated with the path inside the square fires ("polygon mouseover" alert)

Expected Results:  
The mouseover associated with the text element ("hello" alert) should have fired.

This problem occurs with Firefox 2.2 but not with Opera 9.1. I have worked around it by modifying the path coordinates in XSL so that they do not lie outside the viewbox.
Attached image svg testcase
Attachment #237317 - Attachment mime type: text/xml → image/svg+xml
Keywords: testcase
Assignee: general → tor
Status: UNCONFIRMED → NEW
Ever confirmed: true
Attachment #237398 - Flags: review?(roc)
Can't you share code for the GetFrameForPoint too?
Attached image image hit testing testcase (obsolete) —
Attachment #238657 - Attachment is obsolete: true
Attachment #237398 - Attachment is obsolete: true
Attachment #238668 - Flags: review?(roc)
Attachment #237398 - Flags: review?(roc)
Comment on attachment 238668 [details] [diff] [review]
fix up image hit testing, makes code sharing less likely

+  PRBool rv = PR_TRUE;

Call this "result" or something else, since we normally use rv for nsresults.
Attachment #238668 - Flags: superreview+
Attachment #238668 - Flags: review?(roc)
Attachment #238668 - Flags: review+
Checked in.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Attachment #242220 - Flags: review?(longsonr)
Comment on attachment 242220 [details] [diff] [review]
backported branch patch

I don't know whether GDI+ still compiles/runs on the branch. It won't after this with the cairo code directly in nsSVGUtils.cpp. I assume you don't regard this as a problem.

>+already_AddRefed<nsIDOMSVGMatrix>
>+nsSVGImageFrame::GetImageTransform()
>+{

>+  // default to the defaults
>+  if (align == nsIDOMSVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_UNKNOWN)
>+    align = nsIDOMSVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_XMIDYMID;
>+  if (meetOrSlice == nsIDOMSVGPreserveAspectRatio::SVG_MEETORSLICE_UNKNOWN)
>+    meetOrSlice = nsIDOMSVGPreserveAspectRatio::SVG_MEETORSLICE_MEET;

Worth porting bug 328348 first? I don't suppose it matters for a branch patch.

r=longsonr
Attachment #242220 - Flags: review?(longsonr) → review+
(In reply to comment #11)
> (From update of attachment 242220 [details] [diff] [review] [edit])
> I don't know whether GDI+ still compiles/runs on the branch. It won't after
> this with the cairo code directly in nsSVGUtils.cpp. I assume you don't regard
> this as a problem.

Yeah, GDI+ is dead to us.

> >+already_AddRefed<nsIDOMSVGMatrix>
> >+nsSVGImageFrame::GetImageTransform()
> >+{
> 
> >+  // default to the defaults
> >+  if (align == nsIDOMSVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_UNKNOWN)
> >+    align = nsIDOMSVGPreserveAspectRatio::SVG_PRESERVEASPECTRATIO_XMIDYMID;
> >+  if (meetOrSlice == nsIDOMSVGPreserveAspectRatio::SVG_MEETORSLICE_UNKNOWN)
> >+    meetOrSlice = nsIDOMSVGPreserveAspectRatio::SVG_MEETORSLICE_MEET;
> 
> Worth porting bug 328348 first? I don't suppose it matters for a branch patch.

That did cross my mind when I unexpectedly ran across that viewport code.  Figured that we'd want to keep a branch patch as small in scope as is reasonable, though.
Attachment #242220 - Flags: superreview?(roc)
Attachment #242220 - Flags: superreview?(roc) → superreview+
Comment on attachment 242220 [details] [diff] [review]
backported branch patch

Specification compliance issue, similar fix has been on the trunk since September 19th.
Attachment #242220 - Flags: approval1.8.1.1?
Comment on attachment 242220 [details] [diff] [review]
backported branch patch

Need to wait for next release.
Attachment #242220 - Flags: approval1.8.1.2?
Attachment #242220 - Flags: approval1.8.1.1?
Attachment #242220 - Flags: approval1.8.1.1-
Comment on attachment 242220 [details] [diff] [review]
backported branch patch

Approved for 1.8 branch, a=jay for drivers.
Attachment #242220 - Flags: approval1.8.1.2? → approval1.8.1.2+
Checked in on MOZILLA_1_8_BRANCH.
Keywords: fixed1.8.1.2
Verified Fixed for 1.8.1.2 with Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.2pre) Gecko/20070108 BonEcho/2.0.0.2pre ID:2007010804
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: