diff --git a/components/layout/stylesheets/servo.css b/components/layout/stylesheets/servo.css index a77e0dd7b4d..2a536f88af0 100644 --- a/components/layout/stylesheets/servo.css +++ b/components/layout/stylesheets/servo.css @@ -19,26 +19,26 @@ textarea { font-size: 0.8333em; } -::-servo-text-control-inner-editor { +input::-servo-text-control-inner-editor { overflow-wrap: normal; pointer-events: auto; } -::-servo-text-control-inner-container { +input::-servo-text-control-inner-container { position: relative; height: 100%; pointer-events: none; display: flex; } -::-servo-text-control-inner-editor, ::-servo-text-control-placeholder { +input::-servo-text-control-inner-editor, input::-servo-text-control-placeholder { white-space: pre; margin-block: auto !important; inset-block: 0 !important; block-size: fit-content !important; } -::-servo-text-control-placeholder { +input::-servo-text-control-placeholder { overflow: hidden !important; position: absolute !important; color: grey !important; diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index ed4c37c4378..7e3e5a09b77 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -666,6 +666,10 @@ impl Element { .upcast::() .set_containing_shadow_root(Some(&shadow_root)); + if is_ua_widget == IsUserAgentWidget::Yes { + shadow_root.upcast::().set_in_ua_widget(); + } + let bind_context = BindContext { tree_connected: self.upcast::().is_connected(), tree_is_in_a_document_tree: self.upcast::().is_in_a_document_tree(), diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index fb32228ab78..831999246f5 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -231,9 +231,12 @@ bitflags! { /// needs extra work or not const HAS_WEIRD_PARSER_INSERTION_MODE = 1 << 11; + /// Whether this node reside in UA shadow DOM. + const IS_IN_UA_WIDGET = 1 << 12; + /// Whether this node serves as the text container for editable content of /// or