Text selection is now triggered by a long press. This behavior should be shared
across applications and is already implemented in the browser.
New UI guidelines say that double tap should be used for zooming only.
Change-Id: I9fae692cf3f6e565350f666fa3d5a86884439349
Editable TextView now display a cursor controller under the insertion
point so that it can be precisely moved.
Change-Id: Ia2e6ddc57d249647ff6683e10e4226db3df27223
There was an issue in the Time.toMillis example.
Also removed some whitespaces so the file
applies to the Android coding Styleguide
Change-Id: Ic1383e506b30ff181c6e14a12f675b52e5c8ccbc
When auto-correction is used, the text is modified to underline the corrected word, which
modifies mGapLength and mGapStart. The mGapLength shift was not properly handled in getTextRunCursor.
Bug 2807595
Change-Id: I43ee216f6780270e452aa9199ffd892fe7ab6c3f
Merge commit '8b0d5bc3f858ae2b737ac654fa05c439344ad631'
* commit '8b0d5bc3f858ae2b737ac654fa05c439344ad631':
Fixing counting the number of days in call log screen.
Recent refactoring for bidi introduced an index shift in the getOffsetBeforeAfter
method. This problem appears for multi-line text input only, when the text line
mStart index is not 0.
As a result, moving the cursor using the trackball in a multi-line EditText crashes.
Change-Id: I1f121f0f9272ef7d338399f369ba6d77e1ca71c5
Add internal API (getTextRunAdvances) to Paint, use when measuring.
Add internal API (getTextRunCursor) to Paint, use when determining
valid cursor positions.
Remove java-level shaping code. Remove 'prep' code in TextLine
(except for replacement text) since shaping now is done on the fly as
needed in native.
Provide explicit shaping context bounds to internal text measuring,
cursor movement, and rendering APIs.
Update for to changes in external API in ushape.h.
Change-Id: I146958b624802ce8553125e5c3c6c03031bc9608
Also remove unused debugging code that depends on junit.
Remove trailing whitespace in changed code.
Change-Id: Ie02d1b8220c599a672ee6e91af0fba634e0f620c
Some line wrapping conditions caused the same style run to be measured
twice, incorrectly advancing the position in the width buffer and
occasionally causing measurement to run out of room. The fix is to
not remeasure the same style run.
Change-Id: Iceb29729c1c27bb602df20fdf83af1da28c82e11
The Javadoc had a missing close <code> tag and also failed to mention
the "start" parameter in the doc.
Change-Id: I861d6646e82e1d49f23a09de8b68a61f81689f83
Previous Canvas changes missed a @hide tag, so droiddoc was complaining
about a missing method since that was also hidden.
Change-Id: Ib70a9fa2e20fe32b74ba901bb289e77583164004
Adds drawTextRun as internal API on Canvas and GraphicsOperations.
Adds implementation to implementors of GraphicsOperations.
Adds state and API on Paint to control the bidi algorithm when used
by Canvas. This API is currently hidden.
The drawText changes are incomplete since shaping is not yet available
in the native code.
Change-Id: I4368048aef9545df0953a349381771603e04b619
Counting the number of days in call log screen when a
call was made/received within a week is not correct.
Issue 3132: Call Log Reporting Wrong
Change-Id: I99c3cb40267b4b5938ccc4225993b7aac7e2d018
Signed-off-by: David Sobreira Marques <dpsmarques@gmail.com>
This takes utility functions from Styled and a few other classes and
incorporates them into two new utility classes, TextLine and
MeasuredText. The main point of this is to support shaping by skia,
to experiment with how this will look, this also introduces
character-based Arabic shaping.
MeasuredText is used by code that determines line breaks by generating
and examining character widths in logical order. Factoring the code
in this way makes it usable by the ellipsize functions in TextUtils as
well as by StaticLayout. This class takes over the caching of widths
and chars arrays that was previously performed by StyledText. A small
number of MeasuredText objects are themselves cached by the class and
accesed using static obtain and recycle methods. Generally only these
few cached instances are ever created.
TextLine is used by code that draws or measures text on a line. This
unifies the line measuring and rendering code, and pushes assumptions
about how rtl text is treated closer to the points where skia code is
invoked. TextLine implements the functions that were previously
provided by Styled, working on member arrays rather than
explicitly-passed arguments. It implements the same kind of static
cache as MeasuredText.
TextLine and MeasureText simulate arabic glyph generation and shaping
by using ArabicShaping, ported with very minor changes from ICU4J's
ArabicShaping. This class generates shaped Arabic glyphs and Lam-Alef
ligatures using Unicode presentation forms. ArabicShaping is not
intended to be permanent, but to be replaced by real shaping from the
skia layer. It is introduced in order to emulate the behavior of real
shaping so that higher level code dealing with rendering shaped text
and cursor movement over ligatures can be developed and tested; it
also provides basic-level support for Arabic.
Since cursor movement depends on conjuncts whose formation is
font-dependent, cursor movement code that was formerly in Layout and
StaticLayout was moved into TextLine so that it can work on the shaped
text.
Other than these changes, the other major change is a rework of the
ellipsize utility functions to combine multiple branches into fewer
branches with additional state.
Updated copyright notices on new files.
Change-Id: I492cb58b51f5aaf6f14cb1419bdbed49eac5ba29
This is a fix for http://code.google.com/p/android/issues/detail?id=907. Note that
that issue was declined without comment, but the bug (while incredibly minor)
does exist. This can be seen on the facebook app, as well as many third party apps.
Change-Id: I8f1449c47228f5f757a5baf389656e51c817b150
Merge commit '0db37997366a4d781af48be758a9d90b6d07d7d5' into froyo-plus-aosp
* commit '0db37997366a4d781af48be758a9d90b6d07d7d5':
Revert to previous text selection behavior
There was a new behavior that starting "Select text" would allow you to
swipe from beginning to end and immediately copy that. This change
reverts to the previous behavior that "Select text" will start where
your cursor is currently and any tap will extend the selection from that
origin to the point of the tap.
Change-Id: Ib955cc8d62a652f518435953da2f54e810d9dfb0
Changes the internal representation of direction information in the Directions object to be a visually-ordered list of start/length+direction pairs instead of a list of directionality inversion offsets.
Rewrite Layout.getOffsetToLeft/RightOf to use run information instead of width metrics.
Remove java Bidi, use native. Switch bidi tests to test native, expect levels instead of dirs.
Add test of directionality. Leave in switch to turn new code off and restore previous behavior for now.
Change-Id: Iea8bb46c678a18820e237c90f76007a084c83051
This is a fix for http://code.google.com/p/android/issues/detail?id=907. Note that
that issue was declined without comment, but the bug (while incredibly minor)
does exist. This can be seen on the facebook app, as well as many third party apps.
Change-Id: I8f1449c47228f5f757a5baf389656e51c817b150
The javadoc for the Rfc822Tokenizer states that it will try
to be tolerant to broken syntax instead of returning an error
(as in an unchecked exception). In some rare cases where the
input is clearly incorrect, the tokenizer throws a
StringIndexOutOfBoundsException, which was found during
one of the monkey test runs. This commits fixes that crash,
and teaches the tokenizer to just continue to run anyway. Two
simple junit testcases has also been added for testing the
default and the errornous case.
The code that was supposed to keep this from happening was not being
executed when the text was all ASCII.
Bug 1899722
Change-Id: Ifc97a4423d6136e19abbc4c82eb36ac0216ce415
This is the framework part, moving classes around so the framework
no longer needs to link to android-common. Makes some APIs public,
others that didn't need to be public are private in the framework,
some small things are copied.