When dragging the cursor...
1) If the touch moves slightly above or below the current line, we keep
moving the cursor along the same line without jumping up and down across
lines.
2) When the drag motion moves downward, jumping to the lower line is
delayed to allow the user's touch to snap to the cursor's handle. Once
the touch is over the handle, we position the cursor above the user's
actual touch (offset such that the finger remains over the handle rather
than on top of the cursor vertical bar). This improves the visibility of
the cursor and the text underneath.
Bug: 148116165
Test: Manually and ran automated tests
atest FrameworksCoreTests:EditorCursorDragTest
atest FrameworksCoreTests:TextViewActivityTest
atest FrameworksCoreTests:TextViewActivityMouseTest
Change-Id: I88432cbc5a7f1a47cd35866f2001d51d3f66828b
And also limits the pre-magnified line height:
- If the text line height is too big, don't show the magnifier.
- If the text line height is too small, enlarges the zoom factor so
that the magnified text can be seen clearly.
Bug: 77791703, 148181186
Test: locally verified.
Change-Id: I4cf56e0a54fda6b23dafe153040fe5ba206f5f1f
These won't work with the BLAST adapter since the Surface isn't
known to the server side. We just convert them in to the other
variant of defer transaction calls.
Bug: 146598493
Bug: 149251083
Test: Existing tests pass
Change-Id: I34fc4bb90114bae8b0d9ffdee5c91a2371e5c240
Originally it uses the text height from the font metrics which is wrong
when the spanned text is smaller than the font metrics.
Test: locally verified.
Bug: 149287208
Change-Id: I91a87200e477faece543a8890aeccd5b7eed9f0b
The new fisheye magnifier is showed inline on the text.
It doens't make sense to have an animation when switching lines
vertically.
Test: locally verfiied.
Bug: 149058653
Change-Id: I36b6894f6954a8adf5a3097ebb7a5c5def292d07
Removed this constant variable, TextView.ACCESSIBILITY_ACTION_IME_ENTER,
and added more description for new accessibility action,
ACTION_IME_ENTER.
Bug: 139380257
Test: a11y CTS tests & unit tests
Change-Id: I929262aa0046640aafe36a2dc2a8896ee7cab9ff
Some methods should not be called on text toasts rendered by the system
UI, adding logging and updating docs. Check go/toast-block-design for
details.
Bug: 128611929
Bug: 144754526
Test: Builds
Test: atest android.widget.cts29.ToastTest android.widget.cts.ToastTest
Change-Id: I282288afd0be604b2fdaa1348f09fc59e8f33d98
We've decided to gate the text toast move on targetSdk due to an app
crash (b/148438364) but decided not to gate the background custom toast
block (in NMS) on targetSdk temporarily to gather dogfood and DP
feedback. This meant that app-rendered text toasts (which are only
possible for apps with targetSdk < 30) were being blocked in NMS since
they were being considered custom toasts.
This brings back the boolean inside Toast class that differentiates
between custom and text toasts for apps with targetSdk < 30, since both
are app-rendered in this case. This code won't be present on final
version and is temporary to gather feedback on dogfood and DP, since
almost no app currently targets SDK 30+. We'll gate both changes (the
system UI move and the bg custom toast block) on targetSdk later on.
Bug: 148761979
Bug: 148794147
Bug: 144754526
Test: Verify that, while on the background:
App with | Custom toast | Text toast
targetSdk < 30 | Blocked | Allowed
targetSdk 30+ | Blocked | Allowed
Test: atest android.widget.cts.ToastTest android.widget.cts29.ToastTest
LegacyToastTest
Change-Id: Id529028bc463034cd2f64a6f2f97e71bc6ea7c36
For some reason I had added @deprecated inside javadocs but forgot to
add @Deprecated to the method on ag/10117117. Repo-hooks only
warned me now that touched that method for something unrelated.
Curiously even api/current.txt in that CL has the method marked as
@Deprecated.
Bug: 128611929
Bug: 144754526
Test: Builds
Change-Id: I8e4a58ae5ba2204aaced6d7a83746b17573a8c97
And excludes the line spacing when calculating the manifier Y
coordinate.
Test: m -j & manually tested.
Bug: 148737626
Change-Id: Ib592187da4f39e9e30bd3c0e6958e56901910728
We should always send TYPE_VIEW_SCROLLED event when scroll. This applies
to ACTION_SHOW_ON_SCREEN. And we also need the scroll event when the
first visible item and last visibile item don't change.
Fix: 147907655, 147282475
Test: tested b/147282475 is fixed (this bug is not related to
ACTION_SHOW_ON_SCREEN, it is the scroll forward action).
Change-Id: I2069dc3ee692042ff87867db9837e85ac1d8dd26
Original logic applies a 4x6 mesh for the fisheye effect.
Due to the mesh width is an integer, the ramp width cannot be adjusted,
instead, it is calculated based on the zoom and mesh width.
e.g. zoom = 1.5, mesh width = 4, the ramp width must be 0.125x of width.
That causes the inflexibility of adjusting the ramp width for potential
UX experiments.
This cl breaks the original pixel copied bitmap into 3 parts.
- For the middle part, it just be drew scaled to the middle of magnifier.
- For the left/right parts, it applies a 1x6 mesh to mimic the fisheye.
Because the mesh only applies the left/right parts, the ramp width can
be configured separately.
Test: m -j & manually tested.
Bug: 148763951
Change-Id: I7afe7e4b8d006b2b3a46513eadfea9fa8bf0515f
In order to do that, NotificationManager now calls
StatusBar.showToast(), which is in SystemUI. StatusBar then calls a new
component, ToastUI, which is responsible for rendering the toast. The
code for rendering the toast was extracted from the Toast class, so it
should behave identically.
Also refactored the code a bit on NotificationManagerService, creating
two children of ToastRecord (one for custom, other for text toasts).
The change is gated in Toast class in this CL, but it's also gated on
the system server, so apps can't circumvent the background block.
Bug: 128611929
Bug: 144754526
Test: atest android.widget.cts.ToastTest
Merged-In: Id0021cdc6f72f41b55ff1c5a4f09ae7687586460
Change-Id: Id0021cdc6f72f41b55ff1c5a4f09ae7687586460
Bug: 129694386
Test: No change in behavior, no new tests
EdgeType is only used as a parameter to quickReject, but it is always
ignored. Deprecate it and the existing quickReject methods. Add new
versions of quickReject without EdgeType parameters. Switch clients to
the new versions.
Change-Id: Id932f10915a8c4959fe0e85f507ce7fd2da8a576
Previously when IMEs want to get initial input text for advanced
prediction featues, it will take up to three IPC calls. Once we provide
the initial text in the EditorInfo object, it would be available right
after the input connection setup and no IPC overheads will be
introduced.
Bug: 122691437
Test: atest FrameworksCoreTests:TextViewTest
Test: atest FrameworksCoreTests:EditorInfoTest
Test: atest CtsWidgetTestCases:TextViewTest
Test: atest CtsInputMethodTestCases:EditorInfoTest
Change-Id: Ie04f2349b1157408aa8ed9044aea12ce99132cb4
onProgressRefresh() is only called when the progress changes. So we should set
stateDescription during initialization.
Test: tested with talkback test app. Without this change, the
stateDescription is not available when we focus on the seekbar. After
the change, the stateDescription is avaiable.
Change-Id: I56071ed28e6917c6bd14162884b10440c6955751