Move duplicate safe calls to update_styles into a single method

It's done as an internal, but can be called from child classes of course.
This is intended to be a single central method of asking the app to update
styles while also not caring if there is no active app available just yet.
This commit is contained in:
Dave Pearson
2023-02-13 14:19:36 +00:00
parent 821a6ff7c1
commit 3707f80aa4

View File

@@ -874,6 +874,16 @@ class DOMNode(MessagePump):
else:
self.remove_class(*class_names)
def _update_styles(self) -> None:
"""Request an update of this node's styles.
Should be called whenever CSS classes / pseudo classes change.
"""
try:
self.app.update_styles(self)
except NoActiveAppError:
pass
def add_class(self, *class_names: str) -> None:
"""Add class names to this Node.
@@ -886,10 +896,7 @@ class DOMNode(MessagePump):
self._classes.update(class_names)
if old_classes == self._classes:
return
try:
self.app.update_styles(self)
except NoActiveAppError:
pass
self._update_styles()
def remove_class(self, *class_names: str) -> None:
"""Remove class names from this Node.
@@ -903,10 +910,7 @@ class DOMNode(MessagePump):
self._classes.difference_update(class_names)
if old_classes == self._classes:
return
try:
self.app.update_styles(self)
except NoActiveAppError:
pass
self._update_styles()
def toggle_class(self, *class_names: str) -> None:
"""Toggle class names on this Node.
@@ -920,10 +924,7 @@ class DOMNode(MessagePump):
self._classes.symmetric_difference_update(class_names)
if old_classes == self._classes:
return
try:
self.app.update_styles(self)
except NoActiveAppError:
pass
self._update_styles()
def has_pseudo_class(self, *class_names: str) -> bool:
"""Check for pseudo class (such as hover, focus etc)"""