aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/style/servo/selector_parser.rs38
-rw-r--r--resources/servo.css41
2 files changed, 37 insertions, 42 deletions
diff --git a/components/style/servo/selector_parser.rs b/components/style/servo/selector_parser.rs
index 7c1e082022d..7b2c06019a4 100644
--- a/components/style/servo/selector_parser.rs
+++ b/components/style/servo/selector_parser.rs
@@ -221,41 +221,9 @@ impl PseudoElement {
}
}
- /// For most (but not all) anon-boxes, we inherit all values from the
- /// parent, this is the hook in the style system to allow this.
- ///
- /// FIXME(emilio): It's likely that this is broken in a variety of
- /// situations, and what it really wants is just inherit some reset
- /// properties... Also, I guess it just could do all: inherit on the
- /// stylesheet, though chances are that'd be kinda slow if we don't cache
- /// them...
+ /// To be removed.
pub fn inherits_all(&self) -> bool {
- match *self {
- PseudoElement::After |
- PseudoElement::Before |
- PseudoElement::Selection |
- PseudoElement::DetailsContent |
- PseudoElement::DetailsSummary |
- // Anonymous table flows shouldn't inherit their parents properties in order
- // to avoid doubling up styles such as transformations.
- PseudoElement::ServoAnonymousTableCell |
- PseudoElement::ServoAnonymousTableRow |
- PseudoElement::ServoText |
- PseudoElement::ServoInputText => false,
-
- // For tables, we do want style to inherit, because TableWrapper is
- // responsible for handling clipping and scrolling, while Table is
- // responsible for creating stacking contexts.
- //
- // StackingContextCollectionFlags makes sure this is processed
- // properly.
- PseudoElement::ServoAnonymousTable |
- PseudoElement::ServoAnonymousTableWrapper |
- PseudoElement::ServoTableWrapper |
- PseudoElement::ServoAnonymousBlock |
- PseudoElement::ServoInlineBlockWrapper |
- PseudoElement::ServoInlineAbsolute => true,
- }
+ false
}
/// Covert non-canonical pseudo-element to canonical one, and keep a
@@ -585,7 +553,7 @@ impl<'a, 'i> ::selectors::Parser<'i> for SelectorParser<'a> {
}
ServoInlineBlockWrapper
},
- "-servo-input-absolute" => {
+ "-servo-inline-absolute" => {
if !self.in_user_agent_stylesheet() {
return Err(location.new_custom_error(SelectorParseErrorKind::UnexpectedIdent(name.clone())))
}
diff --git a/resources/servo.css b/resources/servo.css
index d883e0eccb0..723be706a27 100644
--- a/resources/servo.css
+++ b/resources/servo.css
@@ -168,18 +168,39 @@ svg > * {
display: none;
}
+/*
+ * For most (but not all) anon-boxes, we inherit all values from the
+ * parent.
+ *
+ * Anonymous table flows shouldn't inherit their parents properties in order
+ * to avoid doubling up styles such as transformations. Same for text and such.
+ *
+ * For tables, we do want style to inherit, because TableWrapper is
+ * responsible for handling clipping and scrolling, while Table is
+ * responsible for creating stacking contexts.
+ *
+ * StackingContextCollectionFlags makes sure this is processed
+ * properly.
+ *
+ * FIXME(emilio): inheriting all is a very strong hammer, and it's likely
+ * broken for stuff like table backgrounds and such. Gecko explicitly inherits
+ * what it wants, which seems a bit better off-hand.
+ */
+*|*::-servo-anonymous-table,
+*|*::-servo-anonymous-table-wrapper,
+*|*::-servo-table-wrapper,
+*|*::-servo-anonymous-block,
+*|*::-servo-inline-block-wrapper,
+*|*::-servo-inline-absolute {
+ all: inherit;
+}
+
/* style for text node. */
*|*::-servo-text {
- margin: 0;
text-overflow: inherit;
overflow: inherit;
}
-/* style for text in input elements. */
-*|*::-servo-input-text {
- margin: 0;
-}
-
*|*::-servo-table-wrapper {
display: table;
border: none;
@@ -239,10 +260,16 @@ svg > * {
margin: 0;
}
-/* The outer fragment wrapper of an inline absolute hypothetical fragment. */
+/* The outer fragment wrapper of an inline absolute hypothetical fragment.
+ *
+ * FIXME(emilio): This was disabled because of a typo in the CSS parser,
+ * re-enable or figure out why it's not needed.
+
*|*::-servo-inline-absolute {
clip: auto;
border: none;
padding: 0;
margin: 0;
}
+
+*/