mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Add invalidate_stylesheets to StyleSheetsListOwner trait
This commit is contained in:
parent
3dd38151d4
commit
d77b9c6775
6 changed files with 17 additions and 35 deletions
|
@ -13,7 +13,7 @@ use crate::dom::bindings::root::{Dom, DomRoot};
|
|||
use crate::dom::bindings::str::DOMString;
|
||||
use crate::dom::cssrule::CSSRule;
|
||||
use crate::dom::element::Element;
|
||||
use crate::dom::node::{document_from_node, shadow_root_from_node, window_from_node, Node};
|
||||
use crate::dom::node::{document_from_node, stylesheets_owner_from_node, window_from_node, Node};
|
||||
use crate::dom::window::Window;
|
||||
use dom_struct::dom_struct;
|
||||
use servo_arc::Arc;
|
||||
|
@ -115,16 +115,8 @@ impl CSSStyleOwner {
|
|||
if changed {
|
||||
// If this is changed, see also
|
||||
// CSSStyleRule::SetSelectorText, which does the same thing.
|
||||
if let Some(shadow_root) =
|
||||
shadow_root_from_node(rule.parent_stylesheet().owner().upcast::<Node>())
|
||||
{
|
||||
shadow_root.invalidate_stylesheets();
|
||||
} else {
|
||||
rule.global()
|
||||
.as_window()
|
||||
.Document()
|
||||
.invalidate_stylesheets();
|
||||
}
|
||||
stylesheets_owner_from_node(rule.parent_stylesheet().owner().upcast::<Node>())
|
||||
.invalidate_stylesheets();
|
||||
}
|
||||
result
|
||||
},
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use crate::dom::bindings::codegen::Bindings::CSSStyleRuleBinding::{self, CSSStyleRuleMethods};
|
||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
|
||||
use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom};
|
||||
|
@ -11,7 +10,7 @@ use crate::dom::bindings::str::DOMString;
|
|||
use crate::dom::cssrule::{CSSRule, SpecificCSSRule};
|
||||
use crate::dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration, CSSStyleOwner};
|
||||
use crate::dom::cssstylesheet::CSSStyleSheet;
|
||||
use crate::dom::node::{shadow_root_from_node, Node};
|
||||
use crate::dom::node::{stylesheets_owner_from_node, Node};
|
||||
use crate::dom::window::Window;
|
||||
use cssparser::ToCss;
|
||||
use cssparser::{Parser as CssParser, ParserInput as CssParserInput};
|
||||
|
@ -119,18 +118,8 @@ impl CSSStyleRuleMethods for CSSStyleRule {
|
|||
let mut guard = self.cssrule.shared_lock().write();
|
||||
let stylerule = self.stylerule.write_with(&mut guard);
|
||||
mem::swap(&mut stylerule.selectors, &mut s);
|
||||
if let Some(shadow_root) =
|
||||
shadow_root_from_node(self.cssrule.parent_stylesheet().owner().upcast::<Node>())
|
||||
{
|
||||
shadow_root.invalidate_stylesheets();
|
||||
} else {
|
||||
// It seems like we will want to avoid having to invalidate all
|
||||
// stylesheets eventually!
|
||||
self.global()
|
||||
.as_window()
|
||||
.Document()
|
||||
.invalidate_stylesheets();
|
||||
}
|
||||
stylesheets_owner_from_node(self.cssrule.parent_stylesheet().owner().upcast::<Node>())
|
||||
.invalidate_stylesheets();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use crate::dom::bindings::codegen::Bindings::CSSStyleSheetBinding;
|
||||
use crate::dom::bindings::codegen::Bindings::CSSStyleSheetBinding::CSSStyleSheetMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
|
||||
use crate::dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
|
||||
|
@ -12,7 +11,7 @@ use crate::dom::bindings::root::{Dom, DomRoot, MutNullableDom};
|
|||
use crate::dom::bindings::str::DOMString;
|
||||
use crate::dom::cssrulelist::{CSSRuleList, RulesSource};
|
||||
use crate::dom::element::Element;
|
||||
use crate::dom::node::{shadow_root_from_node, Node};
|
||||
use crate::dom::node::{stylesheets_owner_from_node, Node};
|
||||
use crate::dom::stylesheet::StyleSheet;
|
||||
use crate::dom::window::Window;
|
||||
use dom_struct::dom_struct;
|
||||
|
@ -87,14 +86,7 @@ impl CSSStyleSheet {
|
|||
|
||||
pub fn set_disabled(&self, disabled: bool) {
|
||||
if self.style_stylesheet.set_disabled(disabled) {
|
||||
if let Some(shadow_root) = shadow_root_from_node(self.owner.upcast::<Node>()) {
|
||||
shadow_root.invalidate_stylesheets();
|
||||
} else {
|
||||
self.global()
|
||||
.as_window()
|
||||
.Document()
|
||||
.invalidate_stylesheets();
|
||||
}
|
||||
stylesheets_owner_from_node(self.owner().upcast::<Node>()).invalidate_stylesheets();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4661,4 +4661,8 @@ impl StyleSheetListOwner for Dom<Document> {
|
|||
&mut *self.stylesheets.borrow_mut(),
|
||||
)
|
||||
}
|
||||
|
||||
fn invalidate_stylesheets(&self) {
|
||||
Document::invalidate_stylesheets(self);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -237,4 +237,8 @@ impl StyleSheetListOwner for Dom<ShadowRoot> {
|
|||
&mut self.author_styles.borrow_mut().stylesheets,
|
||||
)
|
||||
}
|
||||
|
||||
fn invalidate_stylesheets(&self) {
|
||||
ShadowRoot::invalidate_stylesheets(self);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ pub trait StyleSheetListOwner: JSTraceable {
|
|||
fn stylesheet_at(&self, index: usize) -> Option<DomRoot<CSSStyleSheet>>;
|
||||
fn add_stylesheet(&self, owner: &Element, sheet: Arc<Stylesheet>);
|
||||
fn remove_stylesheet(&self, owner: &Element, s: &Arc<Stylesheet>);
|
||||
fn invalidate_stylesheets(&self);
|
||||
}
|
||||
|
||||
#[dom_struct]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue