From 204f3e48edda63ea214142dc84aada9be4727146 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Sun, 8 Jan 2023 22:32:09 +0000 Subject: [PATCH] optimization --- src/textual/_compositor.py | 5 ++++- src/textual/geometry.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/textual/_compositor.py b/src/textual/_compositor.py index e7d436add..163ce7665 100644 --- a/src/textual/_compositor.py +++ b/src/textual/_compositor.py @@ -276,7 +276,10 @@ class Compositor: resized_widgets = { widget for widget, (region, *_) in changes - if widget in common_widgets and old_map[widget].region.size != region.size + if ( + widget in common_widgets + and not old_map[widget].region.same_size(region) + ) } screen_region = size.region diff --git a/src/textual/geometry.py b/src/textual/geometry.py index 17e938b1d..9990a9cdb 100644 --- a/src/textual/geometry.py +++ b/src/textual/geometry.py @@ -541,6 +541,18 @@ class Region(NamedTuple): width2, height2 = size return Region(x, y, min(width1, width2), min(height1, height2)) + def same_size(self, region: Region) -> bool: + """Check if another region is the same size. Equivalent to `self.size == region.size`, + but a little faster. + + Args: + region (Region): A region. + + Returns: + bool: True if both regions are the same size, False if they are different sizes. + """ + return self[2:] == region[2:] + def expand(self, size: tuple[int, int]) -> Region: """Increase the size of the region by adding a border.