-
Aurélien Gâteau authored
Move code responsible for 'forgetting' a view outside of code responding to the TerminalDisplay deletion. This avoids a loop like this: ~MainWindow => ~QStackedWidget => ~TerminalDisplay => QObject::destroyed => ViewContainer::viewDestroyed => ViewContainer::removeViewWidget - internal cleanup - try to remove TerminalDisplay from QStackedWidget which is being deleted and crash Instead the code now does: ~MainWindow => ~QStackedWidget => ~TerminalDisplay => QObject::destroyed => ViewContainer::viewDestroyed => ViewContainer::forgetView (does the internal clean up) And if one tries to explicitly remove a view, sequence is: ViewContainer::removeView => ViewContainer::forgetView => ViewContainer::removeViewWidget The patch also removes ViewManager::focusActiveView() because it causes a crash when closing a TerminalDisplay as it tries to put the focus on the deleted TerminalDisplay. I initially called it through a queued connection, but realized it is actually not needed for focus to be passed to the correct view, so just removed it. BUG: 331724 REVIEW: 118839
dd1b2b4d