Commit graph

140 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
2e0d7c56fd Bug 1776556 - Restore Windows' accent-color / system-color behavior for now. r=mstange
This basically pref-gates some of the accent-color changes that landed before
the soft-freeze to match current release behavior, at least for now.

In the future we might want to reconsider turning these on, but at the very
least we should figure out a good story for the grey-ish accent colors, see the
comments in the pref definitions.

The only tricky bit is the use-theme-accent pref handling. I made it specific
to the non-native-theme again so that AccentColor and NNT kept behaving
consistently, but AccentColor in the browser chrome used the real accent color.

Differential Revision: https://phabricator.services.mozilla.com/D150339
2022-06-28 18:55:27 +00:00
Emilio Cobos Álvarez
fe85e4d99d Bug 1775247 - Make AccentColor/Text consistent with accent-color: auto. r=mstange
It'd be weird otherwise, as in platforms where use-theme-accent is false
(Windows), form controls would be blue (the default accent color) but
the AccentColor color would be the system accent color still.

Differential Revision: https://phabricator.services.mozilla.com/D149877
2022-06-22 09:45:07 +00:00
Emilio Cobos Álvarez
4c5f20179e Bug 1775247 - Implement AccentColor/AccentColorText and remove -moz-prefixed version of the color. r=mstange
As per https://github.com/w3c/csswg-drafts/issues/7347.

Mostly renaming, doesn't change behavior other than exposing the new
color keywords (tested in wpt).

Differential Revision: https://phabricator.services.mozilla.com/D149876
2022-06-22 09:45:06 +00:00
Emilio Cobos Álvarez
9fc2aa47fc Bug 1773558 - Move fixed-point font types to Rust. r=layout-reviewers,jfkthame
Now that cbindgen and rust support const generics, it seems more simple.

This centralizes all the relevant font constants etc in rust and avoids
conversions when going from rust to C++ and vice versa.

Differential Revision: https://phabricator.services.mozilla.com/D148847
2022-06-13 00:59:23 +00:00
Noemi Erli
841e350bc4 Backed out changeset 7585591a9bad (bug 1773558) for causing failures in system-fonts.html 2022-06-12 19:02:33 +03:00
Emilio Cobos Álvarez
e441089ca0 Bug 1773558 - Move fixed-point font types to Rust. r=layout-reviewers,jfkthame
Now that cbindgen and rust support const generics, it seems more simple.

This centralizes all the relevant font constants etc in rust and avoids
conversions when going from rust to C++ and vice versa.

Differential Revision: https://phabricator.services.mozilla.com/D148847
2022-06-12 10:48:58 +00:00
Emilio Cobos Álvarez
9349aeea85 Bug 1771796 - Remove -moz-scrollbar-thumb-proportional. r=dholbert
It unconditionally matches on all platforms, so it's not returning any useful information.

Depends on D147689

Differential Revision: https://phabricator.services.mozilla.com/D147690
2022-06-02 11:58:18 +00:00
Emilio Cobos Álvarez
5fed8de04b Bug 1754547 - Generalize moz-os-version into moz-platform. r=dao,preferences-reviewers,Gijs
Allow differentiating non-windows platforms on it.

Differential Revision: https://phabricator.services.mozilla.com/D138431
2022-02-10 15:50:31 +00:00
Emilio Cobos Álvarez
de7b391af7 Bug 1749645 - Rename nsNativeBasicTheme{,Cocoa} to Theme{,Cocoa}. r=mstange
We have this situation right now where all the themes are inheriting from
nsNativeBasicTheme. Rename it to a nicer name, and clean up some code while at
it.

In the future I'd like to simplify the inheritance chain to remove
nsNativeTheme altogether (so that all nsITheme implementations use
mozilla::widget::Theme).

That's not hard to do mechanically, but rather than dumping all of
nsNativeTheme into Theme I'd like to do it a bit more carefully, to hopefully
remove a lot of the helpers that nsNativeTheme has to deal with XUL and so on
and use something nicer. Eventually the inheritance chain will be something
like:

 * nsITheme : public nsISupports
 * Theme : public nsITheme, public nsITimerCallback, public nsINamed
 * ThemeCocoa : public Theme
 * nsNativeThemeCocoa : public ThemeCocoa
 * nsNativeThemeWin : public Theme
 * nsNativeThemeGtk : public Theme

Differential Revision: https://phabricator.services.mozilla.com/D135668
2022-01-12 16:33:31 +00:00
Emilio Cobos Alvarez
8416a9e79d Bug 1742796 - Use a more transparent color for dark mode / Android selection. r=geckoview-reviewers,owlish
This prevents contrast issues with colors that are very similar to the
selection background.

See before / after screenshots. Selection on higher-contrasting
foregrounds still looks good.

This is the alpha channel that e.g., Bugzilla uses on dark mode
(so I didn't just mint it).

Differential Revision: https://phabricator.services.mozilla.com/D132022
2021-11-25 20:09:25 +00:00
Stephen A Pohl
b739277c24 Bug 1719427: Refactor scrollbar drawing code across platforms. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D129265
2021-11-15 12:39:38 +00:00
criss
8ace361058 Backed out 4 changesets (bug 1719427) for causing build bustages. CLOSED TREE
Backed out changeset d6948ef7f495 (bug 1719427)
Backed out changeset 4df7017f6bc9 (bug 1719427)
Backed out changeset 8c5bb08f80e9 (bug 1719427)
Backed out changeset e32004dd2014 (bug 1719427)
2021-11-15 13:46:20 +02:00
Stephen A Pohl
0468798e53 Bug 1719427: Refactor scrollbar drawing code across platforms. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D129265
2021-11-15 11:15:54 +00:00
Emilio Cobos Álvarez
c308704902 Bug 1738614 - Remove other Widget* colors. r=mstange
These are only used for frameset painting and the non-e10s <select>
dropdown focus codepath. We have other more appropriate standard
colors for this.

Differential Revision: https://phabricator.services.mozilla.com/D129992
2021-11-02 18:08:07 +00:00
Emilio Cobos Álvarez
923cf5df84 Bug 1738614 - Remove TextForeground/Background system colors. r=mstange
Same thing, there's nor reason these should be different from other
CSS-exposed colors.

Differential Revision: https://phabricator.services.mozilla.com/D129991
2021-11-02 18:08:07 +00:00
Emilio Cobos Álvarez
ac14d7e42d Bug 1738614 - Remove WindowBackground/Foreground system colors. r=mstange
There's no reason for these to be different to the CSS-exposed
Window/WindowText.

Differential Revision: https://phabricator.services.mozilla.com/D129990
2021-11-02 18:08:07 +00:00
Makoto Kato
1be11f4ee1 Bug 1556983 - Primary pointer capability should be coarse when having touch screen. r=geckoview-reviewers,agi
Many users report that GeckoView returns non-coarse value for primary pointer
capabilities. Actually, we assume that primary pointer device is 1st device by
`InputDevice.getDeviceIds`, but some mobile devices seems not to return touch
screen as 1st item according to user reports.

Also, Android's `InputDevice` API doesn't define what is primary pointer
device, so we cannot assume primary pointer device well.

Other implements are,

- Chrome returns coarse if something input device has coarse capability.
- Firefox for Windows seems to return coarse if it is tablet mode.

So we should return coarse as primary pointer capability when having touch
screen, like Chrome.

But there is still another issue.

When I check some devices (including Android VM on Chrome OS), even if no touch
screen, the `InputDevice`'s source may has `SOURCE_TOUCHSCREEN`. Chrome checks
that fine pointer at first, then it checks coarse pointer. But current GV is
coarse pointer at first. Since the `InputDevice`'s source may have both
`SOURCE_MOUSE` and `SOURCE_TOUCHSCREEN` on touchpad/mouse, GV returns different
result. So we shouldn't check `SOURCE_TOUCHSCREEN` at first.

Differential Revision: https://phabricator.services.mozilla.com/D129901
2021-11-02 02:04:06 +00:00
Emilio Cobos Álvarez
736cd85309 Bug 1736141 - Derive a content theme from newtab page background, and use it for non-chrome docshells. r=mstange,dao
We use "is-in-chrome-docshell" rather than "is a chrome doc" so that about:
pages that are loaded in the content area (like about:addons etc) follow the
general content theme as well.

Cache the relevant color schemes since having that many branches on the default
system theme made me a bit uncomfortable, and this code can be called quite a
lot... Though it probably isn't such a huge deal. This makes us initialize the
theme right away, so make sure subclasses do the right thing. This in practice
was only an issue for GTK, which does cache the "system theme is dark" bit.

Differential Revision: https://phabricator.services.mozilla.com/D128674
2021-10-20 08:25:57 +00:00
Emilio Cobos Alvarez
067255ed45 Bug 1735078 - Clean up some unused LookAndFeel code on Windows. r=mhowell
Differential Revision: https://phabricator.services.mozilla.com/D128025
2021-10-11 17:11:27 +00:00
Emilio Cobos Álvarez
e50c80851e Bug 1734115 - Add basic support for dark form controls to nsNativeBasicTheme. r=mstange
For that:

 * Tweak the standin system colors to match the non-native theme.

 * Use those system colors for button and field backgrounds.

 * Rename the "should use system colors" bit to "is high contrast",
   which is what it really is (specially now that we use system colors
   also in non-high-contrast).

Border colors and other colors like the <input type=range> and such
might need some extra tweaking perhaps, but this is a decent start and
looks good in https://crisal.io/tmp/form-controls.html afaict (dark mode
toggle needs the color-scheme pref enabled of course).

Differential Revision: https://phabricator.services.mozilla.com/D127533
2021-10-05 14:40:52 +00:00
Emilio Cobos Álvarez
d10188f9b4 Bug 1731678 - Add some generic dark system colors for Windows/Android/standins. r=dholbert
Eventually we should support all of them, but for now they are only used
by native code (unless you enable the color-scheme pref) and these will
be enough.

Differential Revision: https://phabricator.services.mozilla.com/D126737
2021-09-29 10:20:56 +00:00
Emilio Cobos Álvarez
63a33c5d0c Bug 1730867 - Use native scrollbars on Android. r=mstange
We only draw a scrollbar thumb, so it's easy enough (fair amount of
boilerplate, though).

For now I've done the trivial thing (keep painting a round thumb without
other fancy things), as that's what we were doing, but in the future we
should consider drawing a stroke around the thumb like cocoa does to add
more contrast.

This patch does change behavior in some cases. For example dark websites
now get a lighter, easier to distinguish scrollbar, thanks to the
scrollbar darkening code in nsNativeBasicTheme.cpp.

Differential Revision: https://phabricator.services.mozilla.com/D125826
2021-09-28 17:04:34 +00:00
Csoregi Natalia
58cdf74c34 Backed out 3 changesets (bug 1730867) for multiple reftest failures. CLOSED TREE
Backed out changeset aed4ce969bb6 (bug 1730867)
Backed out changeset 84abb450636b (bug 1730867)
Backed out changeset bbd4d5126a19 (bug 1730867)
2021-09-28 19:47:49 +03:00
Emilio Cobos Álvarez
5510570ab7 Bug 1730867 - Use native scrollbars on Android. r=mstange
We only draw a scrollbar thumb, so it's easy enough (fair amount of
boilerplate, though).

For now I've done the trivial thing (keep painting a round thumb without
other fancy things), as that's what we were doing, but in the future we
should consider drawing a stroke around the thumb like cocoa does to add
more contrast.

This patch does change behavior in some cases. For example dark websites
now get a lighter, easier to distinguish scrollbar, thanks to the
scrollbar darkening code in nsNativeBasicTheme.cpp.

Differential Revision: https://phabricator.services.mozilla.com/D125826
2021-09-28 12:52:42 +00:00
criss
b7aa1288e9 Backed out 5 changesets (bug 1730867) for causing multiple reftest failures. CLOSED TREE
Backed out changeset 3a0215aefdf5 (bug 1730867)
Backed out changeset 6d0aac048440 (bug 1730867)
Backed out changeset 12f9678771c8 (bug 1730867)
Backed out changeset 315dd0b76f3f (bug 1730867)
Backed out changeset 894f76b91190 (bug 1730867)
2021-09-28 06:41:46 +03:00
Emilio Cobos Álvarez
8696d678e8 Bug 1730867 - Use native scrollbars on Android. r=mstange
We only draw a scrollbar thumb, so it's easy enough (fair amount of
boilerplate, though).

For now I've done the trivial thing (keep painting a round thumb without
other fancy things), as that's what we were doing, but in the future we
should consider drawing a stroke around the thumb like cocoa does to add
more contrast.

This patch does change behavior in some cases. For example dark websites
now get a lighter, easier to distinguish scrollbar, thanks to the
scrollbar darkening code in nsNativeBasicTheme.cpp.

Differential Revision: https://phabricator.services.mozilla.com/D125826
2021-09-27 13:56:49 +00:00
Emilio Cobos Álvarez
3d1e69b292 Bug 1693222 - Fix selecteditem color on macOS.
This is an oversight. I made selecteditem be -moz-html-cellhighlight,
but that's for inactive cells.

Use the inactive cell color everywhere (though android doesn't
differentiate). This matches other browsers and what was reviewed on
this bug.

MANUAL PUSH: The semi-transparent text-selection-disabled color caused
one test failure CLOSED TREE.
2021-09-02 17:27:30 +02:00
Emilio Cobos Álvarez
8b10d3a89d Bug 1693222 - Implement SelectedItem and SelectedItemText system colors. r=mstange
Since Highlight / HighlightText are now equivalent to the text selection
ones, remove those too.

Differential Revision: https://phabricator.services.mozilla.com/D123964
2021-09-02 11:38:01 +00:00
Narcis Beleuzu
92fc260af2 Backed out changeset 28a0487d0291 (bug 1693222) for reftest failure on themed-widget.html. CLOSED TREE 2021-09-02 02:26:12 +03:00
Emilio Cobos Álvarez
c3eb845bbf Bug 1693222 - Implement SelectedItem and SelectedItemText system colors. r=mstange
Since Highlight / HighlightText are now equivalent to the text selection
ones, remove those too.

Differential Revision: https://phabricator.services.mozilla.com/D123964
2021-09-01 18:21:57 +00:00
Bob Owen
8434181376 Bug 1701796: Move IsTouchDeviceSupportPresent to LookAndFeel remoting to prevent win32k usage in the content process. r=emilio,geckoview-reviewers,owlish
Differential Revision: https://phabricator.services.mozilla.com/D123497
2021-08-25 14:32:13 +00:00
Emilio Cobos Álvarez
624584c368 Bug 1724405 - Make ui.caretBlinkCount a proper widget int, and make it respect GTK settings. r=stransky
And make sure the caret ends up being visible, rather than _not_
visible.

This should be implementable on windows as well. It seems macOS doesn't
have a timeout thing.

Differential Revision: https://phabricator.services.mozilla.com/D122132
2021-08-10 14:39:27 +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
52e1281074 Bug 1722362 - Tweak selection color in GeckoView so that it works better with dark websites. r=agi
And make highlight colors consistent with our selection colors.

Differential Revision: https://phabricator.services.mozilla.com/D120874
2021-07-27 06:54:05 +00:00
Iulian Moraru
ec881c8c4e Backed out changeset 08263ef09d83 (bug 1722362) for causing android reftest failures on text-shadow-selected-1.html. CLOSED TREE 2021-07-27 04:36:38 +03:00
Emilio Cobos Álvarez
511cbd050e Bug 1722362 - Tweak selection color in GeckoView so that it works better with dark websites. r=agi
And make highlight colors consistent with our selection colors.

Differential Revision: https://phabricator.services.mozilla.com/D120874
2021-07-26 21:34:34 +00:00
Emilio Cobos Álvarez
8d34b18bfe Bug 1722353 - Minor cleanup in Android's nsLookAndFeel. r=geckoview-reviewers,agi
This is in preparation to adding dark system color support to Android.

Differential Revision: https://phabricator.services.mozilla.com/D120863
2021-07-26 21:17:00 +00:00
Emilio Cobos Álvarez
14e9ec13ca Bug 1715748 - Don't use NS_SAME_AS_FOREGROUND_COLOR on android for -moz-nativehyperlinktext color. r=agi a=orange
This shouldn't have a meaningful behavior change, as the default link
color right now is taken from the browser.anchor_color pref.

Returning this color from -moz-nativehyperlinktext makes no sense, and
it wasn't being handled correctly before: On GeckoView this color was
transparent.

The other patches in this bug cause NS_SAME_AS_FOREGROUND_COLOR to be
handled correctly, as currentColor, and cause a test failure on android
which asserts that -moz-nativehyperlinktext doesn't return the initial
value.

This color is supposed to be internal, but is has been historically
exposed to the web. Will try to unship these on a follow-up bug.

MANUAL PUSH: Orange fix on a CLOSED TREE

Differential Revision: https://phabricator.services.mozilla.com/D117674
2021-06-14 19:01:23 +02:00
Emilio Cobos Álvarez
606ab54d5c Bug 1703118 - Remove unneeded caching / parent-process checks in android lookandfeel. r=agi,geckoview-reviewers
After bug 1697607 and the subsequent pref removal this code only runs in
the parent process.

After bug 1699088 the caller takes care of caching. So there should be
no need to cache stuff ourselves.

Differential Revision: https://phabricator.services.mozilla.com/D110871
2021-04-06 10:29:43 +00:00
Emilio Cobos Álvarez
7a2c22ce65 Bug 1703018 - Reduce boilerplate needed to add system-metric media features. r=boris
There's no reason we can't just query LookAndFeel and we need to use
sSystemMetrics. In the past, LookAndFeel queries were not cached, but
this is no longer the case, so perf wise should be pretty equivalent.

Note that we don't need the NS_SUCCEEDED checks because the default
value from GetInt if the platform doesn't support it is 0 anyways.

Differential Revision: https://phabricator.services.mozilla.com/D110805
2021-04-06 09:55:01 +00:00
Emilio Cobos Álvarez
d3f4f81c53 Bug 1702765 - Plumb ColorScheme through nsXPLookAndFeel. r=mstange
After this patch, there are two remaining pieces to fix bug 1700294:

 * macOS nsLookAndFeel needs to return the right colors for light / dark
   appearance.

 * We need to return ColorScheme::Dark for the right documents in
   ColorSchemeForDocument.

Both of those should be straight-forward.

Differential Revision: https://phabricator.services.mozilla.com/D110680
2021-04-02 22:17:55 +00:00
Emilio Cobos Álvarez
1b5a185787 Bug 1702756 - Remove unused IntID::TouchEnabled. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D110670
2021-04-02 16:34:32 +00:00
Emilio Cobos Álvarez
22df991215 Bug 1701830 - Remove LookAndFeelCache. r=cmartin,geckoview-reviewers,mstange,esawin
Now that RemoteLookAndFeel is enabled everywhere, this is dead code.

Differential Revision: https://phabricator.services.mozilla.com/D110179
2021-03-30 22:58:22 +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
Jed Davis
907aa1cd3c Bug 1470983 - Remote all LookAndFeel values for the Gtk backend. r=spohl,jld
This adds a new LookAndFeel implementation, RemoteLookAndFeel, which can
be used in content processes and is supplied with all of its values by the
parent process.

Co-authored-by: Cameron McCormack <cam@mcc.id.au>

Differential Revision: https://phabricator.services.mozilla.com/D97977
2020-12-16 04:17:36 +00:00
Cameron McCormack
0f3cfafb48 Bug 1678540 - Refactor nsXPLookAndFeel::GetIntImpl etc. r=spohl
This will allow calling into NativeGetInt etc. to get native LookAndFeel values without
looking at the prefs.

Differential Revision: https://phabricator.services.mozilla.com/D97725
2020-11-20 23:52:47 +00:00
Cameron McCormack
104a5a7dde Bug 1678540 - Don't provide default values for IntID::ScrollButtonLeftMouseButtonAction etc. r=spohl
This simplifies the way nsXPLookAndFeel::GetIntImpl and its overrides interact.

Differential Revision: https://phabricator.services.mozilla.com/D97724
2020-11-20 23:52:52 +00:00
Jed Davis
96f7c5cf5c Bug 1657401 - Change LookAndFeel IPC to use IPDL structs. r=spohl
Aside from automating boilerplate, this will allow reusing some of these
structs for full LookAndFeel remoting in bug 1470983.

Differential Revision: https://phabricator.services.mozilla.com/D94531
2020-11-11 23:26:51 +00:00
Edgar Chen
83a3099eea Bug 1671849 - Move drag threshold setting to nsLookAndFeel; r=geckoview-reviewers,snorp
Differential Revision: https://phabricator.services.mozilla.com/D93902
2020-10-19 15:16:49 +00:00
Chris Martin
552aa91269 Bug 1652561 - Remote Win32k calls in nsLookAndFeel::GetFontImpl() r=emilio,geckoview-reviewers,agi,froydnj
Content processes will now receive cached values for GetFontImpl() from the
parent process during initialization and whenever the theme changes.

This eliminates the use of several Win32k calls in content.

Differential Revision: https://phabricator.services.mozilla.com/D83406
2020-07-31 16:21:44 +00:00