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
|
// The Aggregate stuff tries to do clever deletion of the children, but we
|
||||||
// we don't want that.
|
// we don't want that.
|
||||||
m_aggregate->remove(this);
|
m_aggregate->remove(this);
|
||||||
m_aggregate->remove(m_search.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerminalWidget::setupPty()
|
void TerminalWidget::setupPty()
|
||||||
@@ -279,7 +278,10 @@ void TerminalWidget::setupSurface()
|
|||||||
{
|
{
|
||||||
m_shellIntegration.reset(new ShellIntegration());
|
m_shellIntegration.reset(new ShellIntegration());
|
||||||
m_surface = std::make_unique<Internal::TerminalSurface>(QSize{80, 60}, m_shellIntegration.get());
|
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::hitsChanged, this, &TerminalWidget::updateViewport);
|
||||||
connect(m_search.get(), &TerminalSearch::currentHitChanged, this, [this] {
|
connect(m_search.get(), &TerminalSearch::currentHitChanged, this, [this] {
|
||||||
|
@@ -217,7 +217,8 @@ private:
|
|||||||
Utils::FilePath m_cwd;
|
Utils::FilePath m_cwd;
|
||||||
Utils::CommandLine m_currentCommand;
|
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};
|
Aggregation::Aggregate *m_aggregate{nullptr};
|
||||||
SearchHit m_lastSelectedHit{};
|
SearchHit m_lastSelectedHit{};
|
||||||
|
Reference in New Issue
Block a user