Skip to content

Commit 11036e4

Browse files
committedMay 17, 2017
Always select the best result by default, even if good results are
slow to fetch
1 parent 56c8baa commit 11036e4

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed
 

‎src/gui/locator/qgslocatorwidget.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,15 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
145145
case Qt::Key_PageUp:
146146
case Qt::Key_PageDown:
147147
showList();
148+
mHasSelectedResult = true;
148149
QgsApplication::sendEvent( mResultsView, event );
149150
return true;
150151
case Qt::Key_Home:
151152
case Qt::Key_End:
152153
if ( keyEvent->modifiers() & Qt::ControlModifier )
153154
{
154155
showList();
156+
mHasSelectedResult = true;
155157
QgsApplication::sendEvent( mResultsView, event );
156158
return true;
157159
}
@@ -164,15 +166,21 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
164166
mResultsContainer->hide();
165167
return true;
166168
case Qt::Key_Tab:
169+
mHasSelectedResult = true;
167170
mResultsView->selectNextResult();
168171
return true;
169172
case Qt::Key_Backtab:
173+
mHasSelectedResult = true;
170174
mResultsView->selectPreviousResult();
171175
return true;
172176
default:
173177
break;
174178
}
175179
}
180+
else if ( obj == mResultsView && event->type() == QEvent::MouseButtonPress )
181+
{
182+
mHasSelectedResult = true;
183+
}
176184
else if ( event->type() == QEvent::FocusOut && ( obj == mLineEdit || obj == mResultsContainer || obj == mResultsView ) )
177185
{
178186
if ( !mLineEdit->hasFocus() && !mResultsContainer->hasFocus() && !mResultsView->hasFocus() )
@@ -193,7 +201,7 @@ bool QgsLocatorWidget::eventFilter( QObject *obj, QEvent *event )
193201

194202
void QgsLocatorWidget::addResult( const QgsLocatorResult &result )
195203
{
196-
bool selectFirst = mProxyModel->rowCount() == 0;
204+
bool selectFirst = !mHasSelectedResult || mProxyModel->rowCount() == 0;
197205
mLocatorModel->addResult( result );
198206
if ( selectFirst )
199207
mResultsView->setCurrentIndex( mProxyModel->index( 1, 0 ) );
@@ -213,6 +221,7 @@ void QgsLocatorWidget::updateResults( const QString &text )
213221
}
214222
else
215223
{
224+
mHasSelectedResult = false;
216225
mLocatorModel->clear();
217226
if ( !text.isEmpty() )
218227
{

‎src/gui/locator/qgslocatorwidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class GUI_EXPORT QgsLocatorWidget : public QWidget
9898

9999
QString mNextRequestedString;
100100
bool mHasQueuedRequest = false;
101+
bool mHasSelectedResult = false;
101102
QTimer mPopupTimer;
102103

103104
void updateResults( const QString &text );

0 commit comments

Comments
 (0)
Please sign in to comment.