Closed Bug 135059 Opened 22 years ago Closed 21 years ago

Allow ContentStatesChanged() to work without necessarily creating a frame

Categories

(Core :: CSS Parsing and Computation, defect, P4)

x86
Linux
defect

Tracking

()

RESOLVED FIXED
Future

People

(Reporter: john, Assigned: john)

Details

In some cases you want to notify the style system that something has changed but
you don't particularly care if a frame is there or not.  This is particularly
true when you are notifying the style system that a value affecting a selector
has changed.  This will be dealt with when the frame is created later so there
is absolutely no need to create a frame when you are calling it for this reason.

At the same time, it is a semi-expensive operation to find the frame from the
content in the frame map, and since ContentStatesChanged() does this already,
for performance reasons it makes sense to let ContentStatesChanged() do the
check for the frame's existence.

I suggest the addition of a parameter to ContentStatesChanged(),
aCreateFramesIfNotThere, and change all callers to use it as appropriate.

This comes out of bug 134560, which resulted in an extra "ghost" frame being
created when this method was called too early.  It was fixed by not calling
ContentStatesChanged() unless there is already a frame in the frame map.  The
"ghost" frame problem is outside the scope of this bug and it is not clear
whether it will show up anywhere else.
Status: NEW → ASSIGNED
Priority: -- → P4
Target Milestone: --- → Future
ContentStatesChanged now only tries to create frames for nodes that were
explicitly display:none when the frame constructor saw them last (see bug
209733).  The ghost problem has been fixed the right way by bug 231081.

So fixed (by bug 209733).
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.