From f72fb5d11f1bff435f312aba4ead98e260353245 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Thu, 6 Jun 2024 20:03:39 +0100 Subject: [PATCH] zero height renderables --- CHANGELOG.md | 6 ++++++ examples/code_browser.tcss | 1 + src/textual/timer.py | 5 ++++- src/textual/widget.py | 16 ++++++++++------ src/textual/widgets/_label.py | 1 + 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c13a55092..69b735121 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +- `get_content_height` will now return 0 if the renderable is Falsey + ## [0.65.2] - 2023-06-06 ### Fixed diff --git a/examples/code_browser.tcss b/examples/code_browser.tcss index 21fc7cad0..a97a35fe9 100644 --- a/examples/code_browser.tcss +++ b/examples/code_browser.tcss @@ -23,6 +23,7 @@ CodeBrowser.-show-tree #tree-view { #code-view { overflow: auto scroll; min-width: 100%; + hatch: right $primary; } #code { width: auto; diff --git a/src/textual/timer.py b/src/textual/timer.py index 6cc664369..1cc8dcbda 100644 --- a/src/textual/timer.py +++ b/src/textual/timer.py @@ -118,7 +118,10 @@ class Timer: if timer._task is not None: timer._active.set() timer._task.cancel() - await timer._task + try: + await timer._task + except CancelledError: + pass await gather(*[stop_timer(timer) for timer in list(timers)]) diff --git a/src/textual/widget.py b/src/textual/widget.py index f71222857..fa50805fb 100644 --- a/src/textual/widget.py +++ b/src/textual/widget.py @@ -1345,13 +1345,17 @@ class Widget(DOMNode): renderable = self.render() if isinstance(renderable, Text): - height = len( - renderable.wrap( - self._console, - width, - no_wrap=renderable.no_wrap, - tab_size=renderable.tab_size or 8, + height = ( + len( + renderable.wrap( + self._console, + width, + no_wrap=renderable.no_wrap, + tab_size=renderable.tab_size or 8, + ) ) + if renderable + else 0 ) else: options = self._console.options.update_width(width).update( diff --git a/src/textual/widgets/_label.py b/src/textual/widgets/_label.py index d890d333b..50ef2d28a 100644 --- a/src/textual/widgets/_label.py +++ b/src/textual/widgets/_label.py @@ -10,5 +10,6 @@ class Label(Static): Label { width: auto; height: auto; + min-height: 1; } """