forked from qt-creator/qt-creator
Terminal: Fix crash when reusing TerminalWidget
Change-Id: I9d30df1abbecabd3909078e0a609fe5ba96769ae Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -131,7 +131,6 @@ TerminalWidget::~TerminalWidget()
|
||||
// The Aggregate stuff tries to do clever deletion of the children, but we
|
||||
// we don't want that.
|
||||
m_aggregate->remove(this);
|
||||
m_aggregate->remove(m_search.get());
|
||||
}
|
||||
|
||||
void TerminalWidget::setupPty()
|
||||
@@ -279,7 +278,10 @@ void TerminalWidget::setupSurface()
|
||||
{
|
||||
m_shellIntegration.reset(new ShellIntegration());
|
||||
m_surface = std::make_unique<Internal::TerminalSurface>(QSize{80, 60}, m_shellIntegration.get());
|
||||
m_search = std::make_unique<TerminalSearch>(m_surface.get());
|
||||
m_search = TerminalSearchPtr(new TerminalSearch(m_surface.get()), [this](TerminalSearch *p) {
|
||||
m_aggregate->remove(p);
|
||||
delete p;
|
||||
});
|
||||
|
||||
connect(m_search.get(), &TerminalSearch::hitsChanged, this, &TerminalWidget::updateViewport);
|
||||
connect(m_search.get(), &TerminalSearch::currentHitChanged, this, [this] {
|
||||
|
@@ -217,7 +217,8 @@ private:
|
||||
Utils::FilePath m_cwd;
|
||||
Utils::CommandLine m_currentCommand;
|
||||
|
||||
std::unique_ptr<TerminalSearch> m_search;
|
||||
using TerminalSearchPtr = std::unique_ptr<TerminalSearch, std::function<void(TerminalSearch *)>>;
|
||||
TerminalSearchPtr m_search;
|
||||
|
||||
Aggregation::Aggregate *m_aggregate{nullptr};
|
||||
SearchHit m_lastSelectedHit{};
|
||||
|
Reference in New Issue
Block a user