Fix: unbind events when destroying a widget