Closed Bug 865958 Opened 7 years ago Closed 7 years ago

text in a <clipPath> does not reflow when changed

Categories

(Core :: SVG, defect)

defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: heycam, Assigned: longsonr)

Details

Attachments

(2 files)

Attached image test
See the attached test.  This is broken with both the old and new text frames.
Attachment #742784 - Flags: review?(cam)
Comment on attachment 742784 [details] [diff] [review]
fix old text frames

I assume it's not problematic that this will update the glyph metrics if both NS_STATE_SVG_NONDISPLAY_CHILD and NS_FRAME_FIRST_REFLOW are set.
Attachment #742784 - Flags: review?(cam) → review+
If NS_STATE_SVG_NONDISPLAY_CHILD is set then NS_FRAME_FIRST_REFLOW is never cleared as the frames never get an InitialUpdate call which is what clears it.
(In reply to Robert Longson from comment #3)
> If NS_STATE_SVG_NONDISPLAY_CHILD is set then NS_FRAME_FIRST_REFLOW is never
> cleared as the frames never get an InitialUpdate call which is what clears
> it.

Makes sense, though it must be something like that.
Assignee: nobody → longsonr
Status: NEW → ASSIGNED
*thought
Comment on attachment 742784 [details] [diff] [review]
fix old text frames

>+  if ((GetStateBits() & (NS_STATE_SVG_NONDISPLAY_CHILD | NS_FRAME_FIRST_REFLOW)) != 
>+      NS_FRAME_FIRST_REFLOW) {

Can you maybe write that as the following?

  if (!(GetStateBits() & NS_FRAME_FIRST_REFLOW) ||
      (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)) {

I think that makes it easier to grasp what this logic is doing. (And since GetStateBits() is inline there's negligible extra overhead in doing it that way.)
Marking [leave open] assuming a new text frame solution is required.
Assignee: longsonr → nobody
Whiteboard: [leave open]
Cameron, are you planning to do anything for new text frames here? If not we should mark this as fixed.
This is working again in the new text world.
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Assignee: nobody → longsonr
You need to log in before you can comment on or make changes to this bug.