mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
fix for table clicks
This commit is contained in:
@@ -519,9 +519,10 @@ class Compositor:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
contains = Region.contains
|
contains = Region.contains
|
||||||
for widget, cropped_region, region in self.layers_visible[y]:
|
if len(self.layers_visible) > y >= 0:
|
||||||
if contains(cropped_region, x, y) and widget.visible:
|
for widget, cropped_region, region in self.layers_visible[y]:
|
||||||
return widget, region
|
if contains(cropped_region, x, y) and widget.visible:
|
||||||
|
return widget, region
|
||||||
raise errors.NoWidget(f"No widget under screen coordinate ({x}, {y})")
|
raise errors.NoWidget(f"No widget under screen coordinate ({x}, {y})")
|
||||||
|
|
||||||
def get_widgets_at(self, x: int, y: int) -> Iterable[tuple[Widget, Region]]:
|
def get_widgets_at(self, x: int, y: int) -> Iterable[tuple[Widget, Region]]:
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class ScrollView(Widget):
|
|||||||
self._size = size
|
self._size = size
|
||||||
virtual_size = self.virtual_size
|
virtual_size = self.virtual_size
|
||||||
self._scroll_update(virtual_size)
|
self._scroll_update(virtual_size)
|
||||||
self._container_size = size - self.gutter.totals
|
self._container_size = size
|
||||||
self.scroll_to(self.scroll_x, self.scroll_y, animate=False)
|
self.scroll_to(self.scroll_x, self.scroll_y, animate=False)
|
||||||
self.refresh()
|
self.refresh()
|
||||||
|
|
||||||
|
|||||||
@@ -1680,21 +1680,22 @@ class Widget(DOMNode):
|
|||||||
return lines
|
return lines
|
||||||
|
|
||||||
def get_style_at(self, x: int, y: int) -> Style:
|
def get_style_at(self, x: int, y: int) -> Style:
|
||||||
"""Get the Rich style at a given screen offset.
|
"""Get the Rich style in a widget at a given relative offset.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
x (int): X coordinate relative to the screen.
|
x (int): X coordinate relative to the widget.
|
||||||
y (int): Y coordinate relative to the screen.
|
y (int): Y coordinate relative to the widget.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Style: A rich Style object.
|
Style: A rich Style object.
|
||||||
"""
|
"""
|
||||||
widget, region = self.screen.get_widget_at(x, y)
|
offset = Offset(x, y)
|
||||||
|
screen_offset = offset + self.region.offset
|
||||||
|
|
||||||
|
widget, _ = self.screen.get_widget_at(*screen_offset)
|
||||||
if widget is not self:
|
if widget is not self:
|
||||||
return Style()
|
return Style()
|
||||||
offset_x, offset_y = region.offset
|
return self.screen.get_style_at(*screen_offset)
|
||||||
# offset_x, offset_y = self.screen.get_offset(self)
|
|
||||||
return self.screen.get_style_at(x + offset_x, y + offset_y)
|
|
||||||
|
|
||||||
async def _forward_event(self, event: events.Event) -> None:
|
async def _forward_event(self, event: events.Event) -> None:
|
||||||
event._set_forwarded()
|
event._set_forwarded()
|
||||||
|
|||||||
Reference in New Issue
Block a user