diff --git a/components/style/element_state.rs b/components/style/element_state.rs index 190c1cc3eb5..3fe94f3e882 100644 --- a/components/style/element_state.rs +++ b/components/style/element_state.rs @@ -141,6 +141,10 @@ bitflags! { /// /// https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo const IN_FOCUS_VISIBLE_STATE = 1 << 52; + /// State that dialog element is modal, for centered alignment + /// + /// https://html.spec.whatwg.org/#centered-alignment + const IN_MODAL_DIALOG_STATE = 1 << 53; } } diff --git a/components/style/gecko/non_ts_pseudo_class_list.rs b/components/style/gecko/non_ts_pseudo_class_list.rs index b82818b9bae..7b737f4d9cf 100644 --- a/components/style/gecko/non_ts_pseudo_class_list.rs +++ b/components/style/gecko/non_ts_pseudo_class_list.rs @@ -50,6 +50,7 @@ macro_rules! apply_non_ts_list { ("-moz-devtools-highlighted", MozDevtoolsHighlighted, IN_DEVTOOLS_HIGHLIGHTED_STATE, PSEUDO_CLASS_ENABLED_IN_UA_SHEETS), ("-moz-styleeditor-transitioning", MozStyleeditorTransitioning, IN_STYLEEDITOR_TRANSITIONING_STATE, PSEUDO_CLASS_ENABLED_IN_UA_SHEETS), ("fullscreen", Fullscreen, IN_FULLSCREEN_STATE, _), + ("-moz-modal-dialog", MozModalDialog, IN_MODAL_DIALOG_STATE, PSEUDO_CLASS_ENABLED_IN_UA_SHEETS), // TODO(emilio): This is inconsistently named (the capital R). ("-moz-focusring", MozFocusRing, IN_FOCUSRING_STATE, _), ("-moz-broken", MozBroken, IN_BROKEN_STATE, _), diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 0fbaf5f0aba..62af71f212b 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -2062,6 +2062,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { NonTSPseudoClass::MozDirAttrRTL | NonTSPseudoClass::MozDirAttrLikeAuto | NonTSPseudoClass::MozAutofill | + NonTSPseudoClass::MozModalDialog | NonTSPseudoClass::Active | NonTSPseudoClass::Hover | NonTSPseudoClass::MozAutofillPreview => {