Closed Bug 135059 Opened 23 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.