Fix segfaults in OutputWidget
Summary:
This patch fixes regressions provided by D14931.
Steps to reproduce (my system is neon/bionic with Qt 5.11.1 and KDevelop/master):
- Start KDevelop and load some project
- Start project build
- Close KDevelop
- Segfault happens
Main problems:
- Incorrect signal processing. OutputWidget::updateFilter() slot is called from parent's destructor when m_tabwidget/m_stackwidget is deleted so we have destroyed m_views hash and segfault as a result.
- Incorrect QSharedPointer usage. All handled objects have QWidget as a parent so we have double-free problem and and segfault as a result.
BUG: 398615
Test Plan: Tested on different output widgets (KDevelop::IOutputView::OneView/HistoryView/MultipleView) with no segfaults. All our QTreeView/QSortFilterProxyModel objects are deleted (no memory leaks).
Reviewers: KDevelop, kossebau
Reviewed By: KDevelop, kossebau
Subscribers: kfunk, kossebau, vkorneev, kdevelop-devel
Tags: KDevelop
Differential Revision: https://phabricator.kde.org/D15326