def union(self, other, union):
"""Combine this area along with another into union"""
if self.empty():
- self.copy_into(union)
+ other.copy_into(union)
return
if other.empty():
- other.copy_into(union)
+ self.copy_into(union)
return
union.x1 = min(self.x1, other.x1)
def radius(self, value: int) -> None:
if value < 1:
raise ValueError("radius must be >= 1")
- self._radius = abs(value)
+ self._radius = int(value) # other code assumes radius is an integer
self._shape_set_dirty()
@property
self._get_screen_area(current_area)
moved = current_area != self._current_area
if moved:
+ # This will add _current_area (the old position) to dirty area
self._current_area.union(
self._ephemeral_dirty_area, self._ephemeral_dirty_area
)
+ # This will add the new position to the dirty area
+ current_area.union(
+ self._ephemeral_dirty_area, self._ephemeral_dirty_area
+ )
# Dirty area tracks the shape's footprint between draws. It's reset on refresh finish.
current_area.copy_into(self._current_area)
self._current_area_dirty = True