diff --git a/src/plugins/terminal/terminalwidget.cpp b/src/plugins/terminal/terminalwidget.cpp index a7b3590a599..65c19576cff 100644 --- a/src/plugins/terminal/terminalwidget.cpp +++ b/src/plugins/terminal/terminalwidget.cpp @@ -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(QSize{80, 60}, m_shellIntegration.get()); - m_search = std::make_unique(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] { diff --git a/src/plugins/terminal/terminalwidget.h b/src/plugins/terminal/terminalwidget.h index 215d8c6d58e..8498f35f83b 100644 --- a/src/plugins/terminal/terminalwidget.h +++ b/src/plugins/terminal/terminalwidget.h @@ -217,7 +217,8 @@ private: Utils::FilePath m_cwd; Utils::CommandLine m_currentCommand; - std::unique_ptr m_search; + using TerminalSearchPtr = std::unique_ptr>; + TerminalSearchPtr m_search; Aggregation::Aggregate *m_aggregate{nullptr}; SearchHit m_lastSelectedHit{};