Reset styles before applying to ensure defaults are restored

This commit is contained in:
Darren Burns
2022-01-18 14:00:58 +00:00
parent fae1663365
commit ea40177db9
3 changed files with 12 additions and 7 deletions

View File

@@ -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;

View File

@@ -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."""

View File

@@ -113,8 +113,14 @@ class Stylesheet:
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 @@ class Stylesheet:
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()