Some preparatory patches for the new macOS vibrancy implementation
Categories
(Core :: Web Painting, task)
Tracking
()
Tracking | Status | |
---|---|---|
firefox79 | --- | fixed |
People
(Reporter: mstange, Assigned: mstange)
References
Details
Attachments
(2 files)
I'm extracting some patches from bug 1592739 into this bug because they can land without the rest.
Assignee | ||
Comment 1•4 years ago
|
||
On macOS, the OS window always comes with an opaque background for top level
windows. This is the case even if Gecko determines the root element of the
window to be transparent: Ever since bug 1162649, nsChildView/nsCocoaWindow
ignore calls to SetTransparencyMode for top level windows and always stay opaque.
Returning true from nsChildView::WidgetPaintsBackground() lets us indicate that
we do not need an opaque backstop color to be added at the bottom of the display
list. This backstop color would interfere with vibrant -moz-appearance rendering
under the new vibrancy model.
WidgetPaintsBackground() is only called in one place, in ComputeBackstopColor():
nscolor PresShell::ComputeBackstopColor(nsView* aDisplayRoot) {
nsIWidget* widget = aDisplayRoot->GetWidget();
if (widget && (widget->GetTransparencyMode() != eTransparencyOpaque ||
widget->WidgetPaintsBackground())) {
// Within a transparent widget, so the backstop color must be
// totally transparent.
return NS_RGBA(0, 0, 0, 0);
}
// Within an opaque widget (or no widget at all), so the backstop
// color must be totally opaque. The user's default background
// as reported by the prescontext is guaranteed to be opaque.
return GetDefaultBackgroundColorToDraw();
}
On Windows 7, the widget returns eTransparencyBorderlessGlass from
GetTransparencyMode(), which also avoids the backstop color.
Assignee | ||
Comment 2•4 years ago
|
||
This is preferable over a hardcoded color because it lets Gecko choose where the
window background should come from. We would like the background to be handled
by the OS widget, and prevent Gecko from painting a CSS background color.
Pushed by mstange@themasta.com: https://hg.mozilla.org/integration/autoland/rev/7a96aaaf968d Make nsChildView::WidgetPaintsBackground() return true. r=tnikkel https://hg.mozilla.org/integration/autoland/rev/c7b3b9bb3b14 Style the browser window's root element with -moz-appearance: dialog on macOS (which is the default). r=ntim
Comment 4•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/7a96aaaf968d
https://hg.mozilla.org/mozilla-central/rev/c7b3b9bb3b14
Description
•