Closed Bug 74129 Opened 24 years ago Closed 24 years ago

Left navigation bar not repainted

Categories

(Core Graveyard :: GFX, defect, P2)

defect

Tracking

(Not tracked)

VERIFIED FIXED
mozilla0.9.1

People

(Reporter: jg, Assigned: pavlov)

References

()

Details

(Keywords: regression, testcase, top100, Whiteboard: critical for mozilla 0.9.1)

Attachments

(6 files)

Using Linux Mozilla cvs tip built today. Reproducable: Always. Steps to reproduce: 1) Go to http://www.netscape.com/ and wait for page to load. Notice left hand side navigation bar with grey background. 2) Minimise the window however your window manager does it. In Enlightenment I am right-clicking the titlebar. 3) Restore the window's state (I right-click the titlebar again). Expected Results: Page display restored Actual Results: The side navigation table does not display the text links. The grey background is now solid as opposed to solid with white seperating bars. The links can still be hovered over, but the text cannot be seen on screen.
Keywords.
Status: NEW → ASSIGNED
Target Milestone: --- → Future
Suggest re-evaluation for target milestone (currently Future): 1. This is still happening in today's builds, and nicely reproducable 2. This has a serious negative effect on the Netscape Corporate Homepage - if you force a repaint of the browser window, the links in the left side navigation panel are no longer visible.
Steps to reproduce screenshot: 1) Load www.netscape.com fully (wait until throbber stops) 2) Switch virtual desktops, or do something else to cause the page to not be shown on screen 3) Switch back to viewing the webpage. Note that the blue-on-grey navigation menu is now solid grey with no text 4) Move a window over the top of the display to force a re-draw of that area
*** Bug 77651 has been marked as a duplicate of this bug. ***
*** Bug 78938 has been marked as a duplicate of this bug. ***
*** Bug 39407 has been marked as a duplicate of this bug. ***
Upping severity. Things not drawing really sucks. Changing platform to All since this happens on windows and linux (and I expect mac). I believe this is view manager related. Robert? Do you have any ideas what is going on here? There are a lot of bugs being filed on things not drawing.. We need this fixed ASAP.
Severity: normal → critical
Keywords: mozilla0.9mozilla0.9.1
OS: Linux → All
Hardware: PC → All
Added screenshot posted in bug 39407 from Mike Jaques 2001-05-04 02:00
Summary: Left navigation bar not repainted → Damaged areas not repainted with new view manager
*** Bug 65107 has been marked as a duplicate of this bug. ***
Blocks: 76046
Blocks: 77544
Blocks: 73195
Keywords: mostfreq
Whiteboard: critical for mozilla 0.9.1
Target Milestone: Future → mozilla0.9.1
I'll take a look at this tomorrow.
I'm not seeing this on win32 talkback build 2001050704
I _am_ seeing this on 2001050708/Linux
This is a regression introduced between 4/22 and 4/24. A 4/22 release build on WINNT refreshes correctly. A 4/24 release build on WINNT fails.
This bug was morphed from a Linux specific rendering bug on a specific page into more general problem which happens on both Linux and WINNT and is easy to reproduce. The general problem was introduced as a regression between 4/22-4/24. The original problem is probably un-related to this regression.
To reproduce the general problem on WINNT: Rapidly move a command prompt window over Mozilla. Notice the chrome does not refresh properly when the exposed area is repainted. Interestingly, Rapidly moving a top-level window launched from Mozilla over Mozilla does not cause any refresh problems. Switching to the old viewmanager makes the problem go away but this behavior is a regression since builds prior to 4/22 which use the new viewmanager work properly.
It may be unrelated to the original bug... I believe the original bug is due to a clipping bug (remember the old clipping in the view manager that was in there for linux?).
It would be nice if we could get a simpler testcase.
*** Bug 79496 has been marked as a duplicate of this bug. ***
Attached file shorten www.netscape.com testcase (deleted) —
The attachment I just added shows the problem with Mozilla/5.0 (X11; U; Linux 2.2.18 i686; en-US; rv:0.9) Gecko/20010505 The select and option are required to show the problem, which also seems to matche with www.weather.com in bug 77544 (it has selects also). Load my testcase, then minimize it and restore it, and the image disappears. Move another window over it, and that part of the image disappears. Shift-Reload, and the image comes back.
*** Bug 80033 has been marked as a duplicate of this bug. ***
*** Bug 79859 has been marked as a duplicate of this bug. ***
*** Bug 80154 has been marked as a duplicate of this bug. ***
*** Bug 78112 has been marked as a duplicate of this bug. ***
The general refresh problem (Not refreshing the newly exposed area when moving a window over the top of mozilla) was created by the checkin for bug 75591. I just did a fresh pull on WINNT and reversed the patch for bug 75591 and I no longer see refresh problems. The following cvs commands will undo the patch checked in for bug 75591. cvs update -j1.275 -j1.274 mozilla/docshell/base/nsDocShell.cpp cvs update -j1.49 -j1.48 mozilla/view/src/nsViewManager2.cpp cvs update -j1.28 -j1.27 mozilla/view/src/nsViewManager2.h cvs update -j3.187 -j3.186 mozilla/view/src/nsViewManager.cpp cvs update -j3.71 -j3.70 mozilla/view/src/nsViewManager.h cvs update -j3.50 -j3.49 mozilla/view/public/nsIViewManager.h cvs update -j1.142 -j1.141 mozilla/layout/xul/base/src/nsBoxFrame.cpp cvs update -j1.96 -j1.95 mozilla/layout/html/base/src/nsHTMLFrame.cpp cvs update -j3.292 -j3.291 mozilla/layout/html/base/src/nsFrame.cpp cvs update -j3.142 -j3.141 mozilla/layout/html/base/src/nsFrame.h The image corrupted/not refreshed problems are probably separate problems. Please Do not dup them to this bug.
With bug 75591's patch reversed in todays build on WINNT I do not see any flicker when displaying preference panels. Is the patch no longer needed?. Has it been superceded by Hyatt's paint delay? CC'ing the reviewer, super-reviewer for bug 75591.
That is completely mystifying. The 75591 patch should not change anything when refresh is enabled. With Hyatt's patch, 75591 is not as important, but it (or something like it) is still ultimately necessary so that the view manager can know what the background color of a document is.
I'm looking at the attachment 33621 [details]. I'm not sure if the bug Kevin's talking about is the same as this one. I am convinced that this is not a view manager bug. I commented out the line > aRenderingContext.SetClipRect(clipRect, nsClipCombine_kReplace, clipEmpty) in nsComboboxControlFrame.cpp and the bug goes away. Note that this setting of the clip rect is inside a PushState/PopState pair, so it shouldn't have any effect on the rendering of the image. But it does. So I suspect a bug in gfx/GTK clipping, possibly with some interaction with libpr0n. I commented out the DefaultRefresh call in nsViewManager and that did NOT fix the bug. So I'm not sure what's going on with Kevin's comment about reverting 75591, but I suspect he's looking at a different bug.
Yep. It's a gfx/GTK/libpr0n bug. Calling aContext.DrawImage invokes nsRenderingContextImpl::DrawImage, which invokes nsImageGTK::Draw, which calls > copyGC = ((nsRenderingContextGTK&)aContext).GetGC(); ... but without calling UpdateGC anywhere along that path. So any changes to aContext's clip rect since the last UpdateGC are not reflected into copyGC, we just use some random old clip rect. Doing an UpdateGC before the GC is returned fixes the testcases. I'll attach a patch. This could explain a lot of clipping/drawing problems. I don't know what the story is with Windows yet...
I'm not convinced that's a complete fix. In particular, if mAlphaPixmap is nonnull then you cache the GC in mGC. If someone changes the clip rect and then draws the image again, and you reuse mGC, you lose.
> Doing an UpdateGC before the GC is returned fixes the testcases. To be more precise, it fixes the originally-reported www.netscape.com bug and its simplified test case. I doubt it fixes the dups since many of them seem to be reporting problems on Windows, and Windows GFX doesn't seem to have any analogous bug to the one I'm fixing here. By the way, here's a hint for bug diagnosis: if it only affects images, it is almost certainly NOT view manager related. The view manager knows nothing about images. When the view manager clips or renders incorrectly, the bugs are always apparent with any kind of content (e.g., text only).
The general refresh problem on WIN32 created by the checkin for bug 75591 was caused by failing to return a status which tells the toolkit the paint was consumed, don't do default processing: the following patch fixes the general refresh problem: Index: nsViewManager.cpp =================================================================== RCS file: /cvsroot/mozilla/view/src/nsViewManager.cpp,v retrieving revision 3.187 diff -u -r3.187 nsViewManager.cpp --- nsViewManager.cpp 2001/04/24 01:01:14 3.187 +++ nsViewManager.cpp 2001/05/15 01:51:52 @@ -1966,6 +1966,7 @@ } } } + *aStatus = nsEventStatus_eConsumeNoDefault; } break;
I filed a new bug for the general refresh problem (bug 80847). From this point on, this bug should only cover the original Linux refresh problem.
*** Bug 80554 has been marked as a duplicate of this bug. ***
Handing over to pavlov in light of the above comments.
Assignee: kmcclusk → pavlov
Status: ASSIGNED → NEW
BTW, chinerj@didntduck.org, thank you VERY much for the shortened testcase. You have no idea how useful a good testcase is. It saved hours of trouble.
Keywords: testcase
roc: UpdateGC() gets called from inside all of the calls in nsRenderingContextGTK, so if the clip rect is changed, UpdateGC will be called. The patch here won't really do anything.
If your patch fixes things on linux (like the bug here), then some place in nsRenderingContextGTK isn't calling UpdateGC()... so we should fix that instead of making the callers call it. I'm pushing this to 0.9.2, but expecting to fix the drawing bugs for 0.9.1.
Summary: Damaged areas not repainted with new view manager → Left navigation bar not repainted
Target Milestone: mozilla0.9.1 → mozilla0.9.2
moving back to 0.9.1 nsRenderingContextGTK::DrawImage() (all 50 versions) need to call UpdateGC(). I'll post a new patch shortly.
Target Milestone: mozilla0.9.2 → mozilla0.9.1
ok, here is a patch that should accomplish the same thing.
looking for r= and sr=
r/sr=blizzard
Blocks: 79543
ok, fix checked in. i'm gonna close this bug.. if any thing marked as a dup of this isn't also fixed, please reopen the individual bug.
What about images with alpha pixmaps? From a cursory reading of the code, it looks like a copy of the rendering context's GC could be cached in nsImageGTK::mGC and then reused later, with an obsolete clip rect.
No longer blocks: 79543
I will investigate mGC in nsImageGTK before marking this bug fixed
Priority: -- → P2
Attached patch don't use mGC in nsImageGTK (deleted) — Splinter Review
- if (IsFlagSet(nsImageUpdateFlags_kBitsChanged, mFlags)) { - xvalues.clip_mask = GDK_WINDOW_XWINDOW(mAlphaPixmap); - xvalues_mask |= GCClipMask; - } + xvalues.clip_mask = GDK_WINDOW_XWINDOW(mAlphaPixmap); + xvalues_mask |= GCClipMask; Why do you remove this check?
because the GC doesn't cache the alpha mask. We have to set it everytime.
OK. In that case r/sr=blizzard
jst r='d this the other day.
fixed
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
*** Bug 76046 has been marked as a duplicate of this bug. ***
*** Bug 81021 has been marked as a duplicate of this bug. ***
Marking verified per last comments
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: