# HG changeset patch # User Goffi # Date 1583097085 -3600 # Node ID edb240ff7936aeb00b181bd247c2e02c8e9a3818 # Parent cebf657d78ef91c469ba693639b02e82ed045915 core (menu): avoid crash when removing SideMenu from parent if it has already been removed diff -r cebf657d78ef -r edb240ff7936 cagou/core/menu.py --- a/cagou/core/menu.py Sun Mar 01 22:11:25 2020 +0100 +++ b/cagou/core/menu.py Sun Mar 01 22:11:25 2020 +0100 @@ -128,12 +128,18 @@ self._set_anim_kw(kw, self.size_hint_open, self.size_open) Animation(**kw).start(self) + def _removeFromParent(self, anim, menu): + # self.parent can already be None if the widget has been removed by a callback + # before the animation started. + if self.parent is not None: + self.parent.remove_widget(self) + def hide(self): Window.unbind(on_keyboard=self.key_input) kw = {'d': 0.2} self._set_anim_kw(kw, self.size_hint_close, self.size_close) anim = Animation(**kw) - anim.bind(on_complete=lambda anim, menu: self.parent.remove_widget(self)) + anim.bind(on_complete=self._removeFromParent) anim.start(self) if self.callback_on_close: self.do_callback()