Closed Bug 90099 Opened 24 years ago Closed 23 years ago

cells with fixed backgrounds don't repaint when needed

Categories

(Core :: Layout: Tables, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
Future

People

(Reporter: phil, Assigned: roc)

References

()

Details

(Whiteboard: [awd:tbl])

Attachments

(1 file, 3 obsolete files)

From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.2) Gecko/20010628 BuildID: 2001062815 Description: Backgroundimages with the property background-attachment:fixed; are not displayed in the cell of a table: Reproducible: Always Steps to Reproduce: example on this page: http://www.goli.at/phil/mozilla/bugs.html
seeing this on linux build 2001-07-09-21 as well.
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Windows NT → All
Hardware: PC → All
Note that the correct behavior of displaying the background image should be that we only display it (I think -- see bug 1045) when the page is horizontally scrolled so that the table cell with the fixed background image is at the left edge of the page. I see it *some* of the time there, but it's not being painted reliably. I suspect table cells don't have the logic needed to trigger repaints when the have 'background-attachment: fixed' -- see bug 68499.
Summary: Backgroundimages with the property background-attachment:fixed; are not displayed in the cell of a table: → cells with fixed backgrounds don't repaint when needed
Whiteboard: [awd:tbl]
Temporarily moving to future until a milestone can be assigned.
Status: NEW → ASSIGNED
Target Milestone: --- → Future
*** Bug 172831 has been marked as a duplicate of this bug. ***
It looks like the main problem here is that |nsTableCellFrame|s never get views. (At least that's what it looks like from a quick look in the code, and what I'm seeing from "Dump Views" on the two testcases in bug 172831.)
Attached patch fix (obsolete) — Splinter Review
I audited nsCSSFrameConstructor and added a call to nsHTMLContainerFrame::CreateViewForFrame after InitAndRestoreFrame in the places where I think we need one: --- after table-related frames have been constructed (except for cols and colgroups, because I'm not sure if that will screw up the view hierarchy, and I don't even know that they're relevant) --- after inline frames have been constructed, even if they're not positioned (e.g., if they only have an "opacity" or "background-attachment:fixed" setting, we still need a view)
The latter might impact page loads a little bit because I'm adding a small amount of code to what I suspect is a very frequently executed path. I'll attach a patch that should improve the speed of CreateForViewFrame a little bit.
Attached patch better patch (obsolete) — Splinter Review
Like the previous patch, but I tweaked CreateViewForFrame to check for an existing view only after we've determined the frame's style demands a view. This is because the existing view check almost always fails, because CreateViewForFrame is almost always called on a fresh frame. Since most frames don't need a view we want the "no view present or required" path to be as short as possible.
Attachment #101860 - Attachment is obsolete: true
Taking... Looks like we need views for generated content too (see bug 92723). I'll add that...
really taking
Assignee: karnaze → roc+moz
Status: ASSIGNED → NEW
Attached patch best patch yet (obsolete) — Splinter Review
Attachment #101861 - Attachment is obsolete: true
Do we really want to create views for every inline unconditionally? This sounds like it has the potential to create lots of views when loading html pages with lots of markup (links, font, bold, etc). Is there any impact to the event system? My concern is that there may be frame based event code that may now be bypassed because the view manager will send events directly to views associated with the inlines.
nsHTMLContainerFrame::CreateViewForFrame only creates a view if the frame's style says it needs one. See nsContainerFrame::FrameNeedsView. For inline frames, that's only if the frame has -moz-opacity != 1.0, if it has a background with background-attachment:fixed, or if it's relatively positioned. We have to be able to create views for such frames, so if we encounter problems with the views in the event system or wherever, then those are bugs in the event system that have to be fixed. The same bugs would probably apply to relatively positioned frames and so might already have been noticed, although since our relative positioning is pretty buggy I'm not sure they would have been noticed :-). Having said all that, I think the risk is really quite low since the two new situations where we'll create a view (-moz-opacity, background-attachment:fixed) are quite rare and we currently don't handle them correctly anwyay.
Is there a spot in the patch where you're creating a view for a text node? (I see |textStyleContext|.) That seems evil. (It could happen, given -moz-opacity.)
That call is for generated content. Yes, it's evil. However, the real evil is that -moz-opacity inherits. Yes, it's on my list :-). Nevertheless, you're right that a non-element should never need a view, so I can remove that call to CreateViewForFrame. I'll do that.
Comment on attachment 101935 [details] [diff] [review] best patch yet ==== This approach would mean that the children in list1 and list3 could not be on the same line as inline content that could be before and after the inline. Imagine this example: <body>bar<font>foo<p>ptext</p>foo</font>bar</body> + // XXX really, I think we should create an anonymous block frame representing + // the ENTIRE element and attach a view to that, then put the list1, list2 and list3 + // frames as child of that block --- roc Are you going to post a new patch addressing dbaron's issue?
I will, but it's a trivial change so feel free to continue your review on the assumption I'll get it right :-).
Comment on attachment 101935 [details] [diff] [review] best patch yet r/sr=kin@netscape.com with dbaron's issue addressed.
Attachment #101935 - Flags: superreview+
Attached patch revised fixSplinter Review
Attachment #101935 - Attachment is obsolete: true
Comment on attachment 102157 [details] [diff] [review] revised fix marking with kin's sr since this patch address dbaron's comment
Attachment #102157 - Flags: superreview+
Does this also fix the fixed backgrounds in http://tom.me.uk/2002/11/css-pseudo-fixed-bg.xhtml ? (They work under certain conditions, but most of the time don't.) roc: Are you planning to check this in? :-)
Er ... yeah :-). I'll check this in in a couple of weeks when I get back from my holiday :-).
Comment on attachment 102157 [details] [diff] [review] revised fix a=asa for checkin to 1.3a
Attachment #102157 - Flags: approval1.3a? → approval1.3a+
Fix checked in.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
I backed out the fix while trying to determine whether it had caused a Tp regression. It appears to not be the cause of the regression. I will reland the fix tomorrow.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Fix checked in again :-).
Status: REOPENED → RESOLVED
Closed: 23 years ago23 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: