Closed
Bug 601603
Opened 14 years ago
Closed 14 years ago
Latest build enabled D3d10 layer and using "Personas" doesn't show the maximize, minimize, close buttons in the upper right corner
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
FIXED
mozilla2.0b7
Tracking | Status | |
---|---|---|
blocking2.0 | --- | beta8+ |
People
(Reporter: rausuar, Assigned: Felipe)
References
Details
Attachments
(9 files, 6 obsolete files)
(deleted),
image/jpeg
|
Details | |
(deleted),
image/jpeg
|
Details | |
(deleted),
patch
|
jrmuizel
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
jimm
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
dao
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
roc
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
roc
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7pre) Gecko/20101003 Firefox/4.0b7pre
Build Identifier: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7pre) Gecko/20101003 Firefox/4.0b7pre
Latest build enabled D3d10 layer and using "Personas" doesn't show the maximize, minimize, close buttons in the upper right corner
Reproducible: Always
Steps to Reproduce:
1. Use Minefield latest build (03/10/10)
2. Use a "Personas" theme
3. enable D3D10 layer (about:config - layers.use-d3d10;true)
Actual Results:
maximize minimize close buttons do not show in the upper right corner of the Minefield window. Sometimes if you pass the mouse over the location of the buttons they do show, but not everytime.
Expected Results:
Show maximize minimize close buttons ass other windows do.
about:buildconfig
Source
Built from http://hg.mozilla.org/mozilla-central/rev/7593c4baa1f7
Build platform
target
i686-pc-mingw32
Build tools
Compiler Version Compiler flags
d;D:\mozilla-build\msys\mozilla-build\python25\python2.5.exe -O e;D:\mozilla-build\msys\builds\moz2_slave\mozilla-central-win32-nightly\build\build\cl.py cl 14.00.50727.762 -TC -nologo -W3 -Gy -Fdgenerated.pdb -DNDEBUG -DTRIMMED -Zi -Zi -UDEBUG -DNDEBUG -GL -wd4624 -wd4952 -O1
d;D:\mozilla-build\msys\mozilla-build\python25\python2.5.exe -O e;D:\mozilla-build\msys\builds\moz2_slave\mozilla-central-win32-nightly\build\build\cl.py cl 14.00.50727.762 -GR- -TP -nologo -Zc:wchar_t- -W3 -Gy -Fdgenerated.pdb -wd4800 -DNDEBUG -DTRIMMED -Zi -Zi -UDEBUG -DNDEBUG -GL -wd4624 -wd4952 -O1
Configure arguments
--enable-application=browser --enable-update-channel=nightly --enable-update-packaging --enable-jemalloc --enable-tests
(In reply to comment #2)
> what graphics, driver, etc. ?
> check "Graphics" in about:support.
There you go:
Graphics:
Adapter Description Intel(R) HD Graphics
Vendor ID8086
Device ID0046
Adapter RAM Unknown
Adapter Drivers igdumd64 igd10umd64 igdumdx32 igd10umd32Driver Version8.15.10.2202
Driver Date 8-25-2010
Direct2D Enabled true
DirectWrite Enabled true
GPU Accelerated Windows 1/1 Direct3D 10
Comment 4•14 years ago
|
||
I can confirm this on 20101004 build.
Graphic information:
Adapter Description NVIDIA GeForce 8400 GS
Vendor ID10de
Device ID06e4
Adapter RAM 512
Adapter Drivers nvd3dum nvwgf2um,nvwgf2um
Driver Version 8.17.12.6063
Driver Date 9-10-2010
Direct2D Enabled true
DirectWrite Enabled true
GPU Accelerated Windows1/1 Direct3D 10
Updated•14 years ago
|
Component: General → Graphics
Product: Firefox → Core
QA Contact: general → thebes
Version: unspecified → Trunk
Updated•14 years ago
|
blocking2.0: --- → ?
Comment 5•14 years ago
|
||
Ah yes, this is because D3D10 does not support hard clipping of your back buffer. This requires
Comment 6•14 years ago
|
||
Err, this requires the caption button area to be drawn transparent black whenever it is drawn.
Assignee | ||
Updated•14 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
Updated•14 years ago
|
Assignee: nobody → bas.schouten
blocking2.0: ? → beta8+
Comment 7•14 years ago
|
||
Felipe, if you want to take this from Bas, I'm sure he'll be happy.
Comment 8•14 years ago
|
||
Okay, it took me a whiles to find this bug but after a little hunting I found the correct one.
I starting seeing this issue recently too. I even had one nightly where as someone reported in another bug for Beta 6 that the area turned all black.
Adapter DescriptionNVIDIA GeForce 8400M GS
Vendor ID10de
Device ID0427
Adapter RAM128
Adapter Driversnvd3dum nvwgf2um,nvwgf2um
Driver Version8.17.12.6063
Driver Date9-10-2010
Direct2D Enabledtrue
DirectWrite Enabledtrue
GPU Accelerated Windows1/1 Direct3D 10
I'm on Vista Home Premium with a This is a wierd one. At first, I thought it was due to my taskbar being on top. When I dragged it back down to the bottom, it seemed the problem was resolved, then it started reoccurring.
I wanted to see if it was something with certain personas or all personas. I was initially going to report that when you previewed certain personas, the buttons reappeared and others they would disappear. But then they ones that looked they worked started acting the same way.
The only thing that appears to clear this up is using the default pre7 appearance. I discovered that it appears that the buttons are being rendered behind the browser window. In the attached screenshot, you can see my mouse arrow is almost to the top. While there are no buttons, Windows sees the missing buttons. You can see there is something being partially highlighted just over the top of the browser window. You can even see the popup description. If I hover where the "x" should be, the highlight is in red.
You can actually click in this area and the buttons will work (but not display). It does seem like I have to move the arrow higher though then when it works correctly.
Just rehashing from earlier in this comment, on some (but not all) personas that you preview, the buttons will render correctly the first time and maybe even for a few subsequent times. You can just test this on the main persona page with the popular personas shown.
Comment 9•14 years ago
|
||
As noted in my comments, it appears the buttons ARE there as Windows can see them (note the highlight appearing above the edge when Windows is not maximized or all the way to top), but they appeared to be covered over by personas.
Comment 10•14 years ago
|
||
Felipe is working on this, implementing the 'correct' solution for this problem hopefully.
Assignee: bas.schouten → felipc
Assignee | ||
Comment 11•14 years ago
|
||
Yeah I'm working on this bug, here's an update on the progress.
The approach I'm taking is the following: The titlebar buttons have corresponding XUL elements which takes -moz-appearance for native rendering. Currently they don't paint anything, and what I'm making them to do is to clear the area where they are.
This is unusual as no other widget do this. Note that we can't simply paint as transparent, we need to clear what's in there because the background image is painted below them.
So on gfxWindowsNativeDrawing::PaintToContext if the widget set a new mNativeDrawingFlag representing to clear that area, I set the OPERATOR_CLEAR and fill the rectangle on the thebesContext (instead of grabbing the pattern from the temporary context and painting it).
Vlad, what do you think of this approach? Do you think it's a good solution? Bas suggested that the solution should probably live in theme-related code, so that's what lead into this path.
I'm mostly worried if in the future the mContext at the gfxWindowsNativeDrawing becomes no longer the final context where things are drawn, and its content is just painted over another surface (with something already drawn) where the transparent hole will be lost. Maybe that's not a worry though.
Assignee | ||
Comment 12•14 years ago
|
||
This is the current work in progress. There's a lot of hacked stuff that I'm cleaning up. And there are some problems yet to solve:
- The XUL buttons are not precisely positioned where they should be because it currently uses metrics from the Aero classic theme instead of glass.
- If you apply this patch and turn Personas on you'll see a black area instead of the buttons. That's because the background-color of the personas theme turns the surface to opaque mode. It's needed to clear the background-color or use an rgba color to see the patch working.
Assignee | ||
Comment 13•14 years ago
|
||
> - If you apply this patch and turn Personas on you'll see a black area instead
> of the buttons. That's because the background-color of the personas theme turns
> the surface to opaque mode. It's needed to clear the background-color or use an
> rgba color to see the patch working.
Anyone got any ideas on how to fix this? (short of a front-end hack to force an alpha color to be applied)
Comment 14•14 years ago
|
||
(In reply to comment #13)
> > - If you apply this patch and turn Personas on you'll see a black area instead
> > of the buttons. That's because the background-color of the personas theme turns
> > the surface to opaque mode. It's needed to clear the background-color or use an
> > rgba color to see the patch working.
>
> Anyone got any ideas on how to fix this? (short of a front-end hack to force an
> alpha color to be applied)
Hmm, that's indeed very annoying. We should probably not make the surface turn opaque when your clear element is used.
Comment 15•14 years ago
|
||
If you hadn't noticed this yet, there are some various oddities here with moving the mouse pointer through the titlebar zone vs toolbars and content area. The caption buttons will show quickly and hide. If you resize the window, the clip area shows up also then hides again.
Comment 16•14 years ago
|
||
I've noticed that too but I didn't comment because it is hard to specify where and when it occurs. I noticed before if you go over the Minefield bar and go horizontally across (without going out of that narrow height zone), the buttons would stay there. However, at least as of 1009 release I can't do that anymore. In fact, it is even worse trying to get the buttons to pop up at all. About the only thing I seem to be able to make them pop at all is clicking the Minefield button and then if they do appear, they disappear again.
Assignee | ||
Comment 17•14 years ago
|
||
> > > - If you apply this patch and turn Personas on you'll see a black area instead
> > > of the buttons. That's because the background-color of the personas theme turns
> > > the surface to opaque mode. It's needed to clear the background-color or use an
> > > rgba color to see the patch working.
> >
> > Anyone got any ideas on how to fix this? (short of a front-end hack to force an
> > alpha color to be applied)
>
So, I've been thinking about this, and I think that the right thing to do is to force the background to be not opaque when "-moz-appearance: -moz-win-glass" is set on the element. This would give us the right thing wanted without forcing any unecessary non-opaqueness.
The way to do it seemed to be at the nsDisplaySolidColor::IsOpaque impl, but the problem is that the mAppearance on that frame is always set to 0, and the actual appearance value is found at the rootElementStyleFrame, which seems wrong to access from nsDisplaySolidColor.
I'll try to see if it's possible to set some flag for that purpose during nsDisplayListBuilder creation or EnterPresShell.
Comment 18•14 years ago
|
||
I don't quite understand the situation here, but the solid color item probably gets it color from the root element style frame here http://mxr.mozilla.org/mozilla-central/source/layout/base/nsPresShell.cpp#5904 even though the mFrame of the display item is usually the root frame.
Assignee | ||
Comment 19•14 years ago
|
||
Jeff, just a straightforward patch to remove the temp workaround we added for d3d9, plus all the event.region stuff we added for the basic layers manager
(With this patch we won't anymore create complex regions to exclude the caption buttons from the drawing area)
Attachment #483041 -
Flags: review?(jmuizelaar)
Assignee | ||
Comment 20•14 years ago
|
||
Move the DWM query to retrieve the caption buttons rect to nsUXThemeData, and get rid of UpdateCaptionButtonsClippingRect and the mCaptionButtonsRoundedRegion
Attachment #483042 -
Flags: review?(jmathies)
Assignee | ||
Comment 21•14 years ago
|
||
This part perfoms the actual widget drawing that clears the widget area. This widget is a #titlebar-buttonbox <hbox> element on XUL positioned with the data from the previous patch
Attachment #483043 -
Flags: review?(bas.schouten)
Assignee | ||
Comment 22•14 years ago
|
||
CSS changes needed to display the #titlebar-buttonbox element on Aero glass with personas, and -moz-box-align moved to #titlebar-content because #titlebar-buttonbox needs to have the correct height specified (and not stretch as is the default)
Attachment #483044 -
Flags: review?(dao)
Assignee | ||
Comment 23•14 years ago
|
||
This forces the transparency for the nsDisplaySolidColor when -moz-win-glass is applied.
Just adjusting the Layers::CONTENT_OPAQUE flag on PopThebesLayerData wasn't enough, so I followed tn's suggestion to set a flag on the presshell and use that during nsDisplaySolidColor creation
Attachment #483045 -
Flags: review?(roc)
Assignee | ||
Comment 24•14 years ago
|
||
Vlad, this patch isn't strictly necessary to the bug, but I don't know if it's a good bonus or not worth the change to add a new flag and use it on gfxWindowsNativeDrawing.
Asking feedback to see what's your opinion on it
Attachment #483046 -
Flags: feedback?(vladimir)
Assignee | ||
Comment 25•14 years ago
|
||
hg diff -r qparent (without the optional patch) in case someone wants to try it.
Attachment #481606 -
Attachment is obsolete: true
Assignee | ||
Comment 26•14 years ago
|
||
Roc, if you wanna take a look for a sanity check on the approach, the main patches are part 3 and 5.
Assignee | ||
Updated•14 years ago
|
Attachment #483043 -
Flags: review?(bas.schouten) → review?(vladimir)
(In reply to comment #23)
> This forces the transparency for the nsDisplaySolidColor when -moz-win-glass is
> applied.
>
> Just adjusting the Layers::CONTENT_OPAQUE flag on PopThebesLayerData wasn't
> enough, so I followed tn's suggestion to set a flag on the presshell and use
> that during nsDisplaySolidColor creation
This is not the right approach in general. Someone might layer their own content over the window --- e.g. a regular element with an opaque background --- in such a way that we think the window is opaque and this bug reappears again.
Whhat went wrong with the Layers::CONTENT_OPAQUE flag?
Assignee | ||
Comment 28•14 years ago
|
||
Even if I never set the Layers::CONTENT_OPAQUE flag, the buttons still appear as black.
I'm guessing that there are other operations (like the visibleRegion calculations) that depend on the return value of IsOpaque
Hmm. Do you need to modify nsWindow::UpdatePossiblyTransparentRegion to make sure that the Aero Glass margins extend down to cover the buttons?
Attachment #483043 -
Flags: review?(vladimir) → review+
Comment on attachment 483046 [details] [diff] [review]
Optional patch - avoid double pass for this element
I actually think we should take this patch, no need to do alpha recovery unnecessarily -- but:
case RENDER_STATE_ALPHA_RECOVERY_BLACK_DONE:
mRenderState = RENDER_STATE_ALPHA_RECOVERY_WHITE;
- return PR_TRUE;
+ return !(mNativeDrawFlags & DONT_NEED_ALPHA_RECOVERY);
should just set mRenderState to NATIVE_DRAWING_DONE and return PR_FALSE, instead of setting it to _WHITE and return FALSE to keep the state consistent.
Comment on attachment 483045 [details] [diff] [review]
Part 5 - Force transparency for -moz-win-glass
See comment #27
Attachment #483045 -
Flags: review?(roc) → review-
Comment 32•14 years ago
|
||
Comment on attachment 483042 [details] [diff] [review]
Part 2 - System metrics
+ aResult->width = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_BUTTONBOX].cx - 3;
Might as well do that when you populate the values in sCommandButtons. You're already subtracting 1 from cy there.
Attachment #483042 -
Flags: review?(jmathies) → review+
Assignee | ||
Comment 33•14 years ago
|
||
Hey vlad, sorry for asking a re-review on this patch, but I didn't know about this possible issue before. This new patch ensures that the drawing never takes the fallback path to cairo_d2d_acquire_dest_image, by resetting the clip and drawing each rectangle one at a time, so it never draws to a complex region.
Attachment #483043 -
Attachment is obsolete: true
Attachment #483544 -
Flags: review?(vladimir)
Updated•14 years ago
|
Attachment #483041 -
Flags: review?(jmuizelaar) → review+
Assignee | ||
Comment 34•14 years ago
|
||
(In reply to comment #29)
> Hmm. Do you need to modify nsWindow::UpdatePossiblyTransparentRegion to make
> sure that the Aero Glass margins extend down to cover the buttons?
Hmm no, there's already code for that. See http://mxr.mozilla.org/mozilla-central/source/widget/src/windows/nsWindow.cpp#2460
Assignee | ||
Comment 35•14 years ago
|
||
Ok I got what the problem was, there's another place that also sets the Layer::CONTENT_OPAQUE flag. I was changing only PopThebesLayerData, but there is BuildContainerLayerFor. Both need to be handled.
Patch incoming
Assignee | ||
Comment 36•14 years ago
|
||
Now correctly setting the Layer::CONTENT_OPAQUE flags using an outparam from IsOpaque.
I think I still need that presshell dance to pass the info from the RootStyleFrame down to the frame that will hold the background. Or would there be a better way to mark the layer from PresShell::UpdateCanvasBackground and not even need the outparam and other changes?
Attachment #483045 -
Attachment is obsolete: true
Attachment #483691 -
Flags: review?(roc)
+ * True if this layer is meant to hold a transparent background,
+ * even if the entire region is opaque.
+ */
+ PRPackedBool mTransparentBackground;
Let's call it mForceTransparentSurface and make the comment something like
* Set if the layer should be treated as transparent, even if its entire
* area is covered by opaque display items. For example, this needs to
* be set if something is going to "punch holes" in the layer by clearing
* part of its surface.
+ virtual PRBool IsOpaque(nsDisplayListBuilder* aBuilder,
+ PRBool* aOutTransparentBackground = nsnull)
+ {
+ return PR_FALSE;
+ }
This needs to set *aOutTransparentBackground if aOutTransparentBackground is non-null. Also the parameter should probably be called aForceTransparentSurface or something like that.
I don't think you need the changes to nsDisplaySolidColor or PresShell. We should have an nsDisplayBackground with -moz-win-glass appearance; that should be able to pass true for the out parameter.
Assignee | ||
Comment 38•14 years ago
|
||
(In reply to comment #37)
> + virtual PRBool IsOpaque(nsDisplayListBuilder* aBuilder,
> + PRBool* aOutTransparentBackground = nsnull)
> + {
> + return PR_FALSE;
> + }
>
> This needs to set *aOutTransparentBackground if aOutTransparentBackground is
> non-null. Also the parameter should probably be called aForceTransparentSurface
> or something like that.
Ok. Does this mean I should do this to every implementation of IsOpaque?
>
> I don't think you need the changes to nsDisplaySolidColor or PresShell. We
> should have an nsDisplayBackground with -moz-win-glass appearance; that should
> be able to pass true for the out parameter.
So I looked more into this. There's indeed an nsDisplayBackground created with a -moz-win-glass frame, but the IsOpaque of this item is never called
(In reply to comment #38)
> Ok. Does this mean I should do this to every implementation of IsOpaque?
Yeah, I guess so.
> > I don't think you need the changes to nsDisplaySolidColor or PresShell. We
> > should have an nsDisplayBackground with -moz-win-glass appearance; that should
> > be able to pass true for the out parameter.
>
> So I looked more into this. There's indeed an nsDisplayBackground created with
> a -moz-win-glass frame, but the IsOpaque of this item is never called
Hmm, odd. Does it get processed by ProcessDisplayItems? What happens to it?
Comment 40•14 years ago
|
||
Comment on attachment 483044 [details] [diff] [review]
Part 4 - CSS changes
>+ #main-window[sizemode="maximized"] #titlebar-buttonbox {
>+ margin-right: 2px;
>+ }
What's the deal with this?
Assignee | ||
Comment 41•14 years ago
|
||
(In reply to comment #40)
> Comment on attachment 483044 [details] [diff] [review]
> Part 4 - CSS changes
>
> >+ #main-window[sizemode="maximized"] #titlebar-buttonbox {
> >+ margin-right: 2px;
> >+ }
>
> What's the deal with this?
That's the visual gap between the close button and the screen edge that can be seen for maximized windows
Comment 42•14 years ago
|
||
(In reply to comment #41)
> (In reply to comment #40)
> > Comment on attachment 483044 [details] [diff] [review] [details]
> > Part 4 - CSS changes
> >
> > >+ #main-window[sizemode="maximized"] #titlebar-buttonbox {
> > >+ margin-right: 2px;
> > >+ }
> >
> > What's the deal with this?
>
> That's the visual gap between the close button and the screen edge that can be
> seen for maximized windows
So the close button isn't supposed to be the click target when moving the mouse to the screen edge?
Assignee | ||
Comment 43•14 years ago
|
||
Oh ti will still be the click target. Mouse events on that area of the screen is specially handled by Windows and is always targeted for the buttons, independent on what the app is drawing there.
Comment 44•14 years ago
|
||
Ok. How about RTL? Don't you want -moz-margin-end for that?
Assignee | ||
Comment 45•14 years ago
|
||
True, it should be -moz-margin-end instead
Assignee | ||
Comment 46•14 years ago
|
||
(In reply to comment #39)
> > So I looked more into this. There's indeed an nsDisplayBackground created with
> > a -moz-win-glass frame, but the IsOpaque of this item is never called
>
> Hmm, odd. Does it get processed by ProcessDisplayItems? What happens to it?
It is processed by ProcessDisplayItems. What happens is that on ComputeVisibilityForSublist, item->ComputeVisibility returns false because this item has propagated away its background.
@ nsDisplayBackground::ComputeVisbility:
// Return false if the background was propagated away from this
// frame. We don't want this display item to show up and confuse
// anything.
nsStyleContext* bgSC;
return mIsThemed ||
nsCSSRendering::FindBackground(mFrame->PresContext(), mFrame, &bgSC);
Could I return true there instead in this situation (given that comment above)?
why isn't mIsThemed true? Seems like it should be
Assignee | ||
Comment 48•14 years ago
|
||
This implements the forceTransparentSurface flags to control layers' opaqueness, and makes the theme support -moz-win-glass and -moz-win-borderless glass.
Couple of notes:
- the change in nsLayoutUtils is needed because as IsThemed() now returns true the eTransparency{Borderless}Glass transparency mode would never be set on the widget
- the big chunk on DrawWidgetBackground is just moving the code to bail out of drawing upper in the function to avoid calling some unecessary functions (GetThemePartAndState, ScaleInverse and addRef'ing the DC)
Attachment #483691 -
Attachment is obsolete: true
Attachment #484170 -
Flags: review?(roc)
Attachment #483691 -
Flags: review?(roc)
+ mForceTransparentSurface = (disp->mAppearance == NS_THEME_WIN_BORDERLESS_GLASS ||
+ disp->mAppearance == NS_THEME_WIN_GLASS);
Instead of a variable here, why not just check mAppearance in nsDisplayBackground::IsOpaque?
Assignee | ||
Comment 50•14 years ago
|
||
(In reply to comment #49)
> + mForceTransparentSurface = (disp->mAppearance ==
> NS_THEME_WIN_BORDERLESS_GLASS ||
> + disp->mAppearance == NS_THEME_WIN_GLASS);
>
> Instead of a variable here, why not just check mAppearance in
> nsDisplayBackground::IsOpaque?
No particular reason. As mIsThemed is cached I just followed the pattern and added this variable to avoid calling GetStyleDisplay() every time in IsOpaque.
(In reply to comment #50)
> (In reply to comment #49)
> > + mForceTransparentSurface = (disp->mAppearance ==
> > NS_THEME_WIN_BORDERLESS_GLASS ||
> > + disp->mAppearance == NS_THEME_WIN_GLASS);
> >
> > Instead of a variable here, why not just check mAppearance in
> > nsDisplayBackground::IsOpaque?
>
> No particular reason. As mIsThemed is cached I just followed the pattern and
> added this variable to avoid calling GetStyleDisplay() every time in IsOpaque.
It's simpler to not cache, so let's not cache. IsOpaque is not called very often and checking the display type is relatively cheap.
Assignee | ||
Comment 52•14 years ago
|
||
This one doesn't cache mAppearance on nsDisplayBackground
Attachment #484170 -
Attachment is obsolete: true
Attachment #484208 -
Flags: review?(roc)
Attachment #484170 -
Flags: review?(roc)
+ if (aForceTransparentSurface) {
+ const nsStyleDisplay* disp = mFrame->GetStyleDisplay();
+ *aForceTransparentSurface = disp->mAppearance == NS_THEME_WIN_BORDERLESS_GLASS ||
+ disp->mAppearance == NS_THEME_WIN_GLASS;
+ }
This should check mIsThemed as well. In fact it's probably best to set it to PR_FALSE first and then move this code to inside the if (mIsThemed) block.
Assignee | ||
Comment 54•14 years ago
|
||
Like so.
To set it to PR_FALSE first it'll check the outparam pointer twice. Or I could move that after the if (mIsThemed) block
Attachment #484208 -
Attachment is obsolete: true
Attachment #484210 -
Flags: review?(roc)
Attachment #484208 -
Flags: review?(roc)
Comment on attachment 484210 [details] [diff] [review]
Part 5 - Force transparency for -moz-win-glass - v5
This is fine.
Attachment #484210 -
Flags: review?(roc) → review+
Comment on attachment 483544 [details] [diff] [review]
Part 3 - Widget drawing v2
+ ctx->NewPath();
+ ctx->Rectangle(buttonbox1, PR_TRUE);
+ ctx->Fill();
+
+ ctx->NewPath();
+ ctx->Rectangle(buttonbox2, PR_TRUE);
+ ctx->Fill();
+
+ ctx->NewPath();
+ ctx->Rectangle(buttonbox3, PR_TRUE);
+ ctx->Fill();
How about just
ctx->NewPath();
ctx->Rectangle(...);
ctx->Rectangle(...);
ctx->Rectangle(...);
ctx->Fill();
?I assume we try to ensure that these buttons are drawn last, topmost in the window?
Ignore the last comment, it doesn't really matter. If people want to draw over them, they can.
Assignee | ||
Comment 58•14 years ago
|
||
Yes correct, they can be drawn over if other element is positioned over them.
The reason why there's a NewPath() before every rectangle is to avoid taking the fallback path to cairo_d2d_acquire_dest. If we don't do that the complex clip with operator_clear takes that path.
Comment on attachment 483544 [details] [diff] [review]
Part 3 - Widget drawing v2
OK, please add a comment explaining that!
Attachment #483544 -
Flags: review?(vladimir) → review+
Comment 60•14 years ago
|
||
Comment on attachment 483044 [details] [diff] [review]
Part 4 - CSS changes
>+ #titlebar-buttonbox:not(:-moz-lwtheme),
>+ #titlebar-buttonbox > * {
> display: none;
> }
Can you add a titlebar-button class and use that instead of #titlebar-buttonbox > *?
>+ #main-window[sizemode="maximized"] #titlebar-buttonbox {
>+ margin-right: 2px;
Need to use -moz-margin-start here per earlier discussion.
Attachment #483044 -
Flags: review?(dao) → review+
Assignee | ||
Comment 61•14 years ago
|
||
(In reply to comment #60)
> Comment on attachment 483044 [details] [diff] [review]
> Part 4 - CSS changes
>
> >+ #titlebar-buttonbox:not(:-moz-lwtheme),
> >+ #titlebar-buttonbox > * {
> > display: none;
> > }
>
> Can you add a titlebar-button class and use that instead of #titlebar-buttonbox > *?
Done.
> >+ #main-window[sizemode="maximized"] #titlebar-buttonbox {
> >+ margin-right: 2px;
>
> Need to use -moz-margin-start here per earlier discussion.
Done. (I assume you meant -moz-margin-end)
(In reply to comment #59)
> Comment on attachment 483544 [details] [diff] [review]
> Part 3 - Widget drawing v2
>
> OK, please add a comment explaining that!
Comment added
Assignee | ||
Comment 62•14 years ago
|
||
http://hg.mozilla.org/mozilla-central/rev/be51d3e6905b
http://hg.mozilla.org/mozilla-central/rev/f1dce6bc53eb
http://hg.mozilla.org/mozilla-central/rev/91073aa8ef72
http://hg.mozilla.org/mozilla-central/rev/d73eaa05f59d
http://hg.mozilla.org/mozilla-central/rev/c9d327fec92e
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b8
I realized this morning that this probably just regressed bug 590468. Before we pretended we didn't support -moz-win-glass for drawing, so nothing was drawn.
Can you get a layer tree dump (gDumpPaintList=1) for a basic browser window so we can check if we're allocating large multiple overlapping ThebesLayers for the content area?
(In reply to comment #63)
> so nothing was drawn.
I mean, the area of the element wasn't added to the ThebesLayer.
Assignee | ||
Comment 65•14 years ago
|
||
Painting --- retained layer tree:
D3D9LayerManager (0x851d788)
D3D9ContainerLayer (0x37757c8) [visible=< (x=0, y=0, w=722, h=600); >] [metric
s={ viewport=(w=722, h=600) viewportScroll=(x=0, y=0) displayport=(x=0, y=0, w=0
, h=0) }]
D3D9ThebesLayer (0x86f5fe8) [visible=< (x=0, y=0, w=722, h=96); >] [valid=<
(x=0, y=0, w=722, h=96); >]
D3D9ContainerLayer (0x37758e0) [clip=(x=0, y=96, w=722, h=504)] [visible=< (
x=0, y=96, w=722, h=504); >] [opaqueContent]
D3D9ThebesLayer (0x86f6258) [clip=(x=0, y=0, w=0, h=0)] [transform=[ 1 0;
0 1; 0 96; ]]
D3D9ColorLayer (0x37759f8) [clip=(x=0, y=96, w=722, h=504)] [transform=[ 1
0; 0 1; 0 96; ]] [visible=< (x=0, y=0, w=722, h=504); >] [opaqueContent] [noTex
t] [noTextOverTransparent] [color=rgba(255, 255, 255, 1)]
Yeah, that does look OK. Phew!
Comment 67•14 years ago
|
||
regression.
http://forums.mozillazine.org/viewtopic.php?p=10037249#p10037249
should file a new bug ?
Comment 68•14 years ago
|
||
(In reply to comment #67)
> regression.
> http://forums.mozillazine.org/viewtopic.php?p=10037249#p10037249
>
>
> should file a new bug ?
Yep, looks like it's wrongly using the patch for Basic too!
Comment 69•14 years ago
|
||
(In reply to comment #68)
> (In reply to comment #67)
> > regression.
> > http://forums.mozillazine.org/viewtopic.php?p=10037249#p10037249
> >
> >
> > should file a new bug ?
>
> Yep, looks like it's wrongly using the patch for Basic too!
filed, bug 605806
Updated•14 years ago
|
Flags: in-litmus?(abillings)
Updated•14 years ago
|
Target Milestone: mozilla2.0b8 → mozilla2.0b7
Updated•13 years ago
|
Flags: in-litmus?(abillings) → in-litmus?
Attachment #483046 -
Flags: feedback?(vladimir)
Comment 70•12 years ago
|
||
Thunderbird issue: It is 01/29/13 and I did the latest update to 17.0.2 last week and now the X (close), minimize, and restore on the upper right along with the bar they sit within is not there. I must click on "File" then "Exit" to close.
This thread is from 2010, so it is apparent the bug is still present in 2013. No problem until the update to the 17.0.2 version last week.
Comment 71•12 years ago
|
||
Sounds like it is not this bug then.
You need to log in
before you can comment on or make changes to this bug.
Description
•