diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /toolkit/content/minimal-xul.css | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/content/minimal-xul.css')
-rw-r--r-- | toolkit/content/minimal-xul.css | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/toolkit/content/minimal-xul.css b/toolkit/content/minimal-xul.css new file mode 100644 index 0000000000..946d6b483c --- /dev/null +++ b/toolkit/content/minimal-xul.css @@ -0,0 +1,237 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * This file should only contain a minimal set of rules for the XUL elements + * that may be implicitly created as part of HTML/SVG documents (e.g. + * scrollbars). Rules for everything else related to XUL can be found in + * xul.css. (This split of the XUL rules is to minimize memory use and improve + * performance in HTML/SVG documents.) + * + * ANYTHING ADDED TO THIS FILE WILL APPLY TO ALL DOCUMENTS, INCLUDING WEB CONTENT. + * IF UA RULES ARE ONLY NEEDED IN CHROME, THEY SHOULD BE ADDED TO xul.css. + */ + +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */ + +* { + -moz-user-focus: ignore; + user-select: none; + display: -moz-box; + box-sizing: border-box; +} + +/* hide the content and destroy the frame */ +[hidden="true"] { + display: none; +} + +/* hide the content, but don't destroy the frames */ +[collapsed="true"] { + visibility: collapse; +} + +/* Rules required for style caching of anonymous content scrollbar parts */ +@supports -moz-bool-pref("layout.css.cached-scrollbar-styles.enabled") { + :is(scrollcorner, resizer, scrollbar, scrollbarbutton, slider):where(:-moz-native-anonymous) { + /* All scrollbar parts must not inherit any properties from the scrollable + * element (except for visibility and pointer-events), for the anonymous + * content style caching system to work. + */ + all: initial; + visibility: inherit; + pointer-events: inherit; + + /* These properties are not included in 'all'. */ + -moz-context-properties: initial; + -moz-control-character-visibility: initial; + -moz-font-smoothing-background-color: initial; + -moz-min-font-size-ratio: initial; + + /* -moz-box-layout: initial; is not included in 'all' but it's not needed, + * because we explicitly specify it below for the top level scrollbar parts + * (and it inherits through to the rest). + */ + + math-depth: initial; + /* As long as inert implies pointer-events: none as it does now, we're + * good. */ + -moz-inert: initial; + + /* Using initial is not sufficient for direction, since its initial value can + * depend on the document's language. + * + * LTR is what we want for all scrollbar parts anyway, so that e.g. we don't + * reverse the rendering of a horizontal scrollbar. + */ + direction: ltr; + + /* Similarly for font properties, whose initial values depend on the + * document's language. Scrollbar parts don't have any text or rely on + * font metrics. + */ + font: 16px sans-serif; + + /* The initial value of justify-items is `legacy`, which makes it depend on + * the parent style. + * + * Reset it to something else. + */ + justify-items: start; + + /* Avoid `object > *` rule in html.css from setting a useless, non-initial + * value of vertical-align. + */ + vertical-align: initial !important; + + /* Duplicate the rules from the '*' rule above, which were clobbered by the + * 'all: initial' declaration. + * + * The other zero specificity rules above are on :root, and scrollbar parts + * cannot match :root, so no need to duplicate them. + */ + -moz-user-focus: ignore; + user-select: none; + display: -moz-box; + box-sizing: border-box; + } + + /* There are other rules that set the cursor on the scrollbar, expecting them + * to inherit into its children. Explicitly inherit it, overriding the + * 'all: initial;' declaration above. + */ + :is(scrollbarbutton, slider, thumb):where(:-moz-native-anonymous) { + cursor: inherit; + } +} + +scrollbar, +scrollcorner, +resizer { + /* Force legacy XUL layout for now on scrollbars / resizers and descendants, + * as ScrollFrameHelper relies on that (and nsScrollbarFrame is a XUL frame + * anyways). + * + * TODO: Eventually we should rewrite scrollbars so that they don't use XUL + * layout. + */ + -moz-box-layout: legacy; +} + +scrollbar[orient="vertical"], +slider[orient="vertical"], +thumb[orient="vertical"] { + -moz-box-orient: vertical; +} + +thumb { + /* Prevent -moz-user-modify declaration from designmode.css having an + * effect. */ + -moz-user-modify: initial; + + -moz-box-align: center; + -moz-box-pack: center; +} + +/********** resizer **********/ + +resizer { + position: relative; + z-index: 2147483647; + /* Widget gets decide on its own whether or not the native theme should apply, + based on the context/OS theme. If it does not, SVG background will kick in. */ + appearance: auto; + -moz-default-appearance: resizer; + + /* native resizer should never flip on its own; + we will flip it (or the SVG background) with CSS transform below. */ + direction: ltr; + writing-mode: initial; + + background: url("chrome://global/skin/icons/resizer.svg") no-repeat; + background-size: 100% 100%; + cursor: se-resize; + width: 15px; + height: 15px; +} + +/* bottomstart/bottomend is supported in XUL window only */ +resizer[dir="bottom"][flip], +resizer[dir="bottomleft"], +resizer[dir="bottomstart"]:-moz-locale-dir(ltr), +resizer[dir="bottomend"]:-moz-locale-dir(rtl) { + transform: scaleX(-1); +} + +resizer[dir="bottomleft"], +resizer[dir="bottomstart"]:-moz-locale-dir(ltr), +resizer[dir="bottomend"]:-moz-locale-dir(rtl) { + cursor: sw-resize; +} + +resizer[dir="top"], +resizer[dir="bottom"] { + cursor: ns-resize; +} + +resizer[dir="left"] { + transform: scaleX(-1); +} + +resizer[dir="left"], +resizer[dir="right"] { + cursor: ew-resize; +} + +resizer[dir="topleft"] { + cursor: nw-resize; +} + +resizer[dir="topright"] { + cursor: ne-resize; +} + +/********** scrollbar **********/ + +thumb { + -moz-box-flex: 1; + display: -moz-box !important; +} + +/* Don't collapse thumb when scrollbar is disabled. */ +thumb[collapsed="true"] { + visibility: hidden; +} + +scrollbar, scrollbarbutton, scrollcorner, slider, thumb { + user-select: none; +} + +scrollbar[value="hidden"] { + visibility: hidden; +} + +@media (-moz-scrollbar-start-backward: 0) { + scrollbarbutton[sbattr="scrollbar-up-top"] { + display: none; + } +} + +@media (-moz-scrollbar-start-forward: 0) { + scrollbarbutton[sbattr="scrollbar-down-top"] { + display: none; + } +} + +@media (-moz-scrollbar-end-backward: 0) { + scrollbarbutton[sbattr="scrollbar-up-bottom"] { + display: none; + } +} + +@media (-moz-scrollbar-end-forward: 0) { + scrollbarbutton[sbattr="scrollbar-down-bottom"] { + display: none; + } +} |