The implementation is not really ready yet, so we want to
disable it for normal builds for now.
This goes together with Ic1edc6ed
Bug: 7987492
Change-Id: Id81f417e200c118f24424943823665f0b8bd6849
It would insert a space when it shouldn't when composing a
word ending in either dash or apostrophe and gesturing right
away.
Bug: 7889078
Change-Id: Ib3e2f6f5e551888cc081b464a641e2deac6f5ef7
ResearchLogger.latinIME_handleSeparator wasn't doing anything really specific to
the separator, so its implementation has been renamed according to its role.
Change-Id: I24e8691c7dc440dd067e96d23e50463683e17cfc
- Normal delete events are recorded
- Includes number of characters deleted for both batch and normal delete
Change-Id: I422da3ddc94fa0ccd6c7586eaacf14c62dd16679
- Fix function calls to happen at more resilient times
- In the case of phantom spaces, ensure that the logStatement goes to the
correct logUnit
Change-Id: Ida8f6eba1e4f33d9f9b4735316e3c6316ed316c0
This change moves dismiss timer of gesture floating preview text from
PreviewPlacerView to KeyboardView.
Bug: 7967461
Change-Id: I0ca5beddc93cb4bc4a405f914d217d37b997402b
It's useless to setAutoCorrection(getTypedWord()). Every time the
contents of the word composer are altered, the auto-correction is
reset, and at use time if it's null then the typed word is used
anyway.
Change-Id: I0870657a1ab3f456f376995b27e70703f7a5d23a
Essentially this does activate auto-correction with a hardware
keyboard, although a lot of things are still left to implement.
No proximity is used yet which means only missing and excessive
letters are considered. Dead keys are not handled. No combiner
is supported. No suggestions are displayed. Resuming suggestions
does not work correctly with a hardware key (because the view
holds a temporary hardware event 'onKeyPreIme' and the event
from the IME won't be handled until this is handled which won't
happen until after the IME said that it did handle the event).
Bug: 5037589
Change-Id: Idcb5c7b26d56717ed772d53c062362807f11cdae
- count how many times a gesture is deleted
- count num chars entered by gesture
- change name of fns to reflect capturing gesture information when setting composing text
Change-Id: I1b8ebf9cfcf304e0efd827c8b8e28a4010199728
When the user edits a word before adding it to the user
dictionary, the keyboard should replace whatever was
committed before with the amended version.
Bug: 7725834
Change-Id: I1a417be6c5a86d6a96bc2c76aca314ad8f1202a9
Eliminate use of slower popup window for rendering the more keys menu and more suggestions menu.
These menus are now drawn directly on the preview placer view.
Change-Id: I40638724a6ffde2be4b5d0341d2a5db7ff7be930
Correctly check the variations to determine if we should
add automatic spaces (in manual picks and gestures) or not.
Bug: 7164981
Change-Id: I19e25af839b4062c217113cd804b1473912f22a5
This test is seriously wrong : although we do have a method that
does exactly the right thing, this looks at a very specific, unrelated
variable state in hope it happens to be set only in the relevant
cases by the play of logic.
I don't think this changes anything concretely, as the assumption
was probably true in the practice ; still, this code is very hard to
read and prone to unexpected breakage.
Change-Id: I77ab576f90762429fcc752df31ed30e1c81871dc
Specifically, reset the KeyboardState to the main Alphabet layout in
LatinIME.onStartInputViewInternal() if a keyboard layout set doesn't get
reloaded in the method.
Please note TextView.setText() calls up resetInput(), then the IME should
reset with it.
bug: 7482086
Note that bug: 6851364 needs to be revisited.
Change-Id: I5d448c10963d3dd952dd13cb587085ec7b014e69
This change also
* Introduces adaptive gesture detecting threshold for time domain in addition to length domain.
* Tunes the parameters for detecting gesture after fast typing.
* Fixes a bug in dismissing gesture floating preview text.
* Cleanup debug messages
Bug: 7218902
Change-Id: Iafccd872c6efe0c3b5ae65fa40b04c80d9f139c7
All this code is done inside the StringUtils or RichInputConnection
classes, where it's more logical. Since the IPC call is entirely
gone now, it's no use having these guards inside Latin IME.
Change-Id: Id324567e7458aed12b6f21d7114be3bd39725f15
A space would be inserted after an open parenthesis if
it's typed after a manual pick.
Bug: 7167687
Change-Id: Ic49d09c34747117ccfbdbb8c66f634d88d4a45b0
We decided to revert this UI decision after negative feedback.
Indeed, if you use to gesture but tap just one word, chances
are it's because you know you do NOT want a dictionary word.
Bug: 6965241
Change-Id: I85fdfab3c1cf1d3c0fd3e95908e01bdf56bccbba
This should have on effect at all on behavior,
except an increase in performance.
Bug: 4967874
Bug: 6950087
Change-Id: Ie2b51efefe84ca767f5dc8e3b80bfef7e1faab3d
This is pretty much as strong as it gets. It should be
impossible to get false positives and nearly impossible to
get true negatives with this new code.
Bug: 6981089
Change-Id: Ia32ab62f89c5943f0be169b979abab652e67bf5b
...if punctuation suggestions are requested.
Fixes the symptom, but not the root cause of
Bug: 6981089
Change-Id: I683a7451c99457829cb4e5a762f43548ff89a535
This change makes Latin IME behave consistently with regards
to other auto-correction cancellations in cases of auto-correction
cancellation after smiley-triggered auto-correction. That is,
pressing the smiley key when the keyboard signals it's about to
auto-correct will get the auto-correction there plus a smiley,
and pressing backspace will cancel the auto-correction, and
pressing backspace again will delete the smiley.
Bug: 7067593
Change-Id: Ia7eef70a5d06b8b9afa1f1fbb0ed1dbc21a3059f
- Captures complete motion data for all words in an n-gram.
- Also filters n-grams properly; if any word in the n-gram is not
in the dictionary, it is not included.
- Simplify ResearchLog to not require explicit state
- Added LogBuffer class MainLogBuffer class to allow n-gram-level decisions
about privacy.
- Moved LogUnit out from ResearchLogger
multi-project change with Ic70ccb6c2e11eb02d887821434b44daa3eb7a3e2
Bug: 6188932
Change-Id: I731d6cff6539e997874f723b68bdb0d9b651b937
Move many ResearchLogger data collection points to RichInputConnection.
By collecting data here, developers do not have to remember to keep the
ResearchLog consistent with calls to the RichInputConnection.
In addition, some unnecessary log points were removed, and the ResearchLogger
is now independent of LatinImeLogger.
multi-project change with I05496cfd762e9a41c42c50099143f1efc0a3d8a2
Bug: 6188932
Change-Id: I424abb2e437901262a9620255493916b7c3ff74b
DO NOT MERGE
- Captures complete motion data for all words in an n-gram.
- Also filters n-grams properly; if any word in the n-gram is not
in the dictionary, it is not included.
- Simplify ResearchLog to not require explicit state
- Added LogBuffer class MainLogBuffer class to allow n-gram-level decisions
about privacy.
- Moved LogUnit out from ResearchLogger
multi-project change with Ie2bc79fd7fe6b951b24771e94b8d4ca21989af65
Bug: 6188932
Change-Id: I568c90d4af07e7c759c1e7fc64b716bd8c7b4ae5
Move many ResearchLogger data collection points to RichInputConnection.
By collecting data here, developers do not have to remember to keep the
ResearchLog consistent with calls to the RichInputConnection.
In addition, some unnecessary log points were removed, and the ResearchLogger
is now independent of LatinImeLogger.
multi-project change with Ib71f841044ec1072610ab5638a5edfce29b7c05b
DO NOT MERGE
Bug: 6188932
Change-Id: I9ec7500a5b18bfe1a5a5bb1e5bf21c43351fc59e
For some reason we get a "restarting" flag from the browser
some times when the input field is different. The attributes
however are not the same, so we can detect that and reload
appropriately.
Bug: 6946793
Change-Id: I6762dae6f41db690497b026a707d9cc89c840b34
The commitTyped() called updateSuggestionStrip(), and that led to call
Suggest.getSuggestedWordsForTypingInput() even after a batch input was
started because WordComposer.commitWord() reset the batch input state.
Bug: 6932442
Change-Id: If645b1ef0343aa1e21ca71a9275b40c6c3be13df
The Italian dictionary has been amended to contain words that
include apostrophes, and accordingly the apostrophe is now
excluded from word separators in Italian.
This code was only used for Italian, and in the general case
it does the wrong thing; it was only needed by limitations of
the old dictionary.
Bug: 6929108
Change-Id: I7ff4615e01899a1cebed2c4c51679cd0746740fe
Not having a main dictionary is not sufficient reason to display
the hint. If the user already added the word to the dictionary then
we shouldn't be displaying it again, even if we don't have a main
dictionary for the current language.
Bug: 6829798
Change-Id: I6b081f51c82ef395fe2e394fd3167363e743ea6f
- also cleaned up RLog menu
multi-project commit with If0fd4fef89d390073e6939d5188ed5696866cb33
Bug: 6188932
Change-Id: I4f66f13bd366b4e8bde742ccd0704f812c6d33f9
This change also removes the reference of SuggestedWords from
GestureTracker and KeyboardActionListener.
Change-Id: I25ef8756007986abf99a931afd665bbfe6fa387f
showSuggestions is only ever called by updateSuggestionsOrPredictions.
It only feels natural that, when called with a 0-sized or null
suggestion list, it clears the suggestions.
Change-Id: I5b52bc9151afca1bb6c6f0a7f81e3255add92177
- separate ResearchLog from ResearchLogger
- fix abort menu to explicitly indicate re-enabling of logging
- auto flush entries every 5s
- conform to new suggestedWords class
multi-project change with I9fe1f8fe59d5891daa4ca84af157f36fb1bb17dc
Bug: 6188932
Change-Id: I7e99390f934481c6ed9cea2b259944583edda5bb
Many methods were public but could have been private: change them
to private. Also, add a comment above public methods that don't
come from the IMF to make it clearer why they are necessary.
Change-Id: I574154b015d09c0f8542b81763f497691afdc3c1
If !mWordComposer.isComposingWord(), then mWordComposer.getTypedWord()
will always return an empty string.
Change-Id: Ife66d0abc44c743cbc30d31724e833cda168fd5c
This is not exactly the same logically speaking, because it's
theoretically possible that the composing state changed in between
the message enqueueing and it's retrieval. However in the practice,
if the composing state changed the message *must* have been
cancelled and resent, else the behavior breaks. So this actually
is more robust, and removes some obscure requirements on the
calling code.
In the practice, it should also make the cancelUpdateSuggestionStrip
message useless, although this change does not yet remove it.
Change-Id: I75141920ce64e38e2f92e9c02b6c979936eee9a9
We just resetted the composing state - updating suggestions
is sure to yield no results. We may as well not call
updateSuggestions at all.
We should however still cancel any lingering timer from a
previous input field, to avoid this useless processing.
Change-Id: Ic1a19d577903d792bb797c837cc517ea8d430e75
If the separator is not a space, then we will always call
setPunctuationSuggestions and reset the suggestion strip anyway.
If the separator is a space, then the cursor has a space on
the left, which means isCursorTouchingWord depends only on
whether it touches a word on the right. If we were displaying
the "add to dictionary hint", it means a suggestion was just
chosen, so it had to be displayed, and that requires a composing
word and no non-separator at the right of the cursor.
In the end, if we go through this postUpdateSuggestions call,
we are sure we will reset the suggestions later in this method,
either by calling postUpdateBigramPredictions, or
setPunctuationSuggestions.
Change-Id: I95d5f77a5d0ac6d1a6ced8d67d6ac8f650db4a32
Just after this, clear() will be called, removing the suggestion
strip from the screen. It will later be displayed again through
onStartInputView, which will update its content.
Change-Id: I15c23ad2adecab76b0791d7fc222d15b6533f3bd
The responsivity is better like this. This does not seem to
feel slow as the previous comment seemed to indicate.
Also remove a stale comment.
Change-Id: I4e7bf9fe28716e112db182e44b3fa88ee4526bb4
After reverting an auto-correct we always have a separator after
the previously inserted word, and the cursor is never touching
a word. Showing predictions is the right thing to do, while
calling postUpdateSuggestions will invariably yield an invariably
blank suggestion strip, which is not very helpful.
Likewise, after we pick a suggestion, we should be showing the
predictions unless showing the addToDictionary hint. There was
a bug here in the corner case that the word would be a candidate
for user dictionary, but the user dictionary provider is not
available: in this case we should be showing predictions, but
we were showing an unhelpful empty suggestion bar.
Change-Id: I287bb5eb4af762bd5a433e85e185fab6d203e91a
If suggestion and prediction messages both happen to be in
the queue, the latest one will win (update the suggestion strip
later than the other, overwriting any previous suggestions).
So when we enqueue either one, it is always safe to cancel
all messages of both types.
Change-Id: Iad9dd06d08c49f60cac16b88edcc9531a18ec02e
TypedWordValid and AllowsToBeAutoCorrected are almost the
same thing; the difference is whether the word is also a
whitelist entry or not. In this case, TypedWordValid was
the right one to test.
Change-Id: I695fe5b9f6bbe9d3ba314c646da3a25742c9f4ed
Stop storing an int in each of the different class types, and
just store a string in the top class.
Change-Id: I2af1832743e6fe78e5c1364f6d9cc21252bf5831
Output to the ResearchLogger is now queued and only flushed if the word
the user was working on is a dictionary word.
multi-project commit with Ic713ec00777fbdcf4a937b3c77b995257e100fc7
Bug: 6188932
Change-Id: I9de15227ff51be23083d9096f1c1b3d83802fff7
This is harmless, but against policy.
Also, rework the checking code to be more readable, give more
information, and be called for all relevant methods - and not
for informative methods, which are not required to be in a
batch edit.
Change-Id: I03fa8b2e7d68a6a133f86be8a214671750c29256
This is much faster. It doesn't create messages, it doesn't post
stuff in a queue, it doesn't delay execution of other messages.
Also, it decouples the timer from the functionality of the Handler
so this can be pulled up in another change to consolidate with
mLastKeyTime or so.
Change-Id: I9044fc031373e66b9b40eee8025633613d0945dc
For some reason, there were several ways, not exactly identical,
to get this setting. The ones that used mAutoCorrectionEnabled
would kick in when the input field was specifying no correction,
so it would be a little strange (although harmless in the practice
because the settings set in this way would not get used later,
because the correct test would be done at that time).
Also perform a very small refactoring
Change-Id: Ica9f32b238d98009ae1852d3c1e940398f5d341c
...for readability. After all, it makes sense that "current settings"
is a "SettingsValues", while it's harder to understand why we'd
manipulate an object named "SettingsValues".
Change-Id: Ide9a17b970a6cc00b80b9a217f986268c739c662
The goal is to simplify the code in LatinIME.java as well as having
a handy place to put debug calls to see interaction with TextView.
Change-Id: I255227e7e7343e0c2f3dcd1f185e5020d6186732