child.getTop()/child.getLeft - already contains offset for divider height/width,
so we need to subtract it, otherwise divider will be drawn behind the child.
Change-Id: Idd6e5aa4b20e84c64daaefdf393bc00fafb26c45
Signed-off-by: Vladimir Baryshnikov <vovkab@gmail.com>
Bug 5755099
In extracted text mode, we spell check the background and the foreground
edit text. All changes in the background are already propagated to the
foreground, and updates on the foreground may trigger a spell check
of the entire text since we use setText.
Change-Id: Ie44c3d9113258082ac6df5890851d0e21c702ea2
Bug 5738416
This problem was introduced in
https://android-git.corp.google.com/g/#/c/152599
The invalidated cursor region is no longer expanded to include the
cursor drawable (different from the handles' drawables).
Added that code back. Added a flag, since invalidateRegion is also
used to invalidate text span regions in spell check (assumes the decorated
span bounds are not bigger that text boundaries), which is fine in case
of underline.
When the cursor is moved on a single line, invalidate the whole line
(same as what was done before). This is sub-optimal, will file a bug
to fix this. The core problem is that we should invalidate the previous
and the new cursor's positions. We only have one of these.
Change-Id: I9ada9340fb52aad3d80c39efd021fd3f9ec0cc4d
Limit each parse to batches of a few words, to keep the UI thread
responsive.
Possible optimizations for the future:
- SpellCheck in a thread, but that requires some locking mecanism
- Only spell check what is visible on screen. Will require additional
spans to tag the pieces of text.
This is a cherry pick of 145656 into ICS-MR1
Patch Set 2: Make the Runnable shared and stop it when detached.
Change-Id: Ibf8e98274bda84b7176aac181ff267fc1f1fa4cb
1. If the number picker was not wrapping the selector wheel
it was incorrectly initializing the fling scroller and
the error was proportional to the difference of the
current value and the max size. As a result if the number
picker gets stuck for a very long time.
2. The alpha of the selector wheel paint was not reset on
every subsequent fling so if the wheel was fading out
and a new fling is performed the selector wheel is
dimmed during the fling, rather bright.
bug:5728363
Change-Id: Ia90a6af86f162bda1b28f43f7ba7e4a9f5051b78
Bug 5709546
Change 1a22db29 created a potential leak: setText calls
sendOnTextChange that now calls updateSpellCheckSpans.
The original call to updateSpellCheckSpans made sure the
View had been attached to a window, through the existence
of the SpellChecker object.
The mSpellChecker object will now only be created when the
View is attached, all other spell related method will do
nothing if it has not been initialized.
Change-Id: I8885c12be6395e2346c0ed057bb6a275256f012b
This fixes a bug where a word would be entered in the user
dictionary with the wrong locale.
Bug: 5667272
Change-Id: I219d5461f8f8c74b6ab34f9bb157a4b977f00e68
Bug 5555929
This problem only happens when in landscape extracted text mode.
A suggestion pick from the popup window replaces the text in the ExtractedText,
when it should do it in the underlying source EditText instead.
When the replacement text is longer than the replaced text and is at the end
of the text, an IOOB occurs because the ExtractedText was not modified (we now
correctly change the source text using replaceText_internal).
This is basically an implementation of the TODO comment next to setSpan in
TextView.
Change-Id: I6575137530e0bb5c9ac7e40cc2bba9c66dc254d2
Test for a change in the spell checker activate state on every
spell check. Add/remove suggestion spans accordingly.
Change-Id: I750f30b81464b85cebc695bdb0449ec038fc17df
Checking if the hotspot position is visible instead
of checking if it is part of the clipped visible rectangle.
Bug 5638710
Patch set 2: synchronize static variables you will.
Patch set 3: renaming and refactored the while loop.
Patch set 4: synchronize you will (again)
Patch set 5: parent
Change-Id: I330510f491c85f910fc61598936113ad07d304e4
Otherwise the ViewRoot tries to focus something else and as a result
it will scroll back to the top of a form with many fields, which is
annoying.
Change-Id: I1de10f76fe4b82bc4097fc13c629450d6f999fd0
1. NumberPicker is trying to greedily grow to its max size
but if the max size is not specified the default value
was the max integer which makes the widget get quite
tall in some cases. Now the widget tries to reach the
max size only if it has been specified.
2. NumberPicker was not computing its min width when the array
of display values is set.
3. DatePicker' layout for the old Theme was adding a margin on
the right of the group of spinners and if the calendar view
is not shown the spinners were not centered. Added the spinners
right margin to the left margin of the calendar view.
4. TimePickerDialog was using the wrong conext and was not dismissable
on an outside touch. Same for the DatePickerDialog context.
bug:5646161
Change-Id: Ic15f9b3e6291b76493604230ceb4f783a04d4ac7
New invalidateRegion method, with better horizontal invalidate
bounds in case the region is on one line.
Use by SpellChecker when a new SuggestionSpan is added.
Change-Id: Ide11f1d3d2b1350032b475db0641018a49c08d13
Measuring line widths, glyph by glyph slows down the scrolling
process for long text (for some reason, width measure efficiency
is affectedi by text length, maybe because the whole text has to
be passed to JNI layers).
This optimization avoids this computation in the case where there
is no possible horizontal scroll.
This is a cherry pick of 145957 into ICS-MR1
Change-Id: I2082e3d0eedace1a86122a03e4b21f90f3bc8522
Several issues here:
1. when selection has been set to size 0 (should not be possible, but see 2.),
moving any of the selection handles will create an IOOB because we add/substract 1
with no test. Added min/max.
2. the text change detection, which stop selection mode, was done in
handleTextChanged. We need to go deeper. Some methods (such as setText())
directly call the more atomic sendOnTextChange(). Moved the test down
to this method. As a result, pressing the 'x' button in the QuickSearchBox
correctly stops selection mode (it used to leave an empty selection).
This change may also solve some weird similar issues in extracted mode where
it is sometimes possible to end up with a 0-length selection.
It may also impact Bug 5555929 since spellCheckSpans will now be correctly
updated on ANY text change.
3. the before != after test is flawed. When this method is called, the text
has been changed and selection mode should be stopped even when the new text
happens to have the same size.
Change-Id: I869ef728662f4350f22ed6149dd42db193c333ed
Bugs 5599728 and 5319237.
mInputContentType should be set for a "modern" cupcake
environment says a comment in TextView.
However, it is possible to call onEditorAction on a
TextView that didn't use any of the method that lazily
create that field. This is for instance achieved using
the extracted mode in landscape (Done, Next actions)
or in Contacts, that feature a Next/Done button in the
IME.
As a result, the action is ignored.
The patch is to force the creation of the mInputContentType
when the EditText is associated to the IME.
Change-Id: I5beec5a52e9eec0c209af37d68791bb6ff83d6f6
* Don't call context.getResources() redundantly when unnecessary;
similarly for Resources.getCompatibilityInfo()
* During bitmap creation, don't bother clearing to 0: it's unnecessary
because now that the raw bits are stored in a VM-side byte array, it
was cleared at initialization time. Also, don't use the sanity-
checking public entry point to erase to a color, because we know
that we're by definition in a "legal" path to erase to the initial
contents and don't need to incur the overhead of the (inappropriate)
sanity checking.
Change-Id: Idaca4d64fdecefd5d51337646ead32e1db510e02
1. The dismiss method in a PopupWindow is first removing the
popup View from the WindowManager and then if the content
View differs from the popup View the former is removed from
the latter. Then dismiss() clears the dismissed flag so a
subsequent call to dismiss() is a NOP. However, removing
a View both from the WindowManager and from its parent
ViewGroup triggers stuff wich may lead to a subsequent call
to dismiss(). This leads to a stack overflow exception.
bug:5598944
Change-Id: I2aeeda591be3e9aa98fec1ee17ea8f0e746e6992
Fix a bug that caused animated drawables to not schedule properly when
a view has not yet been attached. Also make ImageViews update their
drawable visibility state properly, which will handle scheduling
concerns as ImageViews are attached and detached from their windows.
This should also fix the bug where animated notification icons in the
status bar do not animate until the posting app posts an update to the
notification.
Change-Id: I24c403182831258d1f251736e920c9efe1d38299
Bug 5557258: recent text editing changed in ExtractedText mode is
broken. The modifications of the text performed by:
- drag and drop
- text suggestions, deletion
- voice IME's delete button
all change the ExtractEditText itself, while they should affect the underlying
EditText (and the change will be forwarded to the ExtractEditText). As a results,
changes are not actually modifying the underlying text.
Created new protected methods in TextView, overloaded in ExtractTextView to
affect the underlying text instead.
Changes to spans should also be forwarded to the original TV (see the 2 TODOs),
this is tracked in bug 5589158.
Change-Id: Ibfec272469e8db191b3875e7576e32481a9dc1bd
Partially addresses Bug 5547923
In landscape, tapping on the text
1. starts extracted text mode
2. displays the cursor handle or the selection popup window.
As a result, some ghost effects and race conditions create an
unpleasing visual experience.
Fixed this by not doing 2. in case extracted mode will start.
The drawback of this quicl fix is that the user will have to
tap again to get the handle/suggestion. That can be fixed later
if needed.
Change-Id: I10e1d8399bb35e5b2cd5cba1295f7d29d051cae0