@@ -145,13 +145,15 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
145
145
case Qt::Key_PageUp:
146
146
case Qt::Key_PageDown:
147
147
showList ();
148
+ mHasSelectedResult = true ;
148
149
QgsApplication::sendEvent ( mResultsView , event );
149
150
return true ;
150
151
case Qt::Key_Home:
151
152
case Qt::Key_End:
152
153
if ( keyEvent->modifiers () & Qt::ControlModifier )
153
154
{
154
155
showList ();
156
+ mHasSelectedResult = true ;
155
157
QgsApplication::sendEvent ( mResultsView , event );
156
158
return true ;
157
159
}
@@ -164,15 +166,21 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
164
166
mResultsContainer ->hide ();
165
167
return true ;
166
168
case Qt::Key_Tab:
169
+ mHasSelectedResult = true ;
167
170
mResultsView ->selectNextResult ();
168
171
return true ;
169
172
case Qt::Key_Backtab:
173
+ mHasSelectedResult = true ;
170
174
mResultsView ->selectPreviousResult ();
171
175
return true ;
172
176
default :
173
177
break ;
174
178
}
175
179
}
180
+ else if ( obj == mResultsView && event->type () == QEvent::MouseButtonPress )
181
+ {
182
+ mHasSelectedResult = true ;
183
+ }
176
184
else if ( event->type () == QEvent::FocusOut && ( obj == mLineEdit || obj == mResultsContainer || obj == mResultsView ) )
177
185
{
178
186
if ( !mLineEdit ->hasFocus () && !mResultsContainer ->hasFocus () && !mResultsView ->hasFocus () )
@@ -193,7 +201,7 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
193
201
194
202
void QgsLocatorWidget::addResult ( const QgsLocatorResult &result )
195
203
{
196
- bool selectFirst = mProxyModel ->rowCount () == 0 ;
204
+ bool selectFirst = ! mHasSelectedResult || mProxyModel ->rowCount () == 0 ;
197
205
mLocatorModel ->addResult ( result );
198
206
if ( selectFirst )
199
207
mResultsView ->setCurrentIndex ( mProxyModel ->index ( 1 , 0 ) );
@@ -213,6 +221,7 @@ void QgsLocatorWidget::updateResults( const QString &text )
213
221
}
214
222
else
215
223
{
224
+ mHasSelectedResult = false ;
216
225
mLocatorModel ->clear ();
217
226
if ( !text.isEmpty () )
218
227
{
0 commit comments