Commit graph

122 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
a9ec257d55 Bug 1696378 - Fix snapping issues with outlines. r=mstange
This isn't really an uneven border (because we snap border widths
correctly); this is the textfield border snapping differently than the
outline, actually, in a way such that the outline shows underneath. We
use negative offsets to try to cover the border but that breaks in this
case.

I thought of two ways to fix it, but this one looks slightly more
future-proof (and simpler), see the comment in ComputeBorderColor. Let
me know if you want me to go the other way (snapping offsets instead) or
both, actually.

The transparent border uncovered that the radius was slightly off, and
also that I forgot to snap the auto-style outline width properly, so I
fixed those drive-by too (without the first one stuff looks off
otherwise, at least, the second one I could move).

Differential Revision: https://phabricator.services.mozilla.com/D107287
2021-03-05 01:35:17 +00:00
Brindusan Cristian
8687336f7f Backed out changeset 42731d5daba6 (bug 1696378) for reftest failures in textarea-focus.html. CLOSED TREE 2021-03-05 03:15:14 +02:00
Emilio Cobos Álvarez
dfd193480f Bug 1696378 - Fix snapping issues with outlines. r=mstange
This isn't really an uneven border (because we snap border widths
correctly); this is the textfield border snapping differently than the
outline, actually, in a way such that the outline shows underneath. We
use negative offsets to try to cover the border but that breaks in this
case.

I thought of two ways to fix it, but this one looks slightly more
future-proof (and simpler), see the comment in ComputeBorderColor. Let
me know if you want me to go the other way (snapping offsets instead) or
both, actually.

The transparent border uncovered that the radius was slightly off, and
also that I forgot to snap the auto-style outline width properly, so I
fixed those drive-by too (without the first one stuff looks off
otherwise, at least, the second one I could move).

Differential Revision: https://phabricator.services.mozilla.com/D107287
2021-03-04 23:19:58 +00:00
Sylvestre Ledru
4edd85cc9b Bug 1519636 - Reformat recent changes to the Google coding style r=necko-reviewers,valentin
Updated with clang-format version 11.0.1 (taskcluster-B6bdwSKDRF-luRQWXBuzpA)

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D106920
2021-03-02 16:14:46 +00:00
Emilio Cobos Alvarez
56a0cfe07e Bug 1695798 - Crisper combobox and spinner button arrows for the non-native theme. r=mstange
This also makes them look not gross when zoomed in, which is a nice plus.

Differential Revision: https://phabricator.services.mozilla.com/D106855
2021-03-02 00:48:36 +00:00
Emilio Cobos Alvarez
babc9888a5 Bug 1695741 - Choose more round points for windows scroll button arrows. r=mstange
This should help with fuzziness in some tests, and also look nicer.

Differential Revision: https://phabricator.services.mozilla.com/D106823
2021-03-01 22:55:37 +00:00
Emilio Cobos Alvarez
37d38b9608 Bug 1695679 - Simplify non-native theme scrollbar sizing on Windows to match the native theme. r=mstange
The native theme doesn't enforce the size of the whole scrollbar. This is
important because if the scrollbar overflows the scroller we might suppress it.

This causes a variety of test failures with the non-native theme enabled. One
of the most glaring ones is:

  http://wpt.live/css/css-flexbox/overflow-auto-006.html

We don't show scrollbars for the inline elements because their width is 50px
and the min scrollbar ends up being 51px (17 * 3) which is pretty unfortunate.

Instead, allow the thumb / scrollbar / track to shrink like the native theme.

Differential Revision: https://phabricator.services.mozilla.com/D106781
2021-03-01 22:55:32 +00:00
Emilio Cobos Álvarez
03fd22c802 Bug 1694059 - Use WebRender to render non-native range inputs and radio buttons. r=mstange
The only thing missing now are things that draw arrows / checkmarks.

Make the disabled range thumb opaque, to avoid dealing with clipping
(also matches all other browsers, fwiw).

Differential Revision: https://phabricator.services.mozilla.com/D106011
2021-02-23 23:22:19 +00:00
Cosmin Sabou
51f713408b Backed out changeset 3bf5d4016ea7 (bug 1694059) for input range reftest failures. CLOSED TREE 2021-02-23 14:25:35 +02:00
Emilio Cobos Álvarez
3ae296b53c Bug 1694059 - Use WebRender to render non-native range inputs and checkboxes. r=mstange
The only thing missing now are things that draw arrows / checkmarks.

Make the disabled range thumb opaque, to avoid dealing with clipping
(also matches all other browsers, fwiw).

Differential Revision: https://phabricator.services.mozilla.com/D106011
2021-02-23 10:51:37 +00:00
Emilio Cobos Álvarez
7f2b3314e0 Bug 1694059 - Use WebRender to render most non-native-theme widgets when possible. r=mstange
We basically use a couple primitives to draw these
(PaintRoundedRectWithRadius, FillRect), so making the code a bit generic
implementing stuff with WebRender seems straight-forward.

I've kept using the fallback codepath for the bits that draw complex
paths like arrows and such, but the rest of the things should work with
this patch.

A thing I'm not too happy about is the scrollbar painting setup (requires a lot
of boilerplate), but modulo template hacks make nsNativeBasicTheme a template
that receives its super class as a parameter or something) it seems hard to do
better.

Differential Revision: https://phabricator.services.mozilla.com/D105931
2021-02-23 10:49:37 +00:00
smolnar
7f2e38a6b3 Backed out changeset 960cb2cf2009 (bug 1694059) for causing reftest failures. 2021-02-23 06:41:58 +02:00
Emilio Cobos Álvarez
c0fec9f98e Bug 1694059 - Use WebRender to render most non-native-theme widgets when possible. r=mstange
We basically use a couple primitives to draw these
(PaintRoundedRectWithRadius, FillRect), so making the code a bit generic
implementing stuff with WebRender seems straight-forward.

I've kept using the fallback codepath for the bits that draw complex
paths like arrows and such, but the rest of the things should work with
this patch.

A thing I'm not too happy about is the scrollbar painting setup (requires a lot
of boilerplate), but modulo template hacks make nsNativeBasicTheme a template
that receives its super class as a parameter or something) it seems hard to do
better.

Differential Revision: https://phabricator.services.mozilla.com/D105931
2021-02-23 02:58:47 +00:00
smolnar
79ca2f76fa Backed out changeset 4436a8bb02fd (bug 1694059) for causing reftest failures. CLOSED TREE 2021-02-23 04:17:14 +02:00
Emilio Cobos Álvarez
cb286403d0 Bug 1694059 - Use WebRender to render most non-native-theme widgets when possible. r=mstange
We basically use a couple primitives to draw these
(PaintRoundedRectWithRadius, FillRect), so making the code a bit generic
implementing stuff with WebRender seems straight-forward.

I've kept using the fallback codepath for the bits that draw complex
paths like arrows and such, but the rest of the things should work with
this patch.

A thing I'm not too happy about is the scrollbar painting setup (requires a lot
of boilerplate), but modulo template hacks make nsNativeBasicTheme a template
that receives its super class as a parameter or something) it seems hard to do
better.

Differential Revision: https://phabricator.services.mozilla.com/D105931
2021-02-23 01:10:22 +00:00
Emilio Cobos Álvarez
15ff419df0 Bug 1694059 - Rename various nnt prefs. r=spohl,mstange
As per feedback in D105931.

Differential Revision: https://phabricator.services.mozilla.com/D105991
2021-02-22 20:05:35 +00:00
Emilio Cobos Álvarez
965efb55a0 Bug 1694059 - Pass draw target by reference in non-native widget code. r=mstange
And remove some useless argument names. This is just preparation for the next
patch and shouldn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D105930
2021-02-22 16:18:33 +00:00
Emilio Cobos Álvarez
6825bbc8f8 Bug 1693688 - Make the non-native theme not return minimum sizes for checkboxes (and most other widgets). r=spohl,mstange
This matches closer what Chrome and Safari do (Safari paints outside of
the box when this happens, but the layout box still respects the
author), see:

  data:text/html,<button style="padding: 0; width: 0">
  data:text/html,<input type=checkbox style="width: 0">

Etc. For checkboxes, this matches what OSX does, too.

Since we still want checkboxes to be slightly larger than what they'd be
otherwise, we add a hook to tweak it when non-native theme is enabled.

Differential Revision: https://phabricator.services.mozilla.com/D105798
2021-02-20 00:13:10 +00:00
Noemi Erli
73493a49e5 Backed out 2 changesets (bug 1693688) for causing failures in browser_options-view-01.js CLOSED TREE
Backed out changeset d0bd198837ee (bug 1693688)
Backed out changeset e0b1f4b79d4b (bug 1693688)
2021-02-19 23:39:07 +02:00
Emilio Cobos Álvarez
d1915bcf15 Bug 1693688 - Make the non-native theme not return minimum sizes for checkboxes (and most other widgets). r=spohl,mstange
This matches closer what Chrome and Safari do (Safari paints outside of
the box when this happens, but the layout box still respects the
author), see:

  data:text/html,<button style="padding: 0; width: 0">
  data:text/html,<input type=checkbox style="width: 0">

Etc. For checkboxes, this matches what OSX does, too.

Since we still want checkboxes to be slightly larger than what they'd be
otherwise, we add a hook to tweak it when non-native theme is enabled.

Differential Revision: https://phabricator.services.mozilla.com/D105798
2021-02-19 18:42:17 +00:00
Stephen A Pohl
1f52641c4f Bug 1693426: Add support for vertical progress bars and meters in the non-native theme. r=emilio,mstange
Differential Revision: https://phabricator.services.mozilla.com/D105551
2021-02-18 06:12:54 +00:00
Emilio Cobos Álvarez
a228cdaaa6 Bug 1691428 - Stop claiming we support the Menuitem widgets in nsNativeBasicTheme.cpp. r=mstange
We don't.

Depends on D104874

Differential Revision: https://phabricator.services.mozilla.com/D104875
2021-02-16 10:36:18 +00:00
Emilio Cobos Álvarez
ca89009775 Bug 1692721 - nsNativeBasicTheme should handle outline-offset like non-auto outline does. r=mstange
I thought we didn't support outline-offset on auto-style outline.

The rect we get is already inflated, so we just got to compute the
radius using that.

Differential Revision: https://phabricator.services.mozilla.com/D105125
2021-02-16 10:25:32 +00:00
Emilio Cobos Álvarez
d96854eeb1 Bug 1691781 - Make Linux tab bar use the darker of the highlight / highlighttext colors. r=dao
Some GTK themes use very soft colors for selection backgrounds, using
darker colors for the text. This makes the tab and focus outlines in the
tab bar not have sufficient contrast with usual backgrounds.

I needed to do this for bug 1690778, but it seems worth doing it on the
front-end as well.

Differential Revision: https://phabricator.services.mozilla.com/D104547
2021-02-11 16:36:54 +00:00
Emilio Cobos Álvarez
1d3c069803 Bug 1690778 - Derive accent color from theme highlight color in GTK. r=mstange
This makes form controls match the rest of the GTK theme like selection
colors, etc.

An alternative to this would be to just use non-native colors on GTK for
all content, but that seems somewhat unfortunate and we do the right
thing for scrollbars so...

I've tried on a variety of themes and this looks nice so far.

Differential Revision: https://phabricator.services.mozilla.com/D104496
2021-02-10 00:47:38 +00:00
Emilio Cobos Álvarez
2cbb8a03f1 Bug 1691064 - Make outline-style auto follow border radii. r=mstange
This matches Safari and improves the rendering when this shows by
default on unthemed form controls.

Differential Revision: https://phabricator.services.mozilla.com/D104322
2021-02-08 16:25:16 +00:00
Emilio Cobos Álvarez
e531b2b7fd Bug 1689615 - Only paint one outline for outline-style:auto with nnt. r=mstange
outline-style: auto might show up in non-themed controls and such, and
the double-outline there might look ugly.

Following border-radius would be an extra improvement for the reddit
case, but no platform does it currently (Safari on macOS does it), so
let's consider that in a follow-up.

Differential Revision: https://phabricator.services.mozilla.com/D104214
2021-02-05 16:25:57 +00:00
Emilio Cobos Álvarez
5d9da34947 Bug 1690700 - Improve scrollbars for non-native GTK theme. r=mstange
This is based on the windows implementation and has two nice things:

 * Makes scrollbar-color react to active / hover state, like on Windows.
 * Implements dark scrollbar support.

Differential Revision: https://phabricator.services.mozilla.com/D103969
2021-02-04 16:15:27 +00:00
Emilio Cobos Álvarez
e7cfc6d6f2 Bug 1690043 - Remove requirement for root scrollbars to be opaque in the non-native theme. r=mstange
This seems to come from bug 1179780, but custom scrollbars shouldn't
have this requirement, and it's kind of artificial anyway.

Differential Revision: https://phabricator.services.mozilla.com/D103692
2021-02-01 19:32:09 +00:00
Emilio Cobos Álvarez
a091ae7d29 Bug 1689603 - Return 2px border for most widgets in nsNativeBasicTheme. r=spohl
This is slightly unfortunate on one hand because we're technically lying
(but so is chromium and our GTK theme, on the other hand).

It is nice because it means that themed and unthemed controls have the
same size by default though, which seems desirable.

So I'm a bit on the edge here, but I think this is probably the less bad
option to grow our form controls if we want to do it.

Differential Revision: https://phabricator.services.mozilla.com/D103477
2021-01-29 21:18:54 +00:00
Emilio Cobos Álvarez
4b4ff83478 Bug 1689253 - Add a more sensible scrollbar size API to nsITheme, and use it to replace ScrollbarNonDisappearing. r=spohl
There's no reason we should need an scrollbar box to query the size of a
scrollbar. I plan to use this in the following patch to make the size of a
resizer not vary depending on whether the container has scrollbars or not,
which is what ultimately causes the reftest failure.

Differential Revision: https://phabricator.services.mozilla.com/D103302
2021-01-28 22:11:54 +00:00
Emilio Cobos Álvarez
9ea4db0ec1 Bug 1687865 - Fix up the radius in PaintBorderRectWithRadius if we're too small. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D103258
2021-01-28 13:14:34 +00:00
Emilio Cobos Álvarez
2e368fc8fb Bug 1689252 - Simplify progress/meter painting in nsNativeBasicTheme. r=spohl
This shares and simplifies the code significantly, and also fixes the
artifacts when value is too small.

Differential Revision: https://phabricator.services.mozilla.com/D103257
2021-01-28 20:58:39 +00:00
Emilio Cobos Álvarez
cdd2c2e7a3 Bug 1689286 - Make the number input spinners look nicer with padding. r=spohl
If you add padding to the input on the inline-end, like some of the
examples in bug 1674431, then the darker border looks off.

Without it, the number input still looks nice, so I think we should do
this.

We might want to introduce the padding by default (see bug 1689286).

Differential Revision: https://phabricator.services.mozilla.com/D103270
2021-01-28 14:17:01 +00:00
Emilio Cobos Álvarez
5fd3126bf6 Bug 1688978 - Snap border widths in the non-native theme like we snap layout borders. r=mstange
We might want to snap focus outline widths as well, but that's harder
because it has various segments and separation between them, so we
probably want to snap those separately... So for now only border rects
probably makes sense.

Differential Revision: https://phabricator.services.mozilla.com/D103106
2021-01-26 22:12:03 +00:00
Emilio Cobos Álvarez
6beb652049 Bug 1688978 - Make non-native theme widgets grow with zoom as usual, except for scrollbars. r=mstange
This matches other browsers, and also common sense (I'd be ok letting
scrollbars grow or shrink too tbf, but...).

Differential Revision: https://phabricator.services.mozilla.com/D103099
2021-01-26 21:34:35 +00:00
Cameron McCormack
3fbe75f6cc Bug 1688535 - Make non-native theme <scrollbar> minimum sizes take into account track size and buttons. r=emilio
On Linux, the <scrollbar> minimum size must take into account the
minimum track size (which is larger than the general minimum widget
size).

On other platforms, the scrollbar buttons must also be taken into
account.

Differential Revision: https://phabricator.services.mozilla.com/D102885
2021-01-26 01:35:04 +00:00
Emilio Cobos Álvarez
ed2fc6bdce Bug 1687868 - Prevent skia fuzziness in nsNativeBasicTheme. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D102773
2021-01-23 19:31:33 +00:00
Emilio Cobos Álvarez
237d9ba64f Bug 1674431 - Size the non-native theme number spinner buttons more sensibly. r=spohl
Use the same width as the select arrow button makes sense to me and
fixes all the reported problems so far.

Also tweak the sizing / painting to take less height since these have a
background, so stuff like:

  <input type=number style="height: 100px">

Looks super ugly otherwise.

The new polygon coordinates are the result of scaling by 1.5 and
centering vertically the arrow, which gives the same visual effect for
the regular input without margin / padding, but prevents the issue
described above with too-tall inputs or inputs with lots of padding.

We might want to shrink them a bit more if needed, but I think this is
alright. For reference, Chrome uses 15px, but we remove the inline-end
padding by default so we compensate a bit that way.

If we don't like how this looks when the author specifies padding on the
input (see comment 13 for example), we might want to reconsider the
design so that the spinners look good with padding, but that's a
different task completely.

Differential Revision: https://phabricator.services.mozilla.com/D102754
2021-01-22 16:09:35 +00:00
Emilio Cobos Álvarez
1380e5631f Bug 1686606 - Fix outline painting in the non-native theme. r=spohl,mstange
Outline should by default start outside of the border area, not inside.

Then we can use negative outline offsets to cover the border if we want
to.

This prevents the outline from getting inside the padding area.

Differential Revision: https://phabricator.services.mozilla.com/D102454
2021-01-21 22:12:14 +00:00
Emilio Cobos Álvarez
e2e871521d Bug 1686613 - Port non-native theme paddings to forms.css. r=mstange
The only change I've made intentionally is the change to the textarea /
input padding. Now that the focus outline doesn't cover the padding
area, this preserves the same visual effect, plus the 2px inline padding
values now match Chrome, which means that even affecting appearance:
none controls, this is probably compatible.

Depends on D102458

Differential Revision: https://phabricator.services.mozilla.com/D102459
2021-01-21 21:38:33 +00:00
Stephen A Pohl
c549ff9079 Bug 1687838: Calculate array lengths using ArrayLength() in non-native theming code. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D102522
2021-01-21 16:46:33 +00:00
Stephen A Pohl
0fdcd76c4c Bug 1615038: Fine-tune scrollbar arrow buttons in the non-native theme. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D102352
2021-01-20 21:54:58 +00:00
Stephen A Pohl
d7225b7870 Bug 1615038: Fine-tune scrollbars in the non-native theme on Windows. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D102094
2021-01-20 21:33:34 +00:00
Emilio Cobos Álvarez
ac01ad2d5e Bug 1675389 - Tweak the baseline of checkbox/radio buttons on the non-native theme. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D102478
2021-01-20 20:08:35 +00:00
Cameron McCormack
c8d9a2b0bf Bug 1685196 - Don't fatally assert when asked to paint an unsupported widget background in the non-native theme. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D100835
2021-01-10 22:25:07 +00:00
Cameron McCormack
b096d852ec Bug 1685225 - Use state bits to determine the color for non-native theme meter chunks. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D100855
2021-01-06 06:00:28 +00:00
Cameron McCormack
b8b0d529d8 Bug 1684801 - Don't paint indeterminate radio buttons with a solid background. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D100756
2021-01-05 12:45:48 +00:00
Cameron McCormack
8d722de758 Bug 1682210 - Render non-native theme indeterminate, unchecked checkboxes liked indeterminate, checked ones. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D99644
2020-12-15 01:42:10 +00:00
Bogdan Tara
4a649093b9 Backed out changeset 3e90a3759639 (bug 1679208) for scrollbars-no-margin.html failures CLOSED TREE 2020-12-03 01:11:32 +02:00