Closed Bug 384343 Opened 18 years ago Closed 18 years ago

Page does not render correctly (addons.mozilla.org)

Categories

(Core :: Widget: Cocoa, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: faaborg, Assigned: smichaud)

References

()

Details

(Keywords: regression)

Attachments

(2 files)

After clicking on a preview image and closing the preview, the dark overlay does not go away. Other areas of the page will refresh on hover, but getting the dark overlay to go away entirely requires a page refresh.
This seems to be MacOS specific, I can't reproduce this on windows. Adam, can you reproduce (and make a testcase out of it)? Alex, in general you want to file these types of bugs under Core->Layout (or maybe this is a thebes bug, not sure).
Component: General → Layout
Product: Firefox → Core
QA Contact: general → layout
I don't have a minimized testcase, but I do have a regression range, which is between 2007-05-30-04 and 2007-05-31-05. http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=PhoenixTinderbox&branch=HEAD&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2007-05-30+03&maxdate=2007-05-31+06&cvsroot=%2Fcvsroot I would guess maybe bug 373122? Seems like the only thing that would cause this, given that it's Mac-specific.
Assignee: nobody → joshmoz
Component: Layout → Widget: Cocoa
QA Contact: layout → cocoa
Flags: blocking1.9?
Keywords: regression
I need a reliable testcase ... even a non-reduced one will do. That or specific instructions to reproduce.
The steps I used when reproducing are as follows: 1. Load https://addons.mozilla.org/en-US/firefox/addons/previews/2448 2. Click on the image under "Google Bookmarks Menu". (The image should show in the center of the page, surrounded by a opaque, black background.) 3. Click the "X" in the bottom right corner of the centered image. After step 3 the page should look just like it does in step 1. In current trunk builds, however the popup will either fail to close or it does close, but leaves the opaque, black background in place. A reduced testcase could probably be made, but it'd be a pain since this page is using jQuery APIs to do these effects.
I can reproduce this problem, and find that it goes away when I make the following change to the patch for bug 373122 (the changed code is from nsChildView::TearDownView() in widget/src/cocoa/nsChildView.mm, and partially rolls back the patch): if ([mView isEqual:[win contentView]]) { [mView release]; } else { - // Stop NSView hierarchy being changed during [ChildView drawRect:] - [mView performSelectorOnMainThread:@selector(delayedTearDown) - withObject:nil waitUntilDone:false]; + [self removeFromSuperviewWithoutNeedingDisplay]; + [self release]; } The same change also makes bug 383821 go away. So both bugs are regressions "caused" by a part (the same part) of my patch for bug 373122. This part of my patch is needed to stop a nasty problem happening when a ChildView object (a subclass of NSView associated with an nsChildView Gecko object) is removed from its superview during a call to [ChildView drawRect:]. The call to mGeckoChild->DispatchWindowEvent(paintEvent) in [ChildView drawRect:] sometimes (indirectly) calls ~nsChildView::nsChildView() (and nsChildView::TearDownView()). My workaround is to postpone removing the ChildView object from its superview until after the call to nsChildView::TearDownView() is finished (thereby guaranteeing that it never happens during a call to [ChildView drawRect:]). I could find a different workaround (for example I could call [ChildView delayedTearDown] only when nsChildView::TearDownView() has been called from inside [ChildView drawRect:]). But I can't simply undo my patch. Furthermore, I'm very puzzled how this part of my patch could have triggered bug 383821 and this bug (384343). I get the feeling that my change may have unmasked other bugs. Bug 383821 concerns Camino, which I haven't been working on. But I'm already working on the area covered by this bug, so I'll assign it to myself and go looking for the other bug(s) my bug 373122 patch might have unmasked.
Assignee: joshmoz → smichaud
Flags: blocking1.9? → blocking1.9+
Here's a patch that fixes the single problem reported here (in comment #0) and all the problems that I could reproduce that were reported at bug 383821 (those in bug 383821 comment #0, bug 383821 comment #8 and bug 383821 comment #11). It turns out that postponing removing ChildView objects from their superviews did unmask one bug -- [ChildView resignFirstResponder] should always call through to its superclass, but previously it didn't do this if mGeckoChild had already been NULLed. Changing this fixes the keyboard focus problems (those I just mentioned that were reported at bug 383821). And there was also a bug in my patch for bug 373122: [ChildView delayedTearDown] should use [NSView removeFromSuperview] (instead of [NSView removeFromSuperviewWithoutNeedingDisplay]), because at this point there's no longer any danger of it being "invoked during display". This change fixes the problem reported here (at comment #0).
Attachment #269108 - Flags: review?(joshmoz)
Blocks: 383821
Attachment #269108 - Flags: superreview?(roc)
Attachment #269108 - Flags: review?(joshmoz)
Attachment #269108 - Flags: review+
Attachment #269108 - Flags: superreview?(roc) → superreview+
landed on trunk
Status: NEW → RESOLVED
Closed: 18 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: