Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ These changes are available on the `master` branch, but have not yet been releas
([#3320](https://github.com/Pycord-Development/pycord/pull/3320))
- Fix `SyntaxWarning` about `return` in a `finally` block raised on Python 3.14+
([#3332](https://github.com/Pycord-Development/pycord/pull/3334))
- Fix an issue where stopped views would not be cleaned up.
([#3360](https://github.com/Pycord-Development/pycord/pull/3360))

### Deprecated

Expand Down
11 changes: 6 additions & 5 deletions discord/ui/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,8 @@
from ..components import TextDisplay as TextDisplayComponent
from ..components import Thumbnail as ThumbnailComponent
from ..components import _component_factory
from ..enums import ChannelType, SeparatorSpacingSize
from ..enums import ChannelType
from ..errors import Forbidden, NotFound
from ..utils import find
from .core import ItemInterface
from .item import Item, ItemCallbackType, ModalItem, ViewItem

Expand Down Expand Up @@ -1002,9 +1001,11 @@ def add_view(self, view: BaseView, message_id: int | None = None):
self._synced_message_views[message_id] = view

def remove_view(self, view: BaseView):
for item in view.walk_children():
if item.is_storable():
self._views.pop((item.type.value, item.custom_id), None) # type: ignore
keys_to_remove = [
key for key, (stored_view, _) in self._views.items() if stored_view is view
]
for key in keys_to_remove:
del self._views[key]

for key, value in self._synced_message_views.items():
if value.id == view.id:
Expand Down