Fix crash when closing a tab using the close button

Looking at the crash backtraces from the bug reports, it seems this is what
happens, when you have two tabs open, then click the close button on the
non-current tab:
  - QTabBar::currentChanged() is emitted, the TerminalDisplay pointer is
    still not null at this point (the code checks for that)
  - TabbedViewContainer::currentTabChanged()
  - TabbedViewContainer::activeViewChanged()
  - ViewManager::activateView(), at this point the TerminalDisplay pointer
    could be null, which then crashes when we call Widget::setFocus()

BUG: 411962
FIXED-IN: 21.12
This commit is contained in:
Ahmad Samir
2021-08-02 23:07:41 +02:00
committed by Tomaz Canabrava
parent b0c23b49fd
commit 39d3437df9

View File

@@ -556,12 +556,12 @@ void ViewManager::focusAnotherTerminal(ViewSplitter *toplevelSplitter)
void ViewManager::activateView(TerminalDisplay *view)
{
Q_ASSERT(view != nullptr);
// focus the activated view, this will cause the SessionController
// to notify the world that the view has been focused and the appropriate UI
// actions will be plugged in.
view->setFocus(Qt::OtherFocusReason);
if (view) {
// focus the activated view, this will cause the SessionController
// to notify the world that the view has been focused and the appropriate UI
// actions will be plugged in.
view->setFocus(Qt::OtherFocusReason);
}
}
void ViewManager::splitLeftRight()