Different devices have different precision, leading to different pixels
being touched during rendering operations. We need to ensure that the
dirty rect we draw with (and which gets erased on the following frame)
encompasses all possible pixels instead of some ideal rounded rectangle.
The bug from this code led to dropped-pixels artifacts on some devices,
where we'd scale a view, drawing it into some pixels, then invalidate
that same area on the next frame, but the invalidation rectangle didn't
cover the same pixels as the device drew into.
The fix is to floor() the left/top pixels and ceil() the right/bottom
pixels of the transformed invalidation rectangle.
Issue #8971348 dropped pixel artifacts during some scaling operations
Change-Id: Iedb1afd5621dff43bf7a3919bdbd8d2251647fd2
We added APIs to allow an accessibility service to extend the
selection while moving the cursor at a given granularity such
as word, character, etc. The problem is that the traversal was
extending only the end of the selection while moving forward
and the start of the selection while moving backward. This leads
to a case in which the user cannot shrink/extend the selection
because for example instead of shrinking the end of the selection
the implementation was extending the start.
Now extending the selection moves only the selection end. This is
the same behavior as text view using a keyboard.
Tests: https://googleplex-android-review.googlesource.com/#/c/307062
bug:8839844
Change-Id: Id6965b102647df909f61301fcc8ec05458dd5881
AbsListView is backed by an adapter. After the adapter data changes
the view sets a flag that its state is dirty and requests a layout.
If an accessibility service asks for the state of a list item at
this point, it may incur an error since the views and the adapter
are not in sync.
Now if an accessibility service queries for a list item when the
data set is changed and the item views are dirty, we pretend the
children do not exist. After the layout happens, we notify the
accessibility layer that the screen content changed so it can
refetch the views if desired (this notification mechanism is
already in place in AbsListView#handleDataChanged()).
bug:8433433
Change-Id: I4287a0ac2ef6bb33f1f988d5ddad973556c305ca
Internal state must be cleared before calling any methods on the focus
host, since the method may be called again from the host and attempt to
recycle the same AccessibilityNodeInfo twice.
BUG: 8856860
Change-Id: I0410989fd6f3ce3ce29de8edebdfbf3847188843
- dont bother children about resolving RTL properties if the ViewGroup parent
has not done anything
Change-Id: Iedf8a337097e04e1ab0054d59fc347e06b347ea7
There were many places where the native object was being
accessed improperly. Also some places where CloseGuard might
not be acquired or released correctly or where the generation
count might not be updated.
Fixed them all.
That said, Surface isn't intended to be used concurrently
so please don't do it. This is only intended to make
hard to find crashes less likely.
Bug: 8328715
Change-Id: I981ef33425823e0fd7ad6b64443f2ec9b0c8335e
mAttachInfo may be set to null by other threads while running
getHandler().
This fix assigns mAttachInfo to a local variable. Checking null pointer
and getting a member variable are executed through the local variable.
This local variable is constant. So NullPointerException doesn't occur
even if mAttachInfo is set to null while running getHandler().
Change-Id: I4013dfb7951bd864628868ed58f8c4f5b7cbd1d3
Fullscreen window's will not resize when the keyboard comes on screen,
regardless of the setting of the window's softInputMode field. This fix
clarifies the docs to make this behavior more obvious.
Issue #8754615 Clarify behavior of adjustResize and fullscreen interaction
Change-Id: Ie056db4e328cefaf0edb54fe8cfa7a08f320c8d0
Previously, onHoverEvent() would return true if a view was hoverable
and consume the event. After the change, it would return the result of
dispatchGenericMotionEventInternal(). As a result, touch exploration
caused multiple hover events to be sent from every view under a given
touch point. This change reverts to the original behavior and fixes
touch exploration.
BUG: 8723842
Change-Id: I0c7362f19c51bf21ed842711a03b7f02613958d2
bug:8666842
In SW rendering, a previous optimization avoided clipping to the
bounds of views that are layers. This breaks if the view fails to
create a layer (such as if it's too big), so instead look at whether
the view has a layer.
Change-Id: I653882035512012aefd91f06ff0bdc73aa5e4430
1. The accessibility events for switching a widget were dispatched
before we update the important for accessibility property. We
were lucky to get events in some cases since the pages in the
pager had alpha grater than zero, i.e. the page was already
set as important for accessibility, due to a running animation.
2. Accessibility focus clear event not fired if we give focus to
another view. The old focus was correctly cleared just the
events were not dispatched.
bug:8599670
Change-Id: Ia2647d77eaa4e10fbaf3a047dc9ea5b728f9c3c3