diff options
6 files changed, 20 insertions, 13 deletions
diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp index 036ba0dd..ae0e7437 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp @@ -238,7 +238,7 @@ QString QDeclarativeSearchModelBase::errorString() const /*! \internal */ -void QDeclarativeSearchModelBase::clearData() +void QDeclarativeSearchModelBase::clearData(bool suppressSignal) { } diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h index a9da6aa1..34fb8763 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.h @@ -105,7 +105,7 @@ public: Q_INVOKABLE QString errorString() const; - virtual void clearData(); + virtual void clearData(bool suppressSignal = false); virtual void updateSearchRequest(); // From QQmlParserStatus diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp index 71baeb27..7c606038 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel.cpp @@ -566,9 +566,9 @@ int QDeclarativeSearchResultModel::rowCount(const QModelIndex &parent) const return m_results.count(); } -void QDeclarativeSearchResultModel::clearData() +void QDeclarativeSearchResultModel::clearData(bool suppressSignal) { - QDeclarativeSearchModelBase::clearData(); + QDeclarativeSearchModelBase::clearData(suppressSignal); qDeleteAll(m_places); m_places.clear(); @@ -576,7 +576,9 @@ void QDeclarativeSearchResultModel::clearData() m_icons.clear(); if (!m_results.isEmpty()) { m_results.clear(); - emit rowCountChanged(); + + if (!suppressSignal) + emit rowCountChanged(); } } @@ -774,7 +776,7 @@ void QDeclarativeSearchResultModel::updateLayout(const QList<QPlace> &favoritePl int oldRowCount = rowCount(); beginResetModel(); - clearData(); + clearData(true); m_results = m_resultsBuffer; m_resultsBuffer.clear(); diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h index de42c3bc..8313b2af 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchresultmodel_p.h @@ -109,7 +109,7 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const; - virtual void clearData(); + virtual void clearData(bool suppressSignal = false); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; Q_INVOKABLE QVariant data(int index, const QString &roleName) const; QHash<int, QByteArray> roleNames() const; diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp index 88fcd02a..51dd76fa 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp @@ -267,13 +267,15 @@ QStringList QDeclarativeSearchSuggestionModel::suggestions() const /*! \internal */ -void QDeclarativeSearchSuggestionModel::clearData() +void QDeclarativeSearchSuggestionModel::clearData(bool suppressSignal) { - QDeclarativeSearchModelBase::clearData(); + QDeclarativeSearchModelBase::clearData(suppressSignal); if (!m_suggestions.isEmpty()) { m_suggestions.clear(); - emit suggestionsChanged(); + + if (!suppressSignal) + emit suggestionsChanged(); } } @@ -333,13 +335,16 @@ void QDeclarativeSearchSuggestionModel::queryFinished() QPlaceReply *reply = m_reply; m_reply = 0; + int initialCount = m_suggestions.count(); beginResetModel(); - clearData(); + clearData(true); QPlaceSearchSuggestionReply *suggestionReply = qobject_cast<QPlaceSearchSuggestionReply *>(reply); m_suggestions = suggestionReply->suggestions(); - emit suggestionsChanged(); + + if (initialCount != m_suggestions.count()) + emit suggestionsChanged(); endResetModel(); diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h index a974671b..0ff6bcd3 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h +++ b/src/imports/location/declarativeplaces/qdeclarativesearchsuggestionmodel_p.h @@ -67,7 +67,7 @@ public: QStringList suggestions() const; - void clearData(); + void clearData(bool suppressSignal = false); void updateSearchRequest(); // From QAbstractListModel |