Fix paste and test

This commit is contained in:
Will McGugan
2023-01-31 11:12:47 +01:00
parent 62cede54ef
commit dc02b22d7c
2 changed files with 21 additions and 1 deletions

View File

@@ -1901,9 +1901,11 @@ class App(Generic[ReturnType], DOMNode):
else:
await self.screen._forward_event(event)
elif isinstance(event, events.Paste):
elif isinstance(event, events.Paste) and not event.is_forwarded:
if self.focused is not None:
await self.focused._forward_event(event)
else:
await self.screen._forward_event(event)
else:
await super().on_event(event)

18
tests/test_paste.py Normal file
View File

@@ -0,0 +1,18 @@
from textual.app import App
from textual import events
async def test_paste_app():
paste_events = []
class PasteApp(App):
def on_paste(self, event):
paste_events.append(event)
app = PasteApp()
async with app.run_test() as pilot:
await app.post_message(events.Paste(sender=app, text="Hello"))
await pilot.pause(0)
assert len(paste_events) == 1
assert paste_events[0].text == "Hello"