[ermine] Fix Ask query when navigating auto complete suggestions.
Previously navigating the auto complete suggestions would end
up re-issuing the query with the selected suggestion. This would
present a new auto-complete list. This broke users navigation
of the auto-complete list.
Change-Id: I5ce6b6e01bc8557f43655788b311ad2a5c0dcc60
diff --git a/shell/ermine/lib/src/modules/ask_model.dart b/shell/ermine/lib/src/modules/ask_model.dart
index d8e2fc9..00ad448 100644
--- a/shell/ermine/lib/src/modules/ask_model.dart
+++ b/shell/ermine/lib/src/modules/ask_model.dart
@@ -47,6 +47,7 @@
double elevation = 200.0;
_AskImpl _ask;
+ String _currentQuery;
final _askBinding = AskBarBinding();
final _suggestionProvider = SuggestionProviderProxy();
@@ -153,15 +154,22 @@
return;
}
selection.value = newSelection.clamp(0, suggestions.value.length - 1);
- controller
- ..text = suggestions.value[selection.value].display.details
- ..selection = TextSelection.fromPosition(TextPosition(
- offset: controller.text.length,
- ));
+ controller.value = controller.value.copyWith(
+ text: suggestions.value[selection.value].display.details,
+ selection: TextSelection(
+ baseOffset: 0,
+ extentOffset:
+ suggestions.value[selection.value].display.details.length,
+ ),
+ );
}
}
void onQuery(String query) {
+ if (query == _currentQuery || !controller.selection.isCollapsed) {
+ return;
+ }
+ _currentQuery = query;
_suggestions = <Suggestion>[];
final queryListenerBinding = QueryListenerBinding();