From 7fa19ed473329211235310cbc8ed6e57067d517a Mon Sep 17 00:00:00 2001 From: deanlee Date: Sat, 22 Nov 2025 17:43:30 +0800 Subject: [PATCH] avoid unnecessary text cache invalidation in UnifiedLabel --- system/ui/widgets/label.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/system/ui/widgets/label.py b/system/ui/widgets/label.py index 35e2708e629e62..1ea2730f6472b9 100644 --- a/system/ui/widgets/label.py +++ b/system/ui/widgets/label.py @@ -446,7 +446,7 @@ def __init__(self, def set_text(self, text: str | Callable[[], str]): """Update the text content.""" self._text = text - self._cached_text = None # Invalidate cache + # No need to update cache here, will be done on next render if needed @property def text(self) -> str: @@ -463,15 +463,17 @@ def set_color(self, color: rl.Color): def set_font_size(self, size: int): """Update the font size.""" - self._font_size = size - self._spacing_pixels = size * self._letter_spacing # Recalculate spacing - self._cached_text = None # Invalidate cache + if self._font_size != size: + self._font_size = size + self._spacing_pixels = size * self._letter_spacing # Recalculate spacing + self._cached_text = None # Invalidate cache def set_letter_spacing(self, letter_spacing: float): """Update letter spacing (as percentage, e.g., 0.1 = 10%).""" - self._letter_spacing = letter_spacing - self._spacing_pixels = self._font_size * letter_spacing - self._cached_text = None # Invalidate cache + if self._letter_spacing != letter_spacing: + self._letter_spacing = letter_spacing + self._spacing_pixels = self._font_size * letter_spacing + self._cached_text = None # Invalidate cache def set_font_weight(self, font_weight: FontWeight): """Update the font weight."""