mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Fix placeholder color cycling.
This commit is contained in:
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Changed
|
||||
|
||||
- `Placeholder` now sets its color cycle per app https://github.com/Textualize/textual/issues/2590
|
||||
|
||||
## [0.25.0] - 2023-05-17
|
||||
|
||||
|
||||
@@ -3,10 +3,14 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from itertools import cycle
|
||||
from typing import Iterator
|
||||
from weakref import WeakKeyDictionary
|
||||
|
||||
from rich.console import RenderableType
|
||||
from typing_extensions import Literal, Self
|
||||
|
||||
from textual.app import App
|
||||
|
||||
from .. import events
|
||||
from ..css._error_tools import friendly_list
|
||||
from ..reactive import Reactive, reactive
|
||||
@@ -72,18 +76,13 @@ class Placeholder(Widget):
|
||||
"""
|
||||
|
||||
# Consecutive placeholders get assigned consecutive colors.
|
||||
_COLORS = cycle(_PLACEHOLDER_BACKGROUND_COLORS)
|
||||
_COLORS: WeakKeyDictionary[App, Iterator[str]] = WeakKeyDictionary()
|
||||
_SIZE_RENDER_TEMPLATE = "[b]{} x {}[/b]"
|
||||
|
||||
variant: Reactive[PlaceholderVariant] = reactive[PlaceholderVariant]("default")
|
||||
|
||||
_renderables: dict[PlaceholderVariant, str]
|
||||
|
||||
@classmethod
|
||||
def reset_color_cycle(cls) -> None:
|
||||
"""Reset the placeholder background color cycle."""
|
||||
cls._COLORS = cycle(_PLACEHOLDER_BACKGROUND_COLORS)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
label: str | None = None,
|
||||
@@ -113,8 +112,6 @@ class Placeholder(Widget):
|
||||
|
||||
super().__init__(name=name, id=id, classes=classes)
|
||||
|
||||
self.styles.background = f"{next(Placeholder._COLORS)} 50%"
|
||||
|
||||
self.variant = self.validate_variant(variant)
|
||||
"""The current variant of the placeholder."""
|
||||
|
||||
@@ -123,6 +120,13 @@ class Placeholder(Widget):
|
||||
while next(self._variants_cycle) != self.variant:
|
||||
pass
|
||||
|
||||
def on_mount(self) -> None:
|
||||
"""Set the color for this placeholder."""
|
||||
colors = Placeholder._COLORS.setdefault(
|
||||
self.app, cycle(_PLACEHOLDER_BACKGROUND_COLORS)
|
||||
)
|
||||
self.styles.background = f"{next(colors)} 50%"
|
||||
|
||||
def render(self) -> RenderableType:
|
||||
"""Render the placeholder.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user