mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
garantee order
This commit is contained in:
@@ -406,7 +406,7 @@ class Stylesheet:
|
||||
)
|
||||
self.replace_rules(node, node_rules, animate=animate)
|
||||
|
||||
component_classes = node._get_component_classes()
|
||||
component_classes = DOMNode._get_component_classes(type(node))
|
||||
if component_classes:
|
||||
old_component_styles = node._component_styles.copy()
|
||||
node._component_styles.clear()
|
||||
|
||||
@@ -229,8 +229,8 @@ class DOMNode(MessagePump):
|
||||
# Node bases are in reversed order so that the base class is lower priority
|
||||
return self._css_bases(self.__class__)
|
||||
|
||||
@classmethod
|
||||
def _css_bases(cls, base: Type[DOMNode]) -> Iterable[Type[DOMNode]]:
|
||||
@staticmethod
|
||||
def _css_bases(base: Type[DOMNode]) -> Iterable[Type[DOMNode]]:
|
||||
"""Get the DOMNode base classes, which inherit CSS.
|
||||
|
||||
Args:
|
||||
@@ -317,8 +317,8 @@ class DOMNode(MessagePump):
|
||||
|
||||
return css_stack
|
||||
|
||||
@classmethod
|
||||
def _get_component_classes(cls) -> frozenset[str]:
|
||||
@staticmethod
|
||||
def _get_component_classes(node_type: type[DOMNode]) -> Iterable[str]:
|
||||
"""Gets the component classes for this class and inherited from bases.
|
||||
|
||||
Component classes are inherited from base classes, unless
|
||||
@@ -327,13 +327,13 @@ class DOMNode(MessagePump):
|
||||
Returns:
|
||||
A set with all the component classes available.
|
||||
"""
|
||||
component_classes: set[str] = set()
|
||||
for base in cls._css_bases(cls):
|
||||
component_classes.update(base.__dict__.get("COMPONENT_CLASSES", set()))
|
||||
component_classes: list[str] = []
|
||||
for base in DOMNode._css_bases(node_type):
|
||||
component_classes.extend(base.__dict__.get("COMPONENT_CLASSES", ()))
|
||||
if not base.__dict__.get("_inherit_component_classes", True):
|
||||
break
|
||||
|
||||
return frozenset(component_classes)
|
||||
return sorted(component_classes)
|
||||
|
||||
@property
|
||||
def parent(self) -> DOMNode | None:
|
||||
|
||||
@@ -238,4 +238,6 @@ def test_disabled_widgets(snap_compare):
|
||||
|
||||
|
||||
def test_focus_component_class(snap_compare):
|
||||
assert snap_compare(SNAPSHOT_APPS_DIR / "focus_component_class.py", press=["tab"])
|
||||
assert snap_compare(
|
||||
SNAPSHOT_APPS_DIR / "focus_component_class.py", press=["tab", "_"]
|
||||
)
|
||||
|
||||
@@ -143,27 +143,27 @@ def test_component_classes_inheritance():
|
||||
COMPONENT_CLASSES = {"f-1"}
|
||||
|
||||
node = DOMNode()
|
||||
node_cc = node._get_component_classes()
|
||||
node_cc = DOMNode._get_component_classes(type(node))
|
||||
a = A()
|
||||
a_cc = a._get_component_classes()
|
||||
a_cc = DOMNode._get_component_classes(type(a))
|
||||
b = B()
|
||||
b_cc = b._get_component_classes()
|
||||
b_cc = DOMNode._get_component_classes(type(b))
|
||||
c = C()
|
||||
c_cc = c._get_component_classes()
|
||||
c_cc = DOMNode._get_component_classes(type(c))
|
||||
d = D()
|
||||
d_cc = d._get_component_classes()
|
||||
d_cc = DOMNode._get_component_classes(type(d))
|
||||
e = E()
|
||||
e_cc = e._get_component_classes()
|
||||
e_cc = DOMNode._get_component_classes(type(e))
|
||||
f = F()
|
||||
f_cc = f._get_component_classes()
|
||||
f_cc = DOMNode._get_component_classes(type(f))
|
||||
|
||||
assert node_cc == set()
|
||||
assert a_cc == {"a-1", "a-2"}
|
||||
assert b_cc == {"b-1"}
|
||||
assert c_cc == {"b-1", "c-1", "c-2"}
|
||||
assert node_cc == []
|
||||
assert a_cc == ["a-1", "a-2"]
|
||||
assert b_cc == ["b-1"]
|
||||
assert c_cc == ["b-1", "c-1", "c-2"]
|
||||
assert d_cc == c_cc
|
||||
assert e_cc == {"b-1", "c-1", "c-2", "e-1"}
|
||||
assert f_cc == {"f-1"}
|
||||
assert e_cc == ["b-1", "c-1", "c-2", "e-1"]
|
||||
assert f_cc == ["f-1"]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
Reference in New Issue
Block a user