diff --git a/examples/basic.css b/examples/basic.css index 911fb9a885..efafe797ed 100644 --- a/examples/basic.css +++ b/examples/basic.css @@ -2,6 +2,7 @@ App > View { docks: side=left/1; + text: on #20639b; } Widget:hover { @@ -28,6 +29,10 @@ Widget:hover { border: hkey; } +#header.-visible { + visibility: hidden; +} + #content { text: white on #20639b; border-bottom: hkey #0f2b41; diff --git a/examples/basic.py b/examples/basic.py index 72743ab933..d06ac07657 100644 --- a/examples/basic.py +++ b/examples/basic.py @@ -8,6 +8,7 @@ class BasicApp(App): def on_load(self): """Bind keys here.""" self.bind("tab", "toggle_class('#sidebar', '-active')") + self.bind("a", "toggle_class('#header', '-visible')") def on_mount(self): """Build layout here.""" diff --git a/src/textual/css/stylesheet.py b/src/textual/css/stylesheet.py index 77e4ab28ac..d441a2d125 100644 --- a/src/textual/css/stylesheet.py +++ b/src/textual/css/stylesheet.py @@ -113,8 +113,14 @@ def apply(self, node: DOMNode) -> None: rule_attributes = defaultdict(list) _check_rule = self._check_rule + + node.reset_styles() + + # Get the default node CSS rules for key, default_specificity, value in node._default_rules: rule_attributes[key].append((default_specificity, value)) + + # Apply styles on top of the default node CSS rules for rule in self.rules: for specificity in _check_rule(rule, node): for key, rule_specificity, value in rule.styles.extract_rules( @@ -123,13 +129,6 @@ def apply(self, node: DOMNode) -> None: rule_attributes[key].append((rule_specificity, value)) get_first_item = itemgetter(0) - - log("") - log(node) - for key, attributes in rule_attributes.items(): - log(key, key in node.styles.important) - log("\t", attributes) - node_rules = [ (name, max(specificity_rules, key=get_first_item)[1]) for name, specificity_rules in rule_attributes.items()