Commit graph

177 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
c18dd9edcd Bug 1731052 - Consider whether the color is CSS accessible to decide whether to use standins in nsNativeBasicTheme. r=mstange
We need to use standins for CSS-accesible colors in high contrast mode
(when appropriate) so that the CSS color matches the one in forms.css.

But this is not needed for e.g. scrollbar colors, which are not
CSS-accessible. So shuffle around the checks so that we account for
that as we should.

Differential Revision: https://phabricator.services.mozilla.com/D125830
2021-09-16 19:06:09 +00:00
Emilio Cobos Álvarez
8f9d065216 Bug 1730752 - Use SelectedItem rather than Highlight on nsNativeBasicTheme. r=morgan
Highlight is about selection colors since bug 1693222. SelectedItem is the
right color pair to use here. These are the same on Windows.

Differential Revision: https://phabricator.services.mozilla.com/D125594
2021-09-15 08:19:28 +00:00
Emilio Cobos Álvarez
f39a1503ae Bug 1730603 - Use standins if forced to in nsNativeBasicTheme.
MANUAL PUSH: hcm test fix CLOSED TREE
2021-09-14 02:55:51 +02:00
Emilio Cobos Álvarez
d41c93a17a Bug 1687682 - Make autofill use a semi-transparent background-image rather than filter. r=mstange,tgiles
With the non-native theme we don't need filter for this to affect
"native" inputs, we can just implement the logic in nsNativeBasicTheme
instead.

A bit unfortunate that we need that special-case, but it seems better
than using filter, which can break websites due to it creating an
stacking context.

I _think_ there are tests that I need to adjust for this change, but if
not I'll write some.

Keep the current behavior behind a pref just in case.

Differential Revision: https://phabricator.services.mozilla.com/D125232
2021-09-12 11:16:07 +00:00
Iulian Moraru
1121a4ab66 Backed out changeset 282b96702ce9 (bug 1687682) for causing multiple mochitest failures. 2021-09-11 04:07:28 +03:00
Emilio Cobos Álvarez
269520d9e9 Bug 1687682 - Make autofill use a semi-transparent background-image rather than filter. r=mstange,tgiles
With the non-native theme we don't need filter for this to affect
"native" inputs, we can just implement the logic in nsNativeBasicTheme
instead.

A bit unfortunate that we need that special-case, but it seems better
than using filter, which can break websites due to it creating an
stacking context.

I _think_ there are tests that I need to adjust for this change, but if
not I'll write some.

Keep the current behavior behind a pref just in case.

Differential Revision: https://phabricator.services.mozilla.com/D125232
2021-09-10 22:44:44 +00:00
Cosmin Sabou
c859adbb63 Bug 1727289 - null-check root pres context to avoid crashes on automation in some cases.
​
MANUAL PUSH: Trivial orange fix CLOSED TREE
​
2021-08-30 22:54:39 +03:00
Emilio Cobos Alvarez
d1f5731c04 Bug 1727289 - Prefer widget scale for scrollbar parts. r=mstange
Print preview documents might use a different DPI depending on the print
target.

Differential Revision: https://phabricator.services.mozilla.com/D123939
2021-08-30 18:01:44 +00:00
Emilio Cobos Álvarez
cd1744924f Bug 1722397 - Add a way to use the native accent color for selection and form controls on Android. r=agi
I tied it to the use-theme-accent bit in non-native-theme just for
convenience (so that form controls just react to this).

This works nicely, but I didn't turn this on by default because the
accessiblecaret images are hardcoded-blue pngs, and they look ugly
without being the same color as the native accent.

Differential Revision: https://phabricator.services.mozilla.com/D120898
2021-07-27 17:12:15 +00:00
Emilio Cobos Álvarez
9f65d4a846 Bug 1722031 - Tweak accent-color foreground computation and let it ride the trains. r=mstange
The accent-color computation right now chooses between black and white,
which is not ideal.

I tried to make it so that authors could choose the foreground colors in
the linked CSSWG issue from the comment, but that didn't go anywhere.

I think choosing a contrasting color that is in-line and contrasting
enough with the accent-color chosen by the page when darkening is better
than just black or white.

If we want the black-or-white behavior we can just change
layout.css.accent-color.target-contrast-ratio to something large enough.

https://accent-color.glitch.me/ is a nice playground to see this patch
in action.

Differential Revision: https://phabricator.services.mozilla.com/D120723
2021-07-24 13:30:25 +00:00
Emilio Cobos Alvarez
ec3cfdc989 Bug 1717245 - Don't use system colors in the non-native theme if we're not painting backgrounds. r=mstange
(Like for printing with backgrounds disabled).

Otherwise layout darkens our foreground colors etc, and that causes contrast to
be poor.

Since the point of not painting backgrounds is saving ink, using the
regular colors seems fine.

Differential Revision: https://phabricator.services.mozilla.com/D118276
2021-06-22 10:43:17 +00:00
Nicolas Silva
2be01aafa4 Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-11 13:33:10 +00:00
Alexandru Michis
b9be72a526 Backed out 6 changesets (bug 1711648) for causing crashes in FrameBuilder.
CLOSED TREE

Backed out changeset 0384828b36cc (bug 1711648)
Backed out changeset 15d8e0d681ef (bug 1711648)
Backed out changeset b27d8421ebc5 (bug 1711648)
Backed out changeset 12da58f4ac4f (bug 1711648)
Backed out changeset 1d4c0b685f0e (bug 1711648)
Backed out changeset 367235e897e3 (bug 1711648)
2021-06-10 18:28:27 +03:00
Nicolas Silva
69c80ddaa7 Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-10 13:07:34 +00:00
Marian-Vasile Laza
5dc1a42e67 Backed out 6 changesets (bug 1711648) for causing build bustages.
CLOSED TREE

Backed out changeset a803c960b909 (bug 1711648)
Backed out changeset d07c38d536c5 (bug 1711648)
Backed out changeset 823b75fc8c3c (bug 1711648)
Backed out changeset 602a2bcc5e29 (bug 1711648)
Backed out changeset 99ce7c7e458d (bug 1711648)
Backed out changeset bdbc65799b8a (bug 1711648)
2021-06-10 12:25:48 +03:00
Nicolas Silva
6cdbec834a Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-10 08:08:07 +00:00
Emilio Cobos Álvarez
c413e19eec Bug 1714524 - Don't draw native theme focus outlines if the author specifies a non-auto outline. r=mstange
While this doesn't match traditional Gecko behavior, the non-native
theme has much more opinionated focus outlines so I think this makes
sense.

It also matches Safari and Chrome, afaict.

Differential Revision: https://phabricator.services.mozilla.com/D116831
2021-06-08 12:16:08 +00:00
Alexandru Michis
1d2f036537 Backed out changeset c97ffb4d1b95 (bug 1714524) for causing mochitest failures in test_focusrings.xhtml
CLOSED TREE
2021-06-08 04:34:29 +03:00
Emilio Cobos Álvarez
83e940c1fd Bug 1714524 - Don't draw native theme focus outlines if the author specifies a non-auto outline. r=mstange
While this doesn't match traditional Gecko behavior, the non-native
theme has much more opinionated focus outlines so I think this makes
sense.

It also matches Safari and Chrome, afaict.

Differential Revision: https://phabricator.services.mozilla.com/D116831
2021-06-07 23:54:21 +00:00
Emilio Cobos Álvarez
f2a6ce01df Bug 1690954 - Draw the menulist arrow button using currentColor rather than a fixed color. r=jfkthame
As its background might not be themed.

Differential Revision: https://phabricator.services.mozilla.com/D115194
2021-05-17 12:11:15 +00:00
Emilio Cobos Álvarez
2ecfa192c1 Bug 1710324 - Use non-native scrollbar drawing in nsNativeThemeGTK. r=stransky
Right now we paint scrollbars using gtk in nsNativeThemeGTK, and that
makes them look a bit inconsistent if the non-native implementation ends
up drawing them differently. I think scrollbars should look the same
regardless of where they're drawn.

This simplifies the code, and also brings proper scrollbar-{width,color}
support to the native theme, which is nice because Thunderbird uses it
if you use a theme there.

I opted for removing the code, but let me know if you'd rather keep it
behind the widget.non-native-theme.enabled pref or such.

Differential Revision: https://phabricator.services.mozilla.com/D114699
2021-05-11 13:57:18 +00:00
Emilio Cobos Álvarez
e746e3a732 Bug 1709647 - Don't use theme active scrollbar thumb color for dark scrollbars if it's greyish. r=stransky
As in that case it probably doesn't have enough contrast. This is drive-by
since, while I was looking at that GTK theme, the scrollbars are monochrome.

Differential Revision: https://phabricator.services.mozilla.com/D114394
2021-05-11 09:32:20 +00:00
Emilio Cobos Álvarez
34a9a0f457 Bug 1705605 - Implement accent-color in nsNativeBasicTheme. r=mstange
This is a new addition for CSS UI Level 4:

  https://drafts.csswg.org/css-ui-4/#widget-accent

I want to provide feedback on some spec issues, and thought it was a
kinda neat thing to prototype (it also makes testing contrast and such
with random GTK themes easier).

For now enable for Nightly only.

Differential Revision: https://phabricator.services.mozilla.com/D112312
2021-04-27 10:41:00 +00:00
Emilio Cobos Álvarez
c0ba36dc12 Bug 1703774 - Fix radii computation in WebRender codepath for auto-style outline. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D111235
2021-04-08 14:23:25 +00:00
Emilio Cobos Alvarez
9ac846cb5c Bug 1703604 - When using a transparent scrollbar button / track color, use the thumb color to paint the scrollbar arrow. r=spohl
This improves the rendering of youtube.com on Windows, and I think should be uncontroversial.

scrollbar-color: transparent transparent will still get you the fully transparent scrollbar.

Differential Revision: https://phabricator.services.mozilla.com/D111137
2021-04-08 09:48:01 +00:00
Butkovits Atila
933498728f Backed out changeset 47b38a36e71a (bug 1703604) for causing bustages at nsNativeBasicThemeGTK.cpp. CLOSED TREE 2021-04-08 02:55:47 +03:00
Emilio Cobos Alvarez
25c7684295 Bug 1703604 - When using a transparent scrollbar button / track color, use the thumb color to paint the scrollbar arrow. r=spohl
This improves the rendering of youtube.com on Windows, and I think should be uncontroversial.

scrollbar-color: transparent transparent will still get you the fully transparent scrollbar.

Differential Revision: https://phabricator.services.mozilla.com/D111137
2021-04-07 19:41:17 +00:00
Stephen A Pohl
b35b953353 Bug 1702755: Correct corner radii of progress bar, range and meter form controls in non-native theme. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D110668
2021-04-02 14:39:17 +00:00
Emilio Cobos Álvarez
390c6943fe Bug 1702676 - Change public LookAndFeel API to accept a color scheme. r=mstange
This shouldn't change behavior, but is the biggest cross-platform part
of the change so I'd like to get it landed sooner rather than later.

The two calls like:

  GetColor(ColorID::TextSelectBackground, color);
  if (color == 0x000000) {
    mColorTextSelectForeground = NS_RGB(0xff, 0xff, 0xff);
  } else {
    mColorTextSelectForeground = NS_DONT_CHANGE_COLOR;
  }

that I'm removing are just broken. They were calling the version of
GetColor the function that took a default value when the color wasn't
available, not the version of the color with the outparam.

To prevent such mistakes, add two signatures, GetColor(), returning a
Maybe<nscolor> and Color(), returning a color with a fallback.

Differential Revision: https://phabricator.services.mozilla.com/D110651
2021-04-02 12:22:14 +00:00
Narcis Beleuzu
e9fb777466 Backed out changeset 597b9606c3ca (bug 1702676) for reftest failures on mq_prefers_reduced_motion_reduce.html CLOSED TREE 2021-04-02 09:34:53 +03:00
Emilio Cobos Álvarez
f7f84a3c53 Bug 1702676 - Change public LookAndFeel API to accept a color scheme. r=mstange
This shouldn't change behavior, but is the biggest cross-platform part
of the change so I'd like to get it landed sooner rather than later.

The two calls like:

  GetColor(ColorID::TextSelectBackground, color);
  if (color == 0x000000) {
    mColorTextSelectForeground = NS_RGB(0xff, 0xff, 0xff);
  } else {
    mColorTextSelectForeground = NS_DONT_CHANGE_COLOR;
  }

that I'm removing are just broken. They were calling the version of
GetColor the function that took a default value when the color wasn't
available, not the version of the color with the outparam.

To prevent such mistakes, add two signatures, GetColor(), returning a
Maybe<nscolor> and Color(), returning a color with a fallback.

Differential Revision: https://phabricator.services.mozilla.com/D110651
2021-04-02 00:21:37 +00:00
Emilio Cobos Álvarez
92686b6ec6 Bug 1702282 - Minor cleanup to ComputeCheckboxColors. r=mstange
No behavior change.

Depends on D110449

Differential Revision: https://phabricator.services.mozilla.com/D110450
2021-04-01 19:02:19 +00:00
Emilio Cobos Álvarez
f7e9b9f2f8 Bug 1702282 - Improve contrast of disabled checkmarks and radio buttons. r=mstange
Use a more opaque checkmark color.

Depends on D110448

Differential Revision: https://phabricator.services.mozilla.com/D110449
2021-04-01 19:02:19 +00:00
Emilio Cobos Álvarez
01639dfc2d Bug 1702282 - Remove useless !isDisabled checks in nsNativeBasicTheme. r=mstange
We always check whether something is disabled first so they're just
noise.

No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D110448
2021-04-01 19:02:18 +00:00
Emilio Cobos Álvarez
0c995f22b1 Bug 1701825 - Minor scrollbar tweaks. r=stransky
This is a follow-up that I thought was worth doing, but let me know if
you disagree or what not. I think this produces the best results:

 * For light pages, we still get light scrollbars for the track, but the
   active thumb still uses the dark theme highlight color.

 * For dark pages, we again still use the themed highlight color for the
   thumb, and we use dark scrollbar colors elsewhere like we do now.

Again, let me know if you think this is not worth it, or is too much, or
what not. I've tested this on a decent range of popular GTK themes and
it looks like a clear progression to me.

Differential Revision: https://phabricator.services.mozilla.com/D110203
2021-03-30 17:31:33 +00:00
Emilio Cobos Álvarez
03f14a4edc Bug 1701846 - Make setting overlay scrollbars on GTK do something sane-ish. r=mstange
So that they work sorta similar to the native ones. This is intended
mostly for testing, but hey, if someone is motivated enough...

I haven't tracked the native gtk overlay scrollbar durations down,
someone motivated enough could do that if they wanted to. But this seems
close enough.

Differential Revision: https://phabricator.services.mozilla.com/D110192
2021-03-30 03:31:21 +00:00
Emilio Cobos Álvarez
ab1118bc65 Bug 1700802 - Add a small radius to the auto style outline. r=mstange
(When not following the frame's border radius of course)

This makes stuff like:

  data:text/html,<input style="border-color: lightgrey">

More aesthetically pleasing when focused, and we still keep the square
inside the outline (this is what Safari does).

Differential Revision: https://phabricator.services.mozilla.com/D109680
2021-03-25 11:28:08 +00:00
Emilio Cobos Álvarez
75e5766b67 Bug 1699930 - Don't let GTK text scale affect non-native scrollbar sizes. r=mstange
This matches the native theme. We plumb it via LookAndFeel to avoid
having to load GTK settings in child processes.

Differential Revision: https://phabricator.services.mozilla.com/D109275
2021-03-22 16:11:33 +00:00
Emilio Cobos Álvarez
c0053473fd Bug 1699931 - Fix checked checkbox radius in the non-native theme. r=mstange
This is caused by a minor issue with WebRender disabled where the radii
was slightly off because it wasn't accounting for the deflation of the
rect.

Differential Revision: https://phabricator.services.mozilla.com/D109206
2021-03-22 08:12:22 +00:00
Emilio Cobos Álvarez
5cbba9b317 Bug 1699937 - Don't draw focus outlines for box-shadow in the non-native theme. r=mstange
This is a relatively easy way to improve the rendering with the
non-native theme while not regressing anything.

In the future, once non-native-theme is shipped and default everywhere,
I think we could provide something like:

  bool nsITheme::GetShadowRect(nsIFrame*, StyleAppearance, LayoutDeviceRect&, RectCornerRadii&)

or such, where we can provide a precise rect + radii, and we would avoid
painting the shadow if the function returned false. That would allow us
to remove the native theme box shadow code path, and avoid WR fallback,
all at once.

Differential Revision: https://phabricator.services.mozilla.com/D109209
2021-03-20 23:08:11 +00:00
Cosmin Sabou
53e07f6afd Backed out changeset c793fb0c34e0 (bug 1699931) for Android reftest failures on element-paint-native-widget.html. 2021-03-20 19:56:27 +02:00
Emilio Cobos Álvarez
897ce5540c Bug 1699931 - Fix checked checkbox radius in the non-native theme. r=mstange
This also uncovered a minor issue with WebRender disabled where the
radii was slightly off because it wasn't accounting for the border.

Differential Revision: https://phabricator.services.mozilla.com/D109206
2021-03-20 17:04:41 +00:00
Emilio Cobos Alvarez
31b583bbcc Bug 1698783 - Respect Windows' system scrollbar sizes. r=mstange
Depends on D108960

Differential Revision: https://phabricator.services.mozilla.com/D108973
2021-03-18 19:12:49 +00:00
Emilio Cobos Álvarez
2ef90f0690 Bug 1698783 - Make non-native scrollbar size configurable in Windows too. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D108960
2021-03-18 19:12:49 +00:00
Emilio Cobos Alvarez
ab368a8926 Bug 1698284 - Make the non-native theme not use system colors if we're not overriding the pages' colors. r=morgan
This prevents contrast issues with high contrast themes when the page only
specifies some of the colors (which is an issue which we have historically
had on GTK with dark themes for a long time).

Feel free to push back on this if you prefer this, as on GTK we force a light
theme on content anyways, but this is a problem on windows for users that use a
high contrast theme but allow pages to override colors.

Differential Revision: https://phabricator.services.mozilla.com/D108324
2021-03-16 16:46:05 +00:00
Emilio Cobos Álvarez
f717a6f4db Bug 1698336 - Fix high contrast rendering of <meter>. r=mstange
Using the same color for the track and the meter chunk is not going to
fly of course...

In high contrast, make the colors consistent with <progress>, which
seems like a reasonable thing to do.

Differential Revision: https://phabricator.services.mozilla.com/D108347
2021-03-15 21:06:54 +00:00
Emilio Cobos Álvarez
871d3edbf8 Bug 1698302 - bonus: support indeterminate progress meter. r=mstange
I wonder if we could do something more fancy with the animation than
QueueAnimatedContentForRefresh, which is timer based, like a
transform-like animation that WebRender could run or something, but this
is probably good enough for now.

Depends on D108335

Differential Revision: https://phabricator.services.mozilla.com/D108336
2021-03-15 21:01:08 +00:00
Emilio Cobos Álvarez
2950a6ee21 Bug 1698302 - Paint progress/meter chunks along with the track. r=mstange
The progress chunk already has the right size, but it's easier to get
the right clipping if we just paint it as part of the progress bar.

This is much like we paint the range track and thumb. We apply the
native appearance atomically so this should be fine.

Differential Revision: https://phabricator.services.mozilla.com/D108335
2021-03-15 21:01:08 +00:00
Emilio Cobos Alvarez
b51dbb1fd3 Bug 1698284 - Minor high-contrast theme tweaks in the non-native theme. r=mstange
Mostly use matching foreground / background colors. Buttonface is the
counterpart of Buttontext, and Highlightext the counterpart of Highlight.

This fixes contrast of checkboxes and radio buttons for example, and a couple
other contrast issues with light themes specially.

Differential Revision: https://phabricator.services.mozilla.com/D108319
2021-03-15 21:00:36 +00:00
Emilio Cobos Álvarez
de1f51fa10 Bug 1697467 - Push the high contrast code from nsNativeBasicThemeWin to nsNativeBasicTheme. r=mstange
Linux can also have high contrast (and mac, if you tweak prefs, but
let's assume that doesn't happen), so no reason we shouldn't share this
code.

One related simplification while I was doing this code move is that I
managed to remove the scrollbar "border" code. Turns out that Windows
was overriding ComputeScrollbarColors so that border and track colors
were always the same, and Linux was ignoring the border anyways, so with
this we can simplfiy the implementation a bit (as the Linux scrollbar
track / corner code can be shared with Windows now).

Differential Revision: https://phabricator.services.mozilla.com/D107863
2021-03-12 14:44:13 +00:00