diff --git a/python/core/auto_generated/locator/qgslocatormodelbridge.sip.in b/python/core/auto_generated/locator/qgslocatormodelbridge.sip.in index 1bf18937647..f133a659484 100644 --- a/python/core/auto_generated/locator/qgslocatormodelbridge.sip.in +++ b/python/core/auto_generated/locator/qgslocatormodelbridge.sip.in @@ -53,6 +53,11 @@ Returns true if some text to be search is pending in the queue bool isRunning() const; %Docstring Returns true if the a search is currently running +%End + + void triggerResult( const QModelIndex &index ); +%Docstring +Triggers the result at given index %End signals: diff --git a/src/core/locator/qgslocatormodelbridge.cpp b/src/core/locator/qgslocatormodelbridge.cpp index 39887e5cc1f..7de14bf527b 100644 --- a/src/core/locator/qgslocatormodelbridge.cpp +++ b/src/core/locator/qgslocatormodelbridge.cpp @@ -37,6 +37,13 @@ bool QgsLocatorModelBridge::isRunning() const return mIsRunning; } +void QgsLocatorModelBridge::triggerResult( const QModelIndex &index ) +{ + mLocator->clearPreviousResults(); + QgsLocatorResult result = mProxyModel->data( index, QgsLocatorModel::ResultDataRole ).value< QgsLocatorResult >(); + result.filter->triggerResult( result ); +} + void QgsLocatorModelBridge::setIsRunning( bool isRunning ) { if ( mIsRunning == isRunning ) diff --git a/src/core/locator/qgslocatormodelbridge.h b/src/core/locator/qgslocatormodelbridge.h index d8b8757a5f8..b28bcfa1817 100644 --- a/src/core/locator/qgslocatormodelbridge.h +++ b/src/core/locator/qgslocatormodelbridge.h @@ -60,6 +60,9 @@ class CORE_EXPORT QgsLocatorModelBridge : public QObject //! Returns true if the a search is currently running bool isRunning() const; + //! Triggers the result at given index + void triggerResult( const QModelIndex &index ); + signals: //! Emitted when a result is added void resultAdded(); diff --git a/src/gui/locator/qgslocatorwidget.cpp b/src/gui/locator/qgslocatorwidget.cpp index 9ed1fcbf2b3..6b4a6f7ce40 100644 --- a/src/gui/locator/qgslocatorwidget.cpp +++ b/src/gui/locator/qgslocatorwidget.cpp @@ -312,11 +312,9 @@ void QgsLocatorWidget::acceptCurrentEntry() if ( !index.isValid() ) return; - QgsLocatorResult result = mModelBridge->proxyModel()->data( index, QgsLocatorModel::ResultDataRole ).value< QgsLocatorResult >(); mResultsContainer->hide(); mLineEdit->clearFocus(); - mModelBridge->locator()->clearPreviousResults(); - result.filter->triggerResult( result ); + mModelBridge->triggerResult( index ); } }