This CL allows to emulate the behavior of CursorAnchorInfo
in the full-screen mode to work around the limitation of
the framework.
Basically this CL copies relevant code from the framework
to LatinIME. This is actually a code duplicate which isn't
great, but probably the only way that is available right now.
Change-Id: I30bc8c3387c91c8e47252ba699cbd967d8927dad
This CL expands SoftInputWindow to the entire screen. Thus a key
review backing view is eliminated and onComputeInsets() gets
simplified too.
Bug: 17212702
Bug: 10841052
Bug: 10541453
Change-Id: I2d859f4e4698c64cabe399000821f13bab729996
When CursorAnchorInfo is unavailable, we shouldn't try to show
the commit indicator and set the text highlight color.
With this CL, RichInputConnection can be used to track if the
application responded that it does support CursorAnchorInfo or
not. This result will be taken into consideration when
InputLogic needs to determine whether the commit indicator
should be displayed or not.
Change-Id: I945d70eeb02a7a5f3d9b22459b23d7028508910f
This CL introduces commit/add-to-dictionary indicators.
Note that the text is not yet highlighted when the commit
indicator is displayed. It will be addressed in subsequent
CLs.
Change-Id: I7e9b0fcfdc0776a50a1d8cfb41ee0add813317dd
This is because prediction can't be easily distinguished in
style. This fixes the bug by simulating the right members,
but some refactoring should be done to remove useless
booleans.
Bug: 17271923
Change-Id: Ib88f3fb95678021624e59535492926dd315d26fb
This reverts commit a63d0a8ee6.
This patch seems to be fine after all, but was submitted without its companion [ML1.1] patch causing a build breakage. Reverting the revert and submitting both at the same time seems like the right thing to do.
Change-Id: Ib8fefa40b74dcee0edb025a52dac9b35c82d49df
This CL simply moves the method calls of #requestCursorAnchorInfo
into #onStartInputInternal just to consolidate the logic.
Change-Id: Ia205738b9614e9ae375c1dab767a91d2e1f6d0d3
Before this, we display the word we have committed instead
of the word we will actually insert into the personal dictionary.
There is a difference when the word was typed with auto-caps.
Bug: 17071785
Change-Id: I2bfec0402b1307934590a78ab5c25104d92b75ca
With this CL, the backing view starts covering the content area
entirely. This allows the IME to render its UI elements at an
arbitrary position on the screen.
Change-Id: I8b4173410931b776964dddf66de2fe247e51d9de
This CL never changes existing behavior because
ProductionFlags.ENABLE_CURSOR_ANCHOR_INFO_CALLBACK is
not yet turned on.
Change-Id: I4bcbd2aebd05977b07231e8aa14acdcf6d8e1fa0
Do away with the didAutoCorrect local variables which are
unnatural to return out of all these functions.
Change-Id: I22024004d2c489de018beff812c2c589bfd8ca32
This would wrongly emit a 'timeout' log entry when switching
between two instances of the same language.
Change-Id: I56e5de121b87f3e762b58f0b2a77e9abc784036e
Formerly "Show correction suggestions" had three options, "always
show", "show in portrait mode", and "always hide". The reason behind
"show in portrait mode" was that there may not be enough screen estate
in landscape mode to show suggestions. Because recent phone devices
have relatively large screen, we decide to remove "show in portrait
mode" option.
Bug: 15780939
Change-Id: I896d737452c3893d43ce20bd88127f10c1eb3d83
With this CL, InputMethodService#onUpdateCursor and
InputMethodService#onUpdateCursorAnchorInfo can be enabled
on L when ENABLE_CURSOR_ANCHOR_INFO_CALLBACK and
ENABLE_CURSOR_RECT_CALLBACK are specified, respectively.
BUG: 16382260
Change-Id: I29924128f6bd2f08cbd91cc4e82c9c4a6ecce3ff
...otherwise we can't recompute the composition when we
change scripts.
This also fixes when we register that we need to take note
that the current subtype was used. Luckily this is a good
occasion for some cleanup that I've wanted to do for some
time: use InputTransaction for onTextInput (with the goal
to ultimately remove it entirely)
Bug: 15840116
Change-Id: Ie4f4f9157b66b79237eeb3db75535803124d3e19
...for any given input.
This is not necessarily the best fix, but it's simple and
it works well enough.
Bug: 15869703
Change-Id: I54b262be8bdbec37031dea655c60a5573b3d8ec3
We don't need the optimization of storing the old words now
that the RichInputConnection can supply it without IPC.
Bug: 13703802
Change-Id: I37ccb8d5fba879fb04b4f23d33571849736d897c
The logic to determine when the suggestions strip (a.k.a. the
contextual strip) should be shown is already complex. In addition to
that the voice input key get shown on the strip as well. There are a
several factors to be considered and a few things to control.
- The password input field shouldn't have the strip.
- Show voice input key on the strip or not.
- User preference settings "Show Voice Input Key".
- A voice IME exists and is enabled.
- The input field may have a private IME option to prevent the voice
input key from being displayed.
- Application can specify auto completions.
- Full screen mode or not.
- User preference settings "Show correction suggestions".
- Always show, Show in portrait mode, Always hide.
- The input field may have flags to prevent showing suggestions or
auto corrections.
- Suggestions is empty or not.
- An important notice may be shown.
Bug: 14981852
Bug: 15436479
Change-Id: I3050fd53ee6271fc64a8f17b6b12d9581d37b750
This change also includes a fix that has suggestions re-computed
when the typed word is included but no prior suggestions were
found in spans.
Bug: 2349475
Change-Id: Ic06e6ac492507126ffc1e96a5f396c971b567272
The symptom : when text is selected and the device is rotated,
sometimes the keyboard sets the word as being composed around
the start of the selection. Upon the next rotation this ends up
with the keyboard committing some text in place of the selection.
The cause : another bug in the framework with rotation >.>
The keyboard receives a call to startInput with a wrong cursor
position, namely one that does not represent a selection. The
keyboard sets a composition according to this wrong data. When
the keyboard is rotated again, it commits the text, which takes
the place of the selection.
The solution : actually when restarting input the keyboard
realizes that the cursor position is wrong. We cancel composition
at that time.
For robustness, this change also implements two other defensive
changes : upon call to onUpdateSelection, we actually realize
that the previous values were wrong, so we also fix it at that
time, and in addition, when rotating, we finishComposingText()
instead of commitText() which is less dangerous. Implementing
this later change also allows us to let less internal variables
from InputLogic escape to LatinIME, so it's also a good change
for design.
Bug: 14140799
Change-Id: Ib10de18e53e376ac1bbc8487e13d969828483346
When
1. The important notice message is shown on the suggestions strip.
2. And the "Show correction suggestions" settings is off.
we will keep showing the important notice message on the suggestion
strip.
Bug: 13741460
Change-Id: I411007ab1e5e6959b6cdba7a6601a84635259313
This CL fixed the breakage caused by DistracterFilter.
It should be checked in together with I8f53e9481c0f
Bug: 14911612
Bug: 13142176
Change-Id: I33c3526165cea58926d10404552f1fadc385c2e5
With this CL, the implementation of StatsUtils no longer
needs to know how to read settings from the system.
Insted, the LatinIME class is now responsible for notifying
StatsUtils whenever the settings is changed.
BUG: 14324207
Change-Id: Ic3d26ec31c8d2c082d3e7487b578b323aad2f960
This CL also renames AccessibleKeyboardViewProxy and
AccessibilityEntityProvider to MainKeyboardAccessibilityDelegate and
MainKeyboardAccessibilityNodeProvider.
Change-Id: I2b0ec091a11aa8a495794d633efecb6d8b818f42
With this CL, LatinIME starts using
InputMethodManager#shouldOfferSwitchingToNextInputMethod when
available and API level is higher than 19 (KitKat).
Note that relevant settings of LatinIME will be ignored if
InputMethodManager#shouldOfferSwitchingToNextInputMethod is
considered to be available at the moment. We will revisit
here to reorganize the user visible settings before the
new global IME switching mechanism becomes publicly
available.
BUG: 12965588
Change-Id: I0188fa56cba8e983c61cef3ae3400a0e3821f718
It was implemented according to the Plan B in the
design doc:
http://go/ime-misspelling-filter
This CL is to create a DistracterFilter instance
and pass it to PersonalizationDictionarySessionRegistrar.
This patch should be checked in together with
Id633b4fd45693
Bug: 13142176
Change-Id: Ia4957e64218c9619fcf9bb91795a187617c72a2e
With this CL, LatinIME starts calling
InputMethodService#setCursorAnchorMonitorMode in #onStartInput()
when ProductionFlag.USES_CURSOR_ANCHOR_MONITOR flag is explicitly
set to true.
BUG: 13891796
Change-Id: Ib2fb0c3521b61859d4cc530155ccaaee7ee16cbc
In tests, we create many instances of LatinIME, but we never
destroy them. That means we never close the dictionaries nor
the handlers.
This change calls onDestroy, which closes all dictionaries, and
adds some code to finish the handlers.
Change-Id: I942517a2a940c54256b08763f6b38f5b55809f55
We want to remove all calls to this as it lets internal values
escape, but there is some refactoring to do to finish this.
Bug: 8636060
Change-Id: Iedba6afe4719bc0add868714a1ee5a04b7ead33e