Removed unnecessary CharSequenceIterator and made the WordIterator
work on String instead of CharSequence
Submit words to the spell checker by batches.
Refactored WordIterator to make it intrinsically local.
Change-Id: Ie9e30691985a130fa55cd052005ddb22a21761cb
- make DynamicLayout honor max lines
- make StaticLayout.generate() take maxLines as a parameter instead of using the field mMaximumVisibleLineCount
Change-Id: I9eafb1be4b8bb2aa881514955a6903f559cb6a1e
Profiling showed that the bottle neck was in the word iterator.
Now initializing the word iteerator to only a window around the region
of interest to reduce the text analysis.
Change-Id: Ibfa4952cbf52a1b36726f965143ac7a6dc63673e
Removed the Runnable in SpellChecker, spell check is triggered at the end
of updateSpellCheckSpans instead of when a new SpellCheckSpan is created.
Cache the spans in updateSpellCheckSpans to limit the calls to getSpans.
When typing, every new letter in a word will create a SpellCheckSpan
(this is needed in case the user taps somewhere else on the screen)
The SpellCheckSpans are pooled in SpellChecker to limit unnecessary new
SpellCheckSpan creation.
Minor optimization on test order in getSpans to avoid some calculation.
Spell check is not started everytime the selection is changed (would be
triggered when the insertion handle is moved). Explicitely do that only
on tap.
Change-Id: Ibacf80dd4ba098494e0b5ba0e58a362782fc8f71
- make the StaticLayout constructor not depending on the text as we just need the "generate()" call to be done
Change-Id: I65249e65ed6446b6ac13dbf8c8f58fcdf54046cb
getSpans was called too many times in handleRun. Pre-compute the
subset of intersected spans and iterate over a subset of it instead.
Moving the instanceof test in getSpans after the other tests also
speeds things up a lot.
On a text with ~300 words, all with a span attached, getSpans went down
from 78% to 14% of the CPU usage.
Change-Id: I59bc44f610e9a548e0dcec68b180934da9e5c559
When several SuggestionSpans are available at a given position, their
content are merged, in creation time order.
As a result, the IME's suggestions are picked before the spell check, and
no add to dictionnary option is created.
This CL modifies the comparator to make easy correction spans appear first
(Voice IME), then misspelled words and then regular suggestions.
Also avoids the creation of a new comparator and length hash map on every display.
Change-Id: I1f9f031a6fdcbbc09f248a192b83051092765f8e
The increased size array was discarded in set. Reuse it instead if
possible to avoid more size increases later.
Change-Id: I9ab95ed0f4d4613dd1e28f02894bb19ecee7df41
Only the easy correction (i.e., voice ime corrections) will lose the underline, while the misspelled span will not.
Change-Id: If96c17473dd70c99b808739ddde800cc93551e2a
Text selection mode was started by two consecutive taps inside a
field with selectAllOnFocus.
ArrowKeyMovementMethod does not respect the possible cancelLongPress and handles up events.
As a result a scroll that happens to end up at its initial position will be considered a tap
and will move the cursor.
This is however not considered as a tap in TextView and a possible selection mode would not
be stopped in that case.
Fixed by making ArrowKeyMovementMethod aware of the cancel that happened in Touch.
Change-Id: I07372b703f250e1edc7ee0665318ce30441b9187
New background assets from Bug 5204807.
New text selection color and associated handles, bug 5217848.
Change-Id: I4eaea6be732843d8ff344400d029b4a1b80b084f
At the moment, EditTextShortcutSpan allows only the deletion of the text. In the future, we may decide to add extra functionality,
like "retry" where all the text is removed and a specific IME is triggered.
Fix the underline. The underline is not defined in thickness, and not as a multiplier of the default underline thickness.
Change the behaviour of SuggestionRangeSpan to match the specification.
Change-Id: I80437d9887c7a2ff8f62c38afbb0cb7add7ee9c8
- make the ellipsizing condition easier to read
- allow ellipsizing only and only if
- not MARQUEE
- single line
- END only on the last visible line when multiple lines
Change-Id: I6b08e4a735ebc4875a208f0538d9cf937240316e
- force TextView to LOCALE text heuristic when in "password" mode
- remove TEXT_LAYOUT_DIRECTION_UNKNOWN_DO_NOT_USE
- LocaleUtils.getLayoutDirectionFromLocale() returns "LTR" is locale is NULL or ROOT
Change-Id: I182c46aaf2d73c8b18967fffa230bfabec91ed06
But now the tap is not handled at all, as it was before. To do this, the popup window
is now focusable. As a result, the TextView's window loses focus. We hide the
cursor to prevent a non-blinking visible cursor. We should also fake the
state of the parent TextView to keep it visually focussed.
SuggestionRangeSpan and SpellCheckSpan had to made Parcelable since they are recreatedi
when the TextView is re-created when the popup is dismissed.
Change-Id: Ic99b2c4f02c282394f214938dd19168547af4886
New UX interactions (the Paste action is no longer displayed after a delay)
suggestionEnabled flag replaced by existing input type flag.
removeSpans fixed in SpannableStringBuilder to always send notifications
SuggestionSpan handled by TextView instead of SpannableStringBuilder
New span update algorithm to correctly handle edition around word boundaries.
Change-Id: I52c01172f19e595fa512e285a565a3fd97c3c50e