mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
keep reference to remove task
This commit is contained in:
@@ -2128,11 +2128,11 @@ class App(Generic[ReturnType], DOMNode):
|
||||
removed_widgets = self._detach_from_dom(widgets)
|
||||
|
||||
finished_event = asyncio.Event()
|
||||
create_task(
|
||||
remove_task = create_task(
|
||||
prune_widgets_task(removed_widgets, finished_event), name="prune nodes"
|
||||
)
|
||||
|
||||
await_remove = AwaitRemove(finished_event)
|
||||
await_remove = AwaitRemove(finished_event, remove_task)
|
||||
self.call_next(await_remove)
|
||||
return await_remove
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
"""Provides the type of an awaitable remove."""
|
||||
|
||||
from asyncio import Event
|
||||
from asyncio import Event, Task
|
||||
from typing import Generator
|
||||
|
||||
|
||||
class AwaitRemove:
|
||||
"""An awaitable returned by App.remove and DOMQuery.remove."""
|
||||
|
||||
def __init__(self, finished_flag: Event) -> None:
|
||||
def __init__(self, finished_flag: Event, task: Task) -> None:
|
||||
"""Initialise the instance of ``AwaitRemove``.
|
||||
|
||||
Args:
|
||||
finished_flag: The asyncio event to wait on.
|
||||
"""
|
||||
self.finished_flag = finished_flag
|
||||
self._task = task
|
||||
|
||||
async def __call__(self) -> None:
|
||||
return await self
|
||||
|
||||
@@ -170,7 +170,7 @@ async def test_remove():
|
||||
|
||||
class RemoveApp(App):
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Container(RemoveMeLabel(), RemoveMeLabel())
|
||||
yield Container(RemoveMeLabel())
|
||||
|
||||
async def action_remove_all(self) -> None:
|
||||
await self.query_one(Container).clear()
|
||||
|
||||
Reference in New Issue
Block a user