Closed Bug 667064 Opened 13 years ago Closed 12 years ago

SVG: text elements inside a <svg> element

Categories

(Core :: SVG, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla7

People

(Reporter: soconnor.work, Assigned: jwatt)

References

Details

Attachments

(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0
Build Identifier: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0

I am using a inner <svg> element (lets call it 'inner-svg') in my web app to control positioning of a bunch of children. To make my life easier I have been using a lot of percentage based coordinates.

In the attached testcase I have a example of the kind of behaviour I want. The inner-svg element controls the whole size for a bunch of dependent children. All the children's coordinates are specified using percentages.

I noticed that when I re-size inner-svg by changing the width / height attribute that rect, line, etc update using the new coordinate space. However <text> nodes don't.

Reproducible: Always

Steps to Reproduce:
1. View attachment
2 [review]. Click the 'Update Inner SVG' button

Actual Results:  
The red square re-sizes & positions properly. The bottom right text does not and falls 'outside'.

Expected Results:  
The bottom right text should move to be inside the red square.

Chrome seems to be worse. :-)
I can reproduce with older builds, but this works for me on trunk.  Looks like it got fixed in this range 3 days ago: http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=a285146675dc&tochange=b7a93f1279b7

But the only sorta-related thing in that range is bug 652832 and even that's a stretch...
If this is fixed in trunk should this bug be closed?
Well, it would be good to understand whether it's really fixed or whether just the testcase you attached happens to work now for some semi-unrelated reason....  Going to wait for one of the SVG folks to look at this to tell which it is.
(In reply to comment #2)
> But the only sorta-related thing in that range is bug 652832 and even that's
> a stretch...

I confirmed with a local backout that that bug's cset (30c1b4519b2a) fixed the attached testcase.
(Robert, does it make sense that your commit fixed this?)
bug 652832 makes nsSVGLength2::SetBaseValueString call nsSVGlement::DidChangeLength. This is overridden in nsSVGSVGElement and that override expects to be called when the length changes as it does here.
Status: UNCONFIRMED → RESOLVED
Closed: 13 years ago
Depends on: 652832
Resolution: --- → FIXED
Target Milestone: --- → mozilla7
I'll write a test for this.
Status: RESOLVED → REOPENED
Ever confirmed: true
Flags: in-testsuite?
OS: Mac OS X → All
Hardware: x86_64 → All
Resolution: FIXED → ---
Reftest, that is.
Assignee: nobody → jwatt
Attached patch other fixes (obsolete) — Splinter Review
If you're going to write tests then neither nsSVGEnum, nor SVGPreserveAspect ratio work for the same reason (see patch). nsSVGSVGElement and nsSVGMarkerElement override these methods and when DOM setAttribute is called the overrides need to be called too.
Attachment #541919 - Flags: review?
Attachment #541919 - Flags: review? → review?(jwatt)
Attachment #541919 - Flags: review?(jwatt) → review+
Comment on attachment 541919 [details] [diff] [review]
other fixes

In the end I moved the first part to bug 687340 and decided the second part (the enum change) was not required as bug 687340 removes all enum overrides.
Attachment #541919 - Attachment is obsolete: true
Brian wrote mochitests that cover this now.
Status: REOPENED → RESOLVED
Closed: 13 years ago12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: