From cc38ee54e5ff1ac09d483202bf861c8c72865cd1 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Fri, 6 Jun 2025 20:55:05 +0100 Subject: [PATCH 1/2] add speedups --- src/textual/_compositor.py | 2 +- src/textual/geometry.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/textual/_compositor.py b/src/textual/_compositor.py index 76103ec47c..245abf6ccb 100644 --- a/src/textual/_compositor.py +++ b/src/textual/_compositor.py @@ -419,7 +419,7 @@ def reflow(self, parent: Widget, size: Size) -> ReflowResult: resized_widgets = { widget for widget, (region, *_) in changes - if (widget in common_widgets and old_map[widget].region[2:] != region[2:]) + if (widget in common_widgets and old_map[widget].region.size != region.size) } return ReflowResult( hidden=hidden_widgets, diff --git a/src/textual/geometry.py b/src/textual/geometry.py index 9847052fa8..3a7ab64d3c 100644 --- a/src/textual/geometry.py +++ b/src/textual/geometry.py @@ -5,6 +5,7 @@ from __future__ import annotations +import os from functools import lru_cache from operator import attrgetter, itemgetter from typing import ( @@ -1315,6 +1316,13 @@ def grow_maximum(self, other: Spacing) -> Spacing: ) +if not TYPE_CHECKING and os.environ.get("TEXTUAL_SPEEDUPS") == "1": + try: + from textual_speedups import Offset, Region, Size, Spacing + except ImportError: + pass + + NULL_OFFSET: Final = Offset(0, 0) """An [offset][textual.geometry.Offset] constant for (0, 0).""" From a0b76782ec7647d6768fdca38af726cec01c042b Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Fri, 6 Jun 2025 21:23:05 +0100 Subject: [PATCH 2/2] CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dad5c87e6f..1205be91da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## Unreleased + +### Added + +- Added experimental opt-in support for https://github.com/willmcgugan/textual-speedups + ## [3.3.0] - 2025-06-01 ### Fixed