CodeAssist: use shared pointer to pass around proposal models

Task-number: QTCREATORBUG-17752
Change-Id: Ia41f169b86ead209830e6f15764062389ced2b67
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2018-02-14 14:32:51 +01:00
parent 4598a78980
commit a4b5fc00a8
34 changed files with 112 additions and 134 deletions

View File

@@ -62,16 +62,16 @@ class ModelAdapter : public QAbstractListModel
Q_OBJECT
public:
ModelAdapter(GenericProposalModel *completionModel, QWidget *parent);
ModelAdapter(GenericProposalModelPtr completionModel, QWidget *parent);
virtual int rowCount(const QModelIndex &) const;
virtual QVariant data(const QModelIndex &index, int role) const;
private:
GenericProposalModel *m_completionModel;
GenericProposalModelPtr m_completionModel;
};
ModelAdapter::ModelAdapter(GenericProposalModel *completionModel, QWidget *parent)
ModelAdapter::ModelAdapter(GenericProposalModelPtr completionModel, QWidget *parent)
: QAbstractListModel(parent)
, m_completionModel(completionModel)
{}
@@ -208,7 +208,7 @@ public:
const QWidget *m_underlyingWidget = nullptr;
GenericProposalListView *m_completionListView;
GenericProposalModel *m_model = nullptr;
GenericProposalModelPtr m_model;
QRect m_displayRect;
bool m_isSynchronized = true;
bool m_explicitlySelected = false;
@@ -309,7 +309,6 @@ GenericProposalWidget::GenericProposalWidget()
GenericProposalWidget::~GenericProposalWidget()
{
delete d->m_model;
delete d;
}
@@ -336,10 +335,9 @@ void GenericProposalWidget::setUnderlyingWidget(const QWidget *underlyingWidget)
d->m_underlyingWidget = underlyingWidget;
}
void GenericProposalWidget::setModel(IAssistProposalModel *model)
void GenericProposalWidget::setModel(ProposalModelPtr model)
{
delete d->m_model;
d->m_model = static_cast<GenericProposalModel *>(model);
d->m_model = model.staticCast<GenericProposalModel>();
d->m_completionListView->setModel(new ModelAdapter(d->m_model, d->m_completionListView));
connect(d->m_completionListView->selectionModel(), &QItemSelectionModel::currentChanged,
@@ -611,7 +609,7 @@ bool GenericProposalWidget::activateCurrentProposalItem()
return false;
}
GenericProposalModel *GenericProposalWidget::model()
GenericProposalModelPtr GenericProposalWidget::model()
{
return d->m_model;
}