History log of /frameworks/base/core/java/android/widget/Editor.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
955d8d69ea6caabce1461dc25b339b9bf9dc61a6 08-Oct-2014 Dianne Hackborn <hackbod@google.com> Put in real "code" (aka marketing) name.

Change-Id: Idb3976edfae37293ed75cb5b869b4b42d8042bbe
/frameworks/base/core/java/android/widget/Editor.java
5a689ce78ed85cb5df1f2c7c680dcc6525dfe9eb 10-Sep-2014 Raph Levien <raph@google.com> Remove auto spaceifying behavior on paste

The paste action contained some logic to automatically insert or remove
spaces, basically to emulate the semantics of the text being a sequence
of space-separated words. This was never universally loved, and gives
particularly unexpected behavior with a hardware keyboard.

This patch simply removes the logic to automatically adjust spaces on
paste, so what gets pasted is simply the literal buffer contents.

Bug: 16900326
Bug: 3304489
Change-Id: I5cdf9c43d98a17aa708883b47245aa7929a124d2
/frameworks/base/core/java/android/widget/Editor.java
5f183f0671dfa1d87ca6d741deb457170c432493 02-Sep-2014 Yohei Yukawa <yukawa@google.com> L API proposal: Introduce IS_RTL flag

This CL introduces CursorAnchorInfo.FLAG_IS_RTL for better
RTL support. This CL also renames *CharacterRect() with
*CharacterBounds() so that they can look more consistent
with other existing APIs.

Rationale:

CursorAnchorInfo.FLAG_IS_RTL addresses following issues.
1. There is no way to associate the RTL information with
the insertion marker.
2. Returning mirrored (right < left) RectF for RTL in
CursorAnchorInfo#getCharacterRect() is turned out
to be bug-prone. Such usage of RectF is not fully
supported. For example, RectF#isEmpty() always returns
false when right < left.
3. There is no reliable to provide the RTL information
when CursorAnchorInfo#getCharacterRect() returns an
empty (right == left) RectF. Perhaps we could use +0.0
and -0.0, but I'm afraid that it is also bug-prone.

BUG: 17365414
BUG: 17335734
Change-Id: Ic8c6fab58c01206872a34e7ee604cdda1581364d
/frameworks/base/core/java/android/widget/Editor.java
cc24e2b6a2a429d70b75c6810a5cfd8816ce03ad 30-Aug-2014 Yohei Yukawa <yukawa@google.com> API Review: CursorAnchorInfo

This CL introduces following combinable flags as a replacement
of CHARACTER_RECT_TYPE_* constants.
- CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION
- CursorAnchorInfo.FLAG_HAS_INVISIBLE_REGION

This CL also replaces #isInsertionMarkerClipped() with
flags.

Rationale:
getCharacterRectFlags() should return a set of flags, rather
than enum-like types.

getInsertionMarkerFlags() is more consistent with
getCharacterRectFlags() than isInsertionMarkerClipped().
It is also open for future extension.

BUG: 17200900
Change-Id: Ia8cbb9f6b41cd9509fc0147fd68763dfde593ffc
/frameworks/base/core/java/android/widget/Editor.java
119907cd2575c56b1ebf66348b52e67aaf6a88d8 14-Aug-2014 John Reck <jreck@google.com> Animator stuff

Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
/frameworks/base/core/java/android/widget/Editor.java
a277db28e990d1f6f74ace0c32fe92401660a840 22-Aug-2014 Yohei Yukawa <yukawa@google.com> Remove CursorAnchorInfoRequest and related stuff

This CL removes CursorAnchorInfoRequest and related stuff
in favor of InputConnection.requestUpdateCursorAnchorInfo,
which is more easy to understand. This CL also deprecates
InputMethodManager#updateCursor and related stuff.

Rationale:
1. The spec of #updateCursor says that it provides the cursor
position in local coordinates, while the input method
requires it in the screen coordinates.
2. #updateCursor has never been enabled in AOSP, because
InputMethodManager#isWatchingCursor always returned false.
3. There has been no way to let
InputMethodManager#isWatchingCursor return true.
4. In L, InputMethodManager#updateCursorAnchorInfo is
introduced to address all the issues above.

Given that we no longer need to support #updateCursor,
CursorAnchorInfoRequest is overkill when we need to convey
just a couple of parameters.

BUG: 17185263
BUG: 17182367

Change-Id: I4a577bfd02b37b9e56c80b8b41bb25afa95dd8ef
/frameworks/base/core/java/android/widget/Editor.java
3fceabd64c95bfd2c563972e243117af308438d3 20-Aug-2014 Adam Powell <adamp@google.com> Update text selection handles to have a minimum touch target size.

The text selection handles were traditionally sized based on the size
of the provided drawables. When these drawables are visually small, do
not restrict the size of the touch target beyond a certain minimum.

Bug 16851360

Change-Id: If6a468c7b3a9a1a21913006633f00699637751c0
/frameworks/base/core/java/android/widget/Editor.java
987eb3f109c646476d1310a54f7037a558ccfef3 08-Aug-2014 Yohei Yukawa <yukawa@google.com> Fix handling of line-end and RTL characters in CursorAnchorInfo

This CL addresses line-end handling and RTL characters handling
in CursorAnchorInfo.

BUG: 16499624
Change-Id: Ie23569fb136751c40f79dd9886e279dc01cefae9
/frameworks/base/core/java/android/widget/Editor.java
098e7fb5875c31aede4e6d40a3acec876d948527 06-Aug-2014 Adam Powell <adamp@google.com> Have TextView editors use the Menu context for action mode icons

Using the TextView's context instead when resolving these icons from
the theme causes issues if a dark action bar theme is in use.

Bug 16686041

Change-Id: I44cb4a83516d8610103b6ebaf604860b67ac84dd
/frameworks/base/core/java/android/widget/Editor.java
0023d0e0c4f5339b299d1eacbd4e7181c2fd271f 10-Jul-2014 Yohei Yukawa <yukawa@google.com> Polish new IME API for L part 2: CursorAnchorInfo

This CL addresses feedbacks from internal customers for new
input method APIs that are mainly used for physical keyboard
support in L.

For performance reasons, #onUpdateCursorAnchorInfo is not called
back by default and each input method has to enable this
event notification explicitly whenever fine-grained character
locations are needed.

In L-preview, InputMethodSession#setCursorAnchorMonitorMode was
introduced for this purpose. However, we got several feedbacks
to be addressed.
- The effect of #setCursorAnchorMonitorMode is not preserved
during focus change. IMEs need to call
#setCursorAnchorMonitorMode every time when #onStartInput is
called. This is tricky and hard to understand.
- As #onUpdateCursorAnchorInfo is a new API, not all
applications/text editors have supported it. Therefore IMEs
can't always rely on it. However, there is no way to query
if the attached target is supporting this new API or not.
It would helpful for IME authors if we can provide a
reliable way to query if the attached input target is
supporting the new API or not.

In order to address these issues, the triggering method has
moved from InputMethodSession to InputConnection in this CL,
as an analogy of existing InputConnection#getExtractedText API,
which has provided similar functionality including optional
reactive event callbacks from the application to the IME.

BUG: 15812658
BUG: 16118603
Change-Id: I3c6b69bd9d79b199afe68d838f25effa6048e5cc
/frameworks/base/core/java/android/widget/Editor.java
0b01e7fc58cdde00d8350285a3386c4209b72d78 08-Jul-2014 Yohei Yukawa <yukawa@google.com> Polish new IME API for L: CursorAnchorInfo

This CL allows application authors and input method authors to
communicate with each other more precisely on the visibility of
insertion marker and composing characters. Now we can describe
the situation where the coordinates of them are available but
they are overlapped by other UI elements.

This change is based on feedbacks from internal customers of
this preview API.

Change-Id: I82eba0e844a6f8b99ba11a68fad272399034cc24
BUG: 16118303
/frameworks/base/core/java/android/widget/Editor.java
a7090e0cfd7c719a6d4c03aae34f5db98754cbdd 21-Jun-2014 Chris Craik <ccraik@google.com> Update 'DisplayList' vs 'RenderNode' naming in several places

Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
/frameworks/base/core/java/android/widget/Editor.java
c46b5f04aa2a9fd292c117d2824f70fcf06e86ba 09-Jun-2014 Yohei Yukawa <yukawa@google.com> Rename CursorAnchorInfoBuilder with Builder

Inner Builder class should not inherit full class name of outer
class.

BUG: 15516230
Change-Id: I2d56edebb0c85639db57ca5b2aadb22c67fc5926
/frameworks/base/core/java/android/widget/Editor.java
81f4cb3f858f46a4d9b793c4d326b9bf6aca868d 13-May-2014 Yohei Yukawa <yukawa@google.com> Enable CursorAnchorInfo to contain composing string

This CL adds one more functionality to CursorAnchorInfo
that enables applications to associate the composition
string with its positional information. This is useful
for an IME to handle CursorAnchorInfo asynchronously.

This is also useful for the framework to detect if
the application is unnecessarily calling
IMM#updateCursorAnchroInfo with duplicate event.

BUG: 14579622
Change-Id: Ie75c17b523dad33e97b08c15f5f5267573ce2063
/frameworks/base/core/java/android/widget/Editor.java
83b68ba4ad7e80dd0afe34f9f53dde5884325f58 12-May-2014 Yohei Yukawa <yukawa@google.com> Support IMM#updateCursorAnchorInfo in Editor

With this CL, Editor starts calling IMM#updateCursorAnchorInfo
iff IMM#isWatchingCursor(View) returns true. The performance
regression should be negligible when IMM#isWatchingCursor(View)
returns false.

BUG: 14579622
Change-Id: Ib35a6f4201b26d837a6aa07d1204c9eb75404da1
/frameworks/base/core/java/android/widget/Editor.java
8de65a8e05285df52a1e6f0c1d5616dd233298a7 10-Apr-2014 John Reck <jreck@google.com> Switch DisplayListData to a staging model

Bug: 13912977

Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
/frameworks/base/core/java/android/widget/Editor.java
776abc24cdd18610232a50b997cce3cffa74609b 07-Mar-2014 Adam Lesinski <adamlesinski@google.com> Uses VMRuntime.newUnpaddedArray for ideal array sizes

Bug:13028925

Change-Id: I0a9301248b10a339afbdc5e4ffe3310ac4fa1fb7
/frameworks/base/core/java/android/widget/Editor.java
f666ad7046c0b1b255835f75aeb7d1391067df93 15-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Idcca6f26ba6282594789962f5edb3ed53a290fef
/frameworks/base/core/java/android/widget/Editor.java
be34f2f3b340196426bdf558b28951359a4d84fa 10-Mar-2014 John Reck <jreck@google.com> DisplayList lifecycle changes

Bug: 13360343
Change DisplayList to be more forgiving with weaker lifecycle
requirements. Is more self-managed with a strong reference
to the renderer it needs

Also fix naming mismatch

Change-Id: I5c89453a72a52954f6f959f0846199705dbb6476
/frameworks/base/core/java/android/widget/Editor.java
7558aa708160c287552f4e1e33c33d8b191e9f0e 05-Mar-2014 John Reck <jreck@google.com> Remove invalid usage of DisplayList.isValid()

Bug: 13324734

Editor was using isValid as a mechanism to track whether or not it
needed to re-record the DisplayList. This is not correct as isValid()
is not a general-purpose dirty bit. Add an explicit dirty bit for
Editor to use instead

Change-Id: I5608b151791870fca3681056b5507bd39ee48f52
/frameworks/base/core/java/android/widget/Editor.java
44fd8d24f761f82d21e9b00932648a1b6bf91449 26-Feb-2014 John Reck <jreck@google.com> DisplayList overhaul

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
/frameworks/base/core/java/android/widget/Editor.java
8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3 04-Feb-2014 Alan Viverette <alanv@google.com> Add APIs for obtaining themed Drawable from Theme, Context

BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
/frameworks/base/core/java/android/widget/Editor.java
dcd8258e2447afacb6d6f793c2cfb7ad94d2acec 06-Jan-2014 Raph Levien <raph@google.com> am 971003c9: am ece5bc9d: am 7b6b85d2: am d7d07498: am a980c7aa: Merge "Re-initialize error after attach"

* commit '971003c9ffc854f4b080af902457e7a6447f692a':
Re-initialize error after attach
f4ecc55657c535b8b2d7113095903b3808e903e9 13-Aug-2013 Daniel 2 Olofsson <daniel2.olofsson@sonymobile.com> Re-initialize error after attach

If flag for error after attach is not reinitialized, it may cause
NullPointerException on subsequent onAttachedWindow if error text
was reset to null.

Change-Id: I8976c28a6ca71017e5c4b3f29d4eeeb2eda48c38
/frameworks/base/core/java/android/widget/Editor.java
6090995951c6e2e4dcf38102f01793f8a94166e1 19-Nov-2013 John Spurlock <jspurlock@google.com> Remove unused imports from frameworks/base.

Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
/frameworks/base/core/java/android/widget/Editor.java
339f901ba65d6b8478b6d7680cfb2f5421e42d9b 06-Nov-2013 John Reck <jreck@google.com> Cleanups

Simplify DisplayList creation
Remove unnecessary debug code

Change-Id: I310c9196485c6bf65a6793669bd2dc2b9a8a0a15
/frameworks/base/core/java/android/widget/Editor.java
f3bd8d4843dc811a29854bdb11ce6ea2b2834e9c 14-Oct-2013 Victoria Lease <violets@google.com> am 4c4a469c: am 677687c2: am edbab7b5: Merge "no layout = no visibility" into klp-dev

* commit '4c4a469cbfe61f50c23b70d8b2e63f7b661745c7':
no layout = no visibility
b9b77aecf22307300bbf923fbde39422c8c12e80 14-Oct-2013 Victoria Lease <violets@google.com> no layout = no visibility

This fixes an Editor crash when the associated TextView's Layout
is null.

Bug: 11165608
Change-Id: I061c0db6eef95bf39a7696ad6e6f919bd22bfb11
/frameworks/base/core/java/android/widget/Editor.java
65e1772d6b815b5f610a5faa641efd3358c20d8f 25-Sep-2013 Jean Chalard <jchalard@google.com> am 424054ba: am 6a1e32ef: Merge "Don\'t change the text in reaction to a user dict add" into klp-dev

* commit '424054ba621738452b0bae69dcd6a8372ca5c273':
Don't change the text in reaction to a user dict add
0995398e734bd66ee04b60939ec7c74548148952 12-Sep-2013 Jean Chalard <jchalard@google.com> Don't change the text in reaction to a user dict add

This is a confusing interface. The user should be able
to edit the word in the dialog, and the text should be
unchanged.

Bug: 9902905
Change-Id: I24e93df37583f6051046fd6a84a4cbb10d99c046
/frameworks/base/core/java/android/widget/Editor.java
617feb99a06e7ffb3894e86a286bf30e085f321a 10-Sep-2013 Alan Viverette <alanv@google.com> Add View constructor that supplies a default style resource

Also updates the constructor of every class that extends View.

BUG: 10676369
Change-Id: Ifaf27bf82028d180afa4931c0e906df88d858ac3
/frameworks/base/core/java/android/widget/Editor.java
d7429c15e6f4dd9a43b81d94a1bbf65b17d46a16 05-Jun-2013 Satoshi Kataoka <satok@google.com> Fix an issue where "SuggestionSpan"s are not removed properly

Basically, the root cause of this issue is a lack of an expected implementation.
This change completes the spec of the architecture to remove modified "SuggestionSpan"s.

Bug: 9190860
Change-Id: I63f2ccf3407ae7c1bc28813e044b8703e2112f34
/frameworks/base/core/java/android/widget/Editor.java
3aa49b6fece334ace7525d42c1f6d0b7cdc1fbfb 27-Apr-2013 Dianne Hackborn <hackbod@google.com> New UndoManager.

Basic implementation of an undo manager. Supports
multi-level undo/redo, building on the top undo state
as edits occur, managing multiple distinct entities in
the undo state (such as embedded objects in a document),
and saving/restoring the full undo state. Still some
work remaining on correctly dealing with dependencies
between undo states that hold multiple owners.

Also do a simple implementation of undo state in TextView
to see how things actually work. The implementation here
is very primitive: it needs a lot more work to correctly
identify when to merge undo ops, is not trying to do
anything smart with style spans, etc.

Change-Id: Ie30f4e133351e2f569ffb48c6c44a2b19cadee27
/frameworks/base/core/java/android/widget/Editor.java
684634144b15e4da0ed04baa2c4531ef538652a6 21-Apr-2013 Chet Haase <chet@google.com> am 371d4ccc: am 339ac854: Merge "Fix quickReject logic to account for setClipChildren() setting" into jb-mr2-dev

* commit '371d4cccde56ec4d26e51f8e82ef68f196169a3d':
Fix quickReject logic to account for setClipChildren() setting
dd671599bed9d3ca28e2c744e8c224e1e15bc914 19-Apr-2013 Chet Haase <chet@google.com> Fix quickReject logic to account for setClipChildren() setting

The rendering code optimizes by rejecting drawing operations that
lie outside of the bounds of their views. This works in most
situations, but breaks down when containers have called
setClipChildren(false), because we reject drawing that is outside
of that container, but which should be drawn anyway.

Fix is to pass in the value of that flag to the DisplayList drawing
routines which take that flag into account when deciding whether
to quickReject any particular operation.

Issue #8659277 animation clipping

Change-Id: Ief568e4db01b533a97b3c5ea5ad777c03c0eea71
/frameworks/base/core/java/android/widget/Editor.java
0d84e725667315fc9ccb70b93b26ba40b7653285 19-Mar-2013 Fabrice Di Meglio <fdimeglio@google.com> am 430058f2: am 2d18e52b: Merge "Fix bug #8335710 TextView can\'t clear CompoundDrawables" into jb-mr2-dev

* commit '430058f2699041e86d7c0e50cad1fa6989d08cab':
Fix bug #8335710 TextView can't clear CompoundDrawables
f7a5cdfac62cf2335f192581ca299d241d83e195 15-Mar-2013 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #8335710 TextView can't clear CompoundDrawables

- fix start/override mechanism
- take care of RTL compatibility mode (pre JB-MR1)
- fix where reset of drawables resolution needs to happen

Change-Id: I55a69487a0eedee14c4be7006ee0abad085200ad
/frameworks/base/core/java/android/widget/Editor.java
c99d33fb4dcf332b66281a0a6a31710407fc829d 01-Mar-2013 Jean Chalard <jchalard@google.com> Actually change the place where updateSelection is called

Call updateSelection in endBatchEdit instead of onDraw.
This works because all edits go through a batch edit,
which is already the case although the next change will
enforce it going forward.
This is step 3 of a four-step refactoring.

Bug: 8000119
Change-Id: Ia5e257382e2ef2168726bf3d9c7c84f9379ba376
/frameworks/base/core/java/android/widget/Editor.java
baf3094ecaa073e1cb3e807fa17d096f826c3968 01-Mar-2013 Jean Chalard <jchalard@google.com> Add a SpanWatcher to catch programmatic selection changes

When the selection is set via Selection#setSelection, the
Editor needs to know so that it can call back to a bound
IME, if any. This adds a watcher to catch these events.
This is step 2 of a four-step refactoring.

Bug: 8000119
Change-Id: Ia01aee853d5cafb4820fd234bc24b587ad3f7dd0
/frameworks/base/core/java/android/widget/Editor.java
df7c72f68c2fe32546aa119e98be9acf8fffd66d 01-Mar-2013 Jean Chalard <jchalard@google.com> Initial refactoring to move updateSelection to a better place

This is step 1 of a four-step change which will move where
updateSelection is called in regular text fields. The new
behavior will be to call it for each actual batch of
changes, instead of doing it in the render loop which leads
to both false positives and true negatives.

Bug: 8000119

Change-Id: I17bd91a129b18d5451fe1d8e7794ae20165de309
/frameworks/base/core/java/android/widget/Editor.java
1b15ba5d194c1db71d0a34ee110bd1ab169c8a29 20-Feb-2013 Luca Zanolin <zano@google.com> Resubmitting "Enable correction/deleting notification via EasyEditSpan.""

Re-run "make update-api"

Original CL Ic227b8fd50066699915f69a54f225fb5330867c4

Change-Id: Ifb1a0f61801c544b01193435fbfdedd7f3888971
/frameworks/base/core/java/android/widget/Editor.java
1b916301e044d1f6f672c9708c993090ecdf30cf 20-Feb-2013 Luca Zanolin <zano@google.com> Revert "Enable correction/deleting notification via EasyEditSpan."

This reverts commit 8cd8135b95da5b471804604b06084eecbe1cc23b

Change-Id: I6361cc47d58281ab37cb9ae0a67541b43f873147
/frameworks/base/core/java/android/widget/Editor.java
8cd8135b95da5b471804604b06084eecbe1cc23b 14-Feb-2013 Luca Zanolin <zano@google.com> Enable correction/deleting notification via EasyEditSpan.

When the "delete" pop-up is clicked (and the wrapped text removed), the
creator of the span will receive a notification of the action.

Similarly, if the user modifies (i.e., add/remove a char), the creator of
the span will receive a notification too. The notification will not contain any
information about how the text has been modified.


Bug: 6905960
Change-Id: Ic227b8fd50066699915f69a54f225fb5330867c4
/frameworks/base/core/java/android/widget/Editor.java
52036b19a5f82bc4d75cfcbff99c65df8d25a99b 15-Feb-2013 Romain Guy <romainguy@google.com> Expose display list APIs

The exposed APIs are slightly simpler than the full APIs used internally.
Only APIs useful to applications are exposed.

Change-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54
/frameworks/base/core/java/android/widget/Editor.java
9122187fca67c7509ba2a040b602f67928fc9a98 28-Jan-2013 Adam Powell <adamp@android.com> am bb74d8b9: am 783fe429: am e305e5f6: Merge "show SELECT ALL icon with text in landscape mode"

# By Sungmin Choi
# Via Android Git Automerger (2) and others
* commit 'bb74d8b9f632bdda2f5639a9516a83f58374b936':
show SELECT ALL icon with text in landscape mode
783fe4295372cee8d024388221414c253802c995 28-Jan-2013 Adam Powell <adamp@android.com> am e305e5f6: Merge "show SELECT ALL icon with text in landscape mode"

# By Sungmin Choi
# Via Gerrit Code Review (1) and Sungmin Choi (1)
* commit 'e305e5f68df8338cb3c4bdcf099d23ec9abce564':
show SELECT ALL icon with text in landscape mode
f036920669f933c05ac43a8e0ea6cb1a4e35275a 25-Jan-2013 Sungmin Choi <sungmin.choi@lge.com> show SELECT ALL icon with text in landscape mode

Though set config_allowActionMenuItemTextWithIcon as true,
icon for the "SELECT ALL" menu on ActionBar is not shown as staring
in landscape mode.
To fix it, use "SELECT ALL" icon in onCreateActionMode() to show the
icon and text together.

To show or hide text is decided by updateTextButtonVisibility() of
core/java/com/android/internal/view/menu/ActionMenuItemView.java

STEPS TO REPRODUCE: (please be specific)
1. launch Browser/Chrome and go to google.com
2. rotate to landscape mode
3. long press on URL address

Bug: 8073761
Change-Id: Ie0e0aa45f0dff609ed8c03e4423b163bad5452ed
/frameworks/base/core/java/android/widget/Editor.java
955beb2b96a78cf6ee990d0f20bcaf2d22ce608b 10-Dec-2012 Sangkyu Lee <sk82.lee@lge.com> Optimize drawHardwareAccelerated method in Editor class

When inserting a new line or breaking a line,
every display list was invalidated and rebuilt before.
However, we can reuse the display lists above intactly and also
reuse the display lists below with only updating drawing locations.

This patch reuses the display lists if possible.
The display lists above the inserted line are just reused
and the display lists below are reused with only updating
drawing locations not fullly rebuilt.

mIndexOfFirstChangedBlock is the index of the first block
which is moved by inserting or breaking a line.
So the display list whose index is >= mIndexOfFirstChangedBlock
only needs to update its drawing location.

Change-Id: Ica20deb0ebb5750de21356ed31fa9f86e657ff92
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
/frameworks/base/core/java/android/widget/Editor.java
afe8e9b6d033cb854afa3024d8198a32896a804a 20-Dec-2012 Raph Levien <raph@google.com> Suppress horizontal scrolling with trailing blanks

The existing behavior of EditText is that trailing blanks can cause a
line to exceed the layout width, causing the cursor to extend past the
line, which in turn causes horizontal scrolling. This patch clamps the
cursor to the layout width in the non-scrolling case, which makes the
spaces effectively invisible when they're at the end of the line, but at
least suppresses the scrolling.

The clamping only works reliably in left-to-right alignments, so this
patch checks for than and only enables the clamping in those cases.

Fix for bug 7699295.

Change-Id: I22bc4e6c9ded3d7716edfcf10dd2b5c31a5da9de
/frameworks/base/core/java/android/widget/Editor.java
ab989ac313a996280aec61183636e3fb9ac21d9d 17-Dec-2012 Sascha Prueter <saschap@google.com> am 8149820c: am 25458528: am dd2ed93e: Merge "Handle "CODE_ALREADY_PRESENT" message from Settings app" into jb-mr1.1-dev

* commit '8149820c2b2df47028498571785ca009d99b5dc9':
Handle "CODE_ALREADY_PRESENT" message from Settings app
6bad2f2fefc44830e6e7019886a6fde42bec7223 17-Dec-2012 satok <satok@google.com> Handle "CODE_ALREADY_PRESENT" message from Settings app

Bug: 7725834
Change-Id: I85c35e73978d606edf9687e2de76c6ffc3c3ee2b
/frameworks/base/core/java/android/widget/Editor.java
40efbd40606fc31863d3de90f062db431ba7fb47 14-Dec-2012 Mike Cleron <mcleron@google.com> am 323bb07f: am a5a4eb0f: am 6b922cc6: Merge "Receive a user dictionary callback from Settings application" into jb-mr1.1-dev

* commit '323bb07f762e5373f90e758a1146b93a3c31fe17':
Receive a user dictionary callback from Settings application
0e3849af4775debf376317d70450e70976825f6d 13-Dec-2012 Satoshi Kataoka <satok@google.com> Receive a user dictionary callback from Settings application

Bug: 7725834

The callback is sent when the user adds a word to the user dictionary.

Change-Id: Ieee9bfd50a9adbed1a769e3cd95d9cb2815c34b4
/frameworks/base/core/java/android/widget/Editor.java
742524b2169b5b5726e7b27fcd1673dabca62099 20-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> am 3ee47400: am 95263ef3: am 4d931acd: Merge "Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode" into jb-mr1.1-dev

* commit '3ee4740009b0e217ee0f6de0f86f2f557b175dea':
Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode
bb0cbae441f04c052dd1a73448ae58fbffaca65d 14-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode

- keep the Error Drawable infos into the Drawables cache
- reset left/right Drawable state before resolving where to put the Error Drawable
- get the mirrored Drawable for the Error popup background
- set the Error popup position depending on the layout direction (so that the "triangle"
of the background is pointing to the middle of the Error icon)

One restriction: we load the Error popup background Drawable corresponding to the layout
direction of the System Locale. So if you set the Layout direction on a TextView (or
an EditText) to RTL and set an error to it when you are in a RTL System Locale, then you
see that the background "triangle" is not pointing to the Error icon. This is working as
intended as the AssetManager load the Drawable resource depending on the configuration
which is in that case the RTL one thus loading the RTL version of the background (and not
the LTR one).

Thus there can be a discrepancy between the "layout direction" of the TextView
and the one from the Error popup background. This would happen only thru using the SDK and
not in a normal case when running an App.

Change-Id: I91bbfbe46ac20efe0e585c5d4c766db23b5c709d
/frameworks/base/core/java/android/widget/Editor.java
7a12433390470ce8ae1eda2ed7578f513abc75ad 13-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> am bb67d486: am a97f5b8c: am 9d82d324: Merge "Fix bug #7457897 Error icons are not shown in credit card entry form" into jb-mr1.1-dev

* commit 'bb67d48606afdeb34fc488fb16f18c136eb49ec8':
Fix bug #7457897 Error icons are not shown in credit card entry form
5acc379c5488e846093efd2347d408069509830a 12-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7457897 Error icons are not shown in credit card entry form

- fix regression: the error icon was no more showing is the widget was not focused

Change-Id: I24cc00a0cb79d38e365d413f9820b5a6981de4f4
/frameworks/base/core/java/android/widget/Editor.java
18d9a269411a5ac1431cb86949b101987ae3242e 08-Nov-2012 Romain Guy <romainguy@google.com> am a965fc5e: am b37e5d75: am 7b9b41c1: am 1b3b2544: Merge "Dismiss error icon on setError(null) [regression] Bug #7442935" into jb-mr1-dev

* commit 'a965fc5e8f0c84cbeeaae7006eddbaf3bba64586':
Dismiss error icon on setError(null) [regression] Bug #7442935
d1cc1878cc7a07c794feec51c840fd566f59d523 06-Nov-2012 Romain Guy <romainguy@google.com> Dismiss error icon on setError(null) [regression]
Bug #7442935

Change-Id: I783d868173637007be326e20795cbb4cb8c7b899
/frameworks/base/core/java/android/widget/Editor.java
5fc949d0ae051f05437858d911ebf12d3a6fbead 02-Nov-2012 Raph Levien <raph@google.com> am e5a4e92f: am fd06d34c: am d9134e7a: Merge "Revert partial RTL\'ization of Editor.setError()" into jb-mr1-dev

* commit 'e5a4e92f175e7a776ba4703a09b68de562060e1f':
Revert partial RTL'ization of Editor.setError()
f58f1b9d41a5cfc2614b836417b7fee7e6d241b6 02-Nov-2012 Raph Levien <raph@google.com> Revert partial RTL'ization of Editor.setError()

The conversion of the error indication on Editor to RTL-aware was only
partially completed, and was causing bugs such as an error indication
failing to appear when set (bug 7457897).

This patch reverts these changes and just always sets the error drawable
on the right. This fixes the above bug, and also makes the error
drawable position always consistent with the error popup (before, in an
RTL layout direction, the popup would be on the right and the drawable
on the left).

Making the error display fully RTL-aware should be done as future work.

Change-Id: Icaee91210454ed9056e7200520d9275303de02ca
/frameworks/base/core/java/android/widget/Editor.java
46e62fe39874abf2a9bdfab7635df98011c03cd1 30-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> am 024e70c8: am dd80335e: am 07ce0ca2: Merge "Fix bug #7419054 TextView Drawables resolution is broken in RTL mode" into jb-mr1-dev

* commit '024e70c8156a0fa2d702ff2fba4a38c1f6b68f98':
Fix bug #7419054 TextView Drawables resolution is broken in RTL mode
1957d281ea123e4925e51fa5ad22ce239ef2a07d 26-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7419054 TextView Drawables resolution is broken in RTL mode

- check layout direction previous value in the onResolveDrawables(int) callback
- dont do any Drawables resolution if we cannot resolve the layout direction
- also remove unnecessary call to resolveRtlPropertiesIfNeeded() in ViewGroup when
adding a child as the call to resolveRtlPropertiesIfNeeded() will be done into
the measure() call itself later

Change-Id: I62237af3d307dfea203f7f2865551d1c61a0e0b8
/frameworks/base/core/java/android/widget/Editor.java
5d96964fb5ec8125b984ba84e2f9acb4a9255f0d 03-Oct-2012 Raph Levien <raph@google.com> am 11541338: am e9b175b7: am 484de9db: Merge "Fix for bug 6954231 text wraps on second line and is fused..." into jb-mr1-dev

* commit '11541338c5c0db1181107aef8f96c398d8445fd4':
Fix for bug 6954231 text wraps on second line and is fused...
6b558994d4ea8dfa1967f96e272496a7d2b8972a 03-Oct-2012 Raph Levien <raph@google.com> Fix for bug 6954231 text wraps on second line and is fused...

When breaking a line, the paragraphs below the new line break were still
being drawn in their old location. This only happened when the height
was fill_parent, otherwise the height change would force a relayout,
which in turn would do a full invalidation.

This patch checks for changes to the layout height (not just the widget
height, which won't change when it's fill_parent), and invalidates.

Change-Id: I64adb9f5eae0479c1c9c8d37c10c2c27a6f582a8
/frameworks/base/core/java/android/widget/Editor.java
525926078b5f4b9eeceb21662cdebe763f4c5b45 24-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> am 72d65718: am 239e4305: Merge "Fix bug #6427629 Clean up layout direction APIs" into jb-mr1-dev

* commit '72d657182312c7bac049b3ed94a4658c3935ae28':
Fix bug #6427629 Clean up layout direction APIs
e56ffdc7b31b0937628609cc3bbaa15879023569 23-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6427629 Clean up layout direction APIs

- rename getResolvedLayoutDirection() to getLayoutDirection()

Change-Id: I3afe56c0db0751952f5056c23893cb7455531d29
/frameworks/base/core/java/android/widget/Editor.java
b19f313e259eea7f10753cf69f10950ec45155ca 18-Sep-2012 Victoria Lease <violets@google.com> am 976ed471: am d6991106: Merge "Avert crash when dragging text in same TextView" into jb-mr1-dev

* commit '976ed4711ef5fc943ad94a8cbb251cd5feb34cde':
Avert crash when dragging text in same TextView
91373209da02813ed760d9ea201d6f917e2a1fc1 08-Sep-2012 Victoria Lease <violets@google.com> Avert crash when dragging text in same TextView

The previous implementation made liberal assumptions about the size
of the string being edited, as well as the position of the substring
being dragged. Explicitly checking those assumptions fixes our
IndexOutOfBoundsException.

Bug: 7129392
Change-Id: I32560cf87fbbe703a8b26c7eb2a64c8f8c0bfcf1
/frameworks/base/core/java/android/widget/Editor.java
0c96b81f8e843b8d6e8c21218fb468f1897b999b 29-Aug-2012 Luca Zanolin <zano@google.com> Relax suggestion notification.

Before the suggestion selection were notified only when they were added by
an IME. This CL relaxes this constrain, and the suggestion are notified
even if they are added by an application.

If the context is null and the package name of the apk cannot be determined,
the suggestion are notified using the old method via the Input Method Manager.
This is required to keep the backward compatibility.

Bug: 6905960
Change-Id: If225ef27cded386809fbd899e34e32aced4e0473
/frameworks/base/core/java/android/widget/Editor.java
58cf576243d17b34c0bd3e0aead48cae00c089c0 02-Jul-2012 Gilles Debunne <debunne@google.com> Merge "UI changes in suggestion menu"
1daba18747782588ee7f486d0ba4033438429302 26-Jun-2012 Gilles Debunne <debunne@google.com> UI changes in suggestion menu

Icons removed for delete and add to dictionary.
Words capitalized (in English only)
Changed background color to white for words.

Note that due to a bug in the interaction between listView and
popup window, setting a background to the TextViews paints a
solid rectangle, which hides the rounded corners defined in
the popup window background.

Bug 6712892

Change-Id: Id5bb429463e2debc5e30d571c34426dfa82119d4
/frameworks/base/core/java/android/widget/Editor.java
c72fba82a68992fe5bec05e4415ae98deaa66ea3 26-Jun-2012 Gilles Debunne <debunne@google.com> Ensure batch edit mode is ended on window focus loss

This is a translation of this open source contribution:
https://android-review.googlesource.com/38503

Change-Id: I4d3adf89d0752e6fd5ec2cdad3a54d4e764a1fe7
/frameworks/base/core/java/android/widget/Editor.java
0ed59fae6fc85c2c4a223d3be88b79cf797908ab 30-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6567507 [Bidi] - Cursor is sometimes not visible on EditText

- take the hint layout primary horizontal offset if needed

Change-Id: Ib5c4dd990278e1fd8bb9ba4f4b6940a62dba91e3
/frameworks/base/core/java/android/widget/Editor.java
057a585fba01d92c38f27a8c080622dfd0c6f556 11-May-2012 Adam Powell <adamp@google.com> Automatic persistent text selection for ListViews

Use View transient state tracking to allow selection to persist across
ListView-style item view recycling.

Fix some bugs with transient state tracking.

Bug 6110122

Change-Id: Ic084b8fc2289bff718b19478a37ce64459b3ed4c
/frameworks/base/core/java/android/widget/Editor.java
fd5bc01f70c8d9270162d38bb9f675308b5a19b0 24-Apr-2012 Gilles Debunne <debunne@google.com> Better horizontal internal scroll handling in Text.

Bug 6378843

Corrects CL 183460, which would clip text with a width greater than
twice the TextView's width.

Internal horizontal translation is now handled in a similar way to
vertical scrolling.

Internal scrolling is indeed handled by the TextView, which translates
the canvas and sets the clipping bounds accordingly.

When drawing the internal DL, we tighten the horizontal bounds like we
did for the vertical bounds using top and bottom. As in Touch.java, we
use the getHorizontallyScrolling() method to know if we indeed have to
measure the actual text width. If there is no horizontal scrolling we
use the TextView's width as a safe upper estimate in order to avoid an
actual computation. Note that horizontal scrolling is typically only
used for long single-lined text, so that the measurement loop is quick.

As a result, the internal DLs represent the entire text, and there is no
need to invalidate them when an internal scrolling takes place. This
behavior replaces the draw-only-what-is-needed we had before, but is
more consistent with what we do for long texts inside of a ScrollView
with no noticeable performance change, even on very long text.

Change-Id: I47c24c0ae988547d4f1e9f87d136225c93a3056d
/frameworks/base/core/java/android/widget/Editor.java
0b7d747e900dd9e6e6f62f10772c2dded9b9d0c6 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Editor uses a SpanWatcher to track EasyEditSpans"
8b482446683e4908e6a71da42301291a0a399932 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Centered text is not updated"
c62589cbecef6e748bcc6c6f4ea6a8ff7656923f 12-Apr-2012 Gilles Debunne <debunne@google.com> Editor uses a SpanWatcher to track EasyEditSpans

Will also fix Bug 6344997

The previous TextWatcher mechanism was inneficient. It require an
expensive getSpans() call to retrieve all the spans and then search
for the one we're interested in in case it has been changed.

The SpanWatcher is faster, it will broadcast the add/changed/removed
events we're interested in.

Now that we can rely on SpanWatcher, use it to directly track
addition and removals of EasyEditSpans.

No unit test for this feature which require an integration with
the voice IME. Easy to test manually though.

Change-Id: Idabcacc48c479bf9868d5204c0b0ca709207ede2
/frameworks/base/core/java/android/widget/Editor.java
fb9f5be318e4f530eff9964702cfb655a6433f00 24-Apr-2012 Gilles Debunne <debunne@google.com> Centered text is not updated

Bug 6378843

Emergency fix. May submit a proper fix with less translations later.

Change-Id: I9d8348e29d5436580202d3ee0456d341bf81dab8
/frameworks/base/core/java/android/widget/Editor.java
b983e27af47b6a3a6b13af0d3dd64b163f540efd 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Re-added a flag to prevent the IME from showing"
1271e2cc80b01d577e9db339459ef0222bb9320d 20-Apr-2012 Chet Haase <chet@google.com> Remove USE_DISPLAY_LIST_PROPERTIES flag

This flag was still hanging around pending any need to disable
DisplayList properties. But things seem stable, so it's time to clean up
and simplify the code.

At the same time, I reduced redundance in DisplayList dimensions. We
used to call drawDisplayList() with width/height parameters that were
used to do a clip reject. This is redundant with the DisplayList properties
that set the bounds of the DisplayList; the left/right and top/bottom properties
represent the same width/height properties formerly used in drawDisplayList().
The new approach is to not pass dimensions to drawDisplayList(), but to
instead pull those dimensions directly from the DisplayList when needed.

Change-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56
/frameworks/base/core/java/android/widget/Editor.java
de09576f4910f36f63275683870a067054d51428 23-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Cursor is moved at end of word when it is added to dictionary"
3473b2b1f495f0f5a31e7ed687557c423c63abff 21-Apr-2012 Gilles Debunne <debunne@google.com> Re-added a flag to prevent the IME from showing

Revert of CL 161404

This flag will be used by the dialer. It prevents any IME from
showing as a result of a focus given to a TextView through a tap
or a D-Pad click.

Change-Id: Ifa5bfcbff124b300780f76dea443d26cf172f5e3
/frameworks/base/core/java/android/widget/Editor.java
ebc86af1dc186c77f723c8970951e8ff00b4866b 21-Apr-2012 Gilles Debunne <debunne@google.com> Visible spans changes only invalidate the affected text sub display lists

When a span with a visible influence on the text is modified, we only
need to invalidate the text sub display lists that overlap this span.

This is especially useful when typing and the composing span (an underline
span) gets updated after each key stroke.

Change-Id: Ib2af3219c41eb79ec5d0a2eee317aca8c4efdef9
/frameworks/base/core/java/android/widget/Editor.java
2eb70fb257623de7d32e8c1a878f4c03b71846d1 19-Apr-2012 Gilles Debunne <debunne@google.com> Cursor is moved at end of word when it is added to dictionary

Bug 6355904

Change-Id: Ib56b719d0c3001ce975bccf8dd80c138bffc24cc
/frameworks/base/core/java/android/widget/Editor.java
157aafcbee0eabda798a3be406ccc4200ee86756 20-Apr-2012 Gilles Debunne <debunne@google.com> TextView's sub display lists have tighten bounds

An editable TextView caches text rendering inside an adaptive
number of sub display lists. The bounds of these use to be those
of the entire View.

This CL creates block display lists with tighten bounds, so that
(a still-to-be-implemented) quick rejection can occur.

Also cleaned-up the contradictory translations that were used to
handle the TextView's internal scroll and removed the invalidation
of display lists in that case.

TODO: When internal scroll sets a tighter clipping rect, quick
reject the creation and display of the clipped display lists.

Also renamed blockEnds to a more explicit blockEndLines.

Change-Id: I7d79bea78d06d19b6935aef75ff7aa7df2594050
/frameworks/base/core/java/android/widget/Editor.java
acb69bb909d098cea284df47d794c17171d84c91 14-Apr-2012 Dianne Hackborn <hackbod@google.com> Add direct support for HTML formatted text in ClipData etc.

When using the clipboard, ACTION_SEND, etc., you can now supply
HTML formatted text as one of the representations. This is exposed
as a set of methods on ClipData for building items with HTML
formatted text, and retrieving and coercing to HTML (and styled)
text. In addtion, there is a new EXTRA_HTML_TEXT for interoperating
with the old ACTION_SEND protocol.

Change-Id: I8846520a480c8a5f829ec1e693aeebd425ac170d
/frameworks/base/core/java/android/widget/Editor.java
cfbf0e0296acd4c3451591ec4b241e393fb9bd8a 04-Apr-2012 Gilles Debunne <debunne@google.com> Removed spurious log about blinking cursor

Change-Id: I940c3847bb6e461178575480c82e7dd6739277cf
/frameworks/base/core/java/android/widget/Editor.java
d88876a72f9ceebd2c93eb9ba1be4bcff971e754 17-Mar-2012 Gilles Debunne <debunne@google.com> Extracted text editing logic in a separate class

Editor specific method and fields are extracted to a dedicated Editor class.

Some private fields and methods had to be made package private so that the
Editor can see them. No change in the public API.

Other changes in this CL:
- The Blink class no longer has a WeakReference to the TextView
- EasyEditSpanController is no longer a field of ChangeWatcher.

Future work:
remove the getEditor() method in TextView and
clean whitespaces and indentation.
remove the EasyEditSpanController as a change watcher, fix spanWatcher

Change-Id: I1fbe0176b6bd27d90f556dc3a90469367f77437c
/frameworks/base/core/java/android/widget/Editor.java