History log of /frameworks/base/core/java/android/widget/AbsListView.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2167b11de6f239d7f747d2e11897b6759232b8fd 20-Dec-2014 Chet Haase <chet@google.com> Fix selector bug

Issue #18784539 Row stays highlighted if I begin scrolling after the rows been highlighted in "About phone"

Change-Id: Ia91467d8fe64eec077f20af70eae0d5bb070c255
/frameworks/base/core/java/android/widget/AbsListView.java
b942b6f15c51c2ff48c59d8f620ee6156d00f67e 08-Dec-2014 Alan Viverette <alanv@google.com> Fix hotspot coordinate propagation in ViewGroup and AbsListView

There was a weird disconnect between setPressed() and hotspot propagation
behavior. This makes hotspot propagation work like setPressed(). Also
fixes ripple animation during drag-to-open.

BUG: 18631557
BUG: 18593243
Change-Id: Id4adf5d815e4d426b4182aac4d0c780f04472ae4
/frameworks/base/core/java/android/widget/AbsListView.java
f7dee54b62b02413fc6a0b8dc5666a7cd9758460 30-Oct-2014 Alan Viverette <alanv@google.com> Only draw AbsListView selector when focused or pressed

BUG: 18176135
Change-Id: Ibd9d9c0f439e5daa8eba606abc5ff055a3d8ff0c
/frameworks/base/core/java/android/widget/AbsListView.java
632af849240f54f91b2b4fde77d3a51c4d045f74 28-Oct-2014 Alan Viverette <alanv@google.com> Ensure accessibility focus rect is drawn correctly

Reverts previous change that draws it as part of View.draw() and ensures
that the display is always redrawn if a view has accessibility focus.
Correctly removes focus from views with accessibility focused ancestors.

Also reverts the focus indicator to use a solid line since the dotted
line looked janky.

BUG: 17675993
Change-Id: I25718334cc1ae1c2cd19d3c23af1c18c6a67504c
/frameworks/base/core/java/android/widget/AbsListView.java
3b415e41cc2be7ede25be203b447143c3f8c046b 23-Oct-2014 Alan Viverette <alanv@google.com> Use correct smooth scroll default duration

BUG: 18092378
Change-Id: I503677129edb647b7970b4e39a175289d5798e1b
/frameworks/base/core/java/android/widget/AbsListView.java
80c0bbe82c9804af3499bae5f55a5931c92f1a7b 26-Sep-2014 Alan Viverette <alanv@google.com> Merge "Correctly advertise accessibility scrolling actions" into lmp-dev
947a96956035e1ee22a82d18aec018b9046b641b 25-Sep-2014 Alan Viverette <alanv@google.com> Correctly advertise accessibility scrolling actions

Previously, we didn't take into account partially-visible views. This
extracts existing logic for determining whether the list can scroll
up or down and applies that when adding scrolling actions.

BUG: 17648502
Change-Id: I7ed9382e1645970ab098c210ad10f8a077da834b
/frameworks/base/core/java/android/widget/AbsListView.java
744beffb6ae76d682c559970bb634722c835a32e 22-Sep-2014 Adam Powell <adamp@google.com> Track persistent nested Y offset for fling velocity

Track the nested offsets applied persistently in AbsListView and
ScrollView. This allows accurate velocity to be reported to nested
fling/pre-fling.

Bug 17548219

Change-Id: I66199c534aca7fb81746eff6d04c931e4c4e48da
/frameworks/base/core/java/android/widget/AbsListView.java
5665c0f265c7d1e46f0af832ffdf39af183c038e 17-Sep-2014 Brian Attwell <brianattwell@google.com> Merge "Pass different dy into dispatchNestedSCroll" into lmp-dev
e0e4217330fc3fa86046c284696df3b2d9785632 16-Sep-2014 Brian Attwell <brianattwell@google.com> Pass different dy into dispatchNestedSCroll

Bug: 16462679
Bug: 17529919
Change-Id: I328457a27507253cc7bfeab0e2daa4d4563aab17
/frameworks/base/core/java/android/widget/AbsListView.java
3fadee479107f0494e1e190aba2a1eea12cb0a75 08-Sep-2014 Yohei Yukawa <yukawa@google.com> API Review: Clean up removed APIs

This CL removes old API signatures marked as @removed
in the follow CLs.
- Ic8c6fab58c01206872a34e7ee604cdda1581364d
- Ia8cbb9f6b41cd9509fc0147fd68763dfde593ffc
- I772c48ff18918e48a81e807b48ff907614485c09

This is just a clean-up CL. No behavior change is intended.

BUG: 17200900
BUG: 17320996
BUG: 17365414
Change-Id: Ibfbd5cc1cdebb8851c73477cff55c9b2d631fdea
/frameworks/base/core/java/android/widget/AbsListView.java
fd1e93d128da9dbb2f97630c01239bb56199686e 08-Sep-2014 Adam Powell <adamp@google.com> New new design for ResolverActivity

Switch back to using a list as the grid and differently positioned
activity icons were confusing to users. Keep the distinct "last used"
presentation but align icons and titles with the further choices
below. Adjust this to make the fold more apparent. Remember
open/closed slider state across config changes.

Fix some bugs in nested scrolling and flinging.

Bug 17301272

Change-Id: I175937d5821df27b6ac7ffad7f01cd9a6ed3e3e3
/frameworks/base/core/java/android/widget/AbsListView.java
d8636ea7ca78df83d6b04088eab7853f15f3e999 03-Sep-2014 Yohei Yukawa <yukawa@google.com> API Review: InputConnection

This CL does nothing but rename some L API candidates
in InputConnection class, as per requested.

- requestUpdateCursorAnchorInfo()
-> requestCursorUpdates()
- REQUEST_UPDATE_CURSOR_ANCHOR_INFO_IMMEDIATE
-> CURSOR_UPDATE_IMMEDIATE
- REQUEST_UPDATE_CURSOR_ANCHOR_INFO_MONITOR
-> CURSOR_UPDATE_MONITOR

BUG: 17320996
Change-Id: I772c48ff18918e48a81e807b48ff907614485c09
/frameworks/base/core/java/android/widget/AbsListView.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/AbsListView.java
4884c642882af0a279673d7a95485069e58beb69 07-Aug-2014 Adam Powell <adamp@google.com> Add AbsListView#fling

ScrollViews can programmatically fling from public API and now
ListViews/GridViews can too. This helps support applications that wish
to propagate flings across scrolling containers as part of nested
scrolling.

Bug 15538504

Change-Id: I0318c6717c7fb8788a006f96c8f8170556dd8b9e
/frameworks/base/core/java/android/widget/AbsListView.java
9413b245a6e5264ce4e57c48a90ee96f914476e2 07-Aug-2014 Adam Powell <adamp@google.com> Nested pre-fling for AbsListView and ScrollView

Add nested pre-fling support to all framework widgets that currently
support nested fling.

Change-Id: Ieaf9d12938dbfeea779c2aee2f5a081c287c8e96
/frameworks/base/core/java/android/widget/AbsListView.java
1dada3da99c4521920c74dcc70e7a042ea75b8d2 14-Jul-2014 Alan Viverette <alanv@google.com> DO NOT MERGE Remove sub-position scroller

BUG: 14477472
Change-Id: I019c58dedb383e9e906831c8e44bab8b88e92604
(cherry picked from commit 66072fe0e1494a851e54bc7756734141dfbf4fe0)
/frameworks/base/core/java/android/widget/AbsListView.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/AbsListView.java
aab726c53e761752e506471408b28673387cd10f 08-Jul-2014 Adam Powell <adamp@google.com> Fix consistency in nested pre-scroll with ScrollView for AbsListView

Keep sign consistency for nested pre-scroll dispatch in AbsListView
with ScrollView. Also correctly invoke nested flings.

Bug 16015770

Change-Id: Ia8a82667ea548aafda66f04e32046c3b0a5c2314
/frameworks/base/core/java/android/widget/AbsListView.java
d361a4f98bbc03cb61b9ac4504eda490ff704b60 01-Jul-2014 Alan Viverette <alanv@google.com> Use touch hotspot in drag-to-open, fix forwarding cancellation

BUG: 14230395
Change-Id: Ibea615bcd6a2e57fca8b49ffea23f0df951d497c
/frameworks/base/core/java/android/widget/AbsListView.java
8390fab6f4c305e89e1eb32bbf82c74a55f79424 01-Jul-2014 Alan Viverette <alanv@google.com> Fix NPE in AbsListView hotspot management

BUG: 15989761
Change-Id: I1c2fc2ddf3128bf3ba4aa7d986899193559b0c76
/frameworks/base/core/java/android/widget/AbsListView.java
287c0361877057e50190cc0d7224e5bb2a7c4955 23-Jun-2014 Adam Powell <adamp@google.com> Compatibility shim for apps calling View methods with TypedArray params

Apps calling the View methods that accept TypedArray params have
always been wrong. There is no way to call these methods safely since
apps can't get at the correct filter array assumed in these methods'
implementations. Do the best we can with these calls anyway; ignore
whatever they did pass and just get the styled attributes from the
Context used to construct the view and its associated theme.

Bug 15792674

Change-Id: I6dfa1abf273b581e79a17a72f68c97ff9a9148c5
/frameworks/base/core/java/android/widget/AbsListView.java
9be22455ac2548dd822bdfa7e4091561eac67d57 04-Jun-2014 Adam Powell <adamp@google.com> Fix EdgeEffect clipping and AbsListView's use of it

Make sure that we clip the edge glow against the edges of the view and
not against padding. If we're clipping to padding already, this will
happen automatically.

Bug 15020863

Change-Id: I4645c92f2a372d3c9fa8bb5a9fda44c0d82ac4cf
/frameworks/base/core/java/android/widget/AbsListView.java
4d2f2483f6d9e2eb25d843d676981f4ebc9c79e5 02-Jun-2014 Alan Viverette <alanv@google.com> Fixes hotspot list transitions, update to use a single hotspot

Also updates background and button colors to match spec, removes
dependency on bouncycastle Arrays. Vastly simplifies ripple drawing.
Adds APIs for maximum ripple radius. Makes selectableItemBackground
bounded by default and adds an unbounded version and theme attribute.

BUG: 15315168
BUG: 15314684
BUG: 15314830
BUG: 15316768
BUG: 15333033
BUG: 15344050
Change-Id: Ib0619587ce78e43056b66571bae185e0f1613185
/frameworks/base/core/java/android/widget/AbsListView.java
c80ad99a33ee49d0bac994c1749ff24d243c3862 20-May-2014 Alan Viverette <alanv@google.com> TouchFeedbackDrawable is now RippleDrawable

Change-Id: I59f5f04b73089215c6320560556ac21beb03db06
/frameworks/base/core/java/android/widget/AbsListView.java
2897a6fdedd23efe96cd373886da78f1f1d18442 13-May-2014 Adam Powell <adamp@google.com> Tweak EdgeEffect

Make the effect less prominent/bulbous and not hit limits quite so
easily.

Change-Id: Ib8fdc29867276e6d0db447b60db0d7be3503d4d8
/frameworks/base/core/java/android/widget/AbsListView.java
e2e19391d422b6abb6abccb0e412debdf4a67716 12-May-2014 Yorke Lee <yorkelee@google.com> Fix magnitude of AbsListView nested scrolling offset

Change-Id: I9402fd4b788c9e93163974fbd4d89c200fe49581
/frameworks/base/core/java/android/widget/AbsListView.java
033655636e9b936244f2ee3ae28e1363506007d4 12-May-2014 Yorke Lee <yorkelee@google.com> Merge "Fix nested scrolling bugs in AbsListView"
43943d8bbc628c7d6e0c3afe49e43161cbaf8b12 08-May-2014 Yorke Lee <yorkelee@google.com> Fix nested scrolling bugs in AbsListView

* rawDeltaY should be offset by mMotionCorrection when passing it
to dispatchNestedPreScroll
* mScrollOffset should offset the next motion event, not the current
one

Bug: 14572732

Change-Id: Ib98f27d608b91706af4537e1cf9ad42adce121ea
/frameworks/base/core/java/android/widget/AbsListView.java
c501db9f44f7967961f0ba61a0b3b63055ac1190 08-May-2014 Adam Powell <adamp@google.com> New, inkier EdgeEffect visual style

Remove the two-part gradient and edge glow and replace it with a
circular ink-like style instead. This now follows the theme color
palette so that it can be more in tune with the app's overall visual
design.

Add API to EdgeEffect to specify a horizontal displacement for the
effect. This lets the larger middle section follow relevant touch
points.

Fix a bug that caused EdgeEffect pulls to stutter in ListView/GridView
as a result of some annoying state-fluttering.

Change-Id: Ief144b06bd9d3dbe85d3154585a703fa552b0808
/frameworks/base/core/java/android/widget/AbsListView.java
11d0069f9228400943e9932e3286babb2b5f4135 05-May-2014 Adam Powell <adamp@google.com> Fix a bug in AbsListView nested scrolling support.

Bug 14564701

Change-Id: I8cb854b987736e6f141610c8e6e77eb263a718db
/frameworks/base/core/java/android/widget/AbsListView.java
96d62aff0f97557bc15de98e145d9345288d060c 02-May-2014 Adam Powell <adamp@google.com> ListViews in ScrollViews and ScrollViews in ListViews

Dogs and cats, living together, mass hysteria!

Add support for nested scrolling to AbsListView, granting the ability
to both ListView and GridView.

Change-Id: Iae5c0518c5cebe41927720a7a27916ef13ca706e
/frameworks/base/core/java/android/widget/AbsListView.java
de399397947c5379c61a1003c017b96accbbf545 02-May-2014 Alan Viverette <alanv@google.com> Support for list selector ripple during arrow movement & drag

BUG: 14231774
BUG: 14230395
Change-Id: I23efbc88c3f05b3f323e47bcb34f55ff70ad6828
/frameworks/base/core/java/android/widget/AbsListView.java
d1ca75bffef070f62ab70ed514f7f91824f73cbc 28-Apr-2014 Alan Viverette <alanv@google.com> Quantum ripple for ListView selector

Also fixes row clipping and ripple alpha channel. Only supports showing
ripple on a single list row -- multiple rows for focus traversal and
drag-to-open are coming soon.

BUG: 13212804
BUG: 14257108
Change-Id: Ided15611dc868a513e8d2a994723cdf57b0d206c
/frameworks/base/core/java/android/widget/AbsListView.java
875f4c2918961fe34a5a74e7a54f970432977116 16-Apr-2014 Alan Viverette <alanv@google.com> Allow clamped bound position to be INVALID_POSITION

Change-Id: Idd392e41cb8df31e2933851fa6abd87fc3e2001b
/frameworks/base/core/java/android/widget/AbsListView.java
732ca4642f042d04fb2ebb091bb829e33a3de3de 08-Mar-2014 Alan Viverette <alanv@google.com> Update fast scroller item count after layoutChildren()

BUG: 12553181
Change-Id: I4ea1b45d08c153b0146868bf57884d6b8dde6245
/frameworks/base/core/java/android/widget/AbsListView.java
2ac93ae9194f84e18eafe07dc0304cfbb1297b00 28-Feb-2014 Alan Viverette <alanv@google.com> Don't smooth scroll if the adapter is null

BUG: 13235508
Change-Id: I1ca8a5675aa07b9a987e47a6eacdc0a1e4adde74
/frameworks/base/core/java/android/widget/AbsListView.java
cb23bce60ae8d2c75f8b2053a9da6b6b3880988e 28-Feb-2014 Alan Viverette <alanv@google.com> Refactor smooth scrolling sub-row calculation and clamp target

BUG: 13205615
Change-Id: If3757be35593a072ba6e92aa9da085330a12fd9d
/frameworks/base/core/java/android/widget/AbsListView.java
e6be9c78b55c46e221ebc3cd6b08f1be3588b1d7 27-Feb-2014 Alan Viverette <alanv@google.com> Always set item type on obtained ListView item views

If a view is scrapped without layout params being set, it will
incorrectly be recycled as item type 0.

BUG: 13212603
Change-Id: I2a42c04ec5065067ab260a0a8afb07207db729f6
/frameworks/base/core/java/android/widget/AbsListView.java
2546fcf5c9cf16f5ffe8dcee09f4830bcf5f7e33 26-Feb-2014 Alan Viverette <alanv@google.com> Constrain starting sub row to list bounds

BUG: 13077653
Change-Id: Id01da055e8502b1447519666eb439d8480437c6c
/frameworks/base/core/java/android/widget/AbsListView.java
462c2177f73754458821cfc0441a863c1fa527e4 24-Feb-2014 Alan Viverette <alanv@google.com> Check for ongoing detachment in AbsListView

BUG: 13167767
Change-Id: Ie1a828eadbb99daef46af77544f233fee09fd1bc
/frameworks/base/core/java/android/widget/AbsListView.java
dc8d7db35aae71ea747457cc1073fe8d60a8b277 22-Feb-2014 Alan Viverette <alanv@google.com> Merge "Fix transient state, accessibility focus in ListView, GridView"
00b982920222dd364e690d8856bad4caf5734ba5 21-Feb-2014 Alan Viverette <alanv@google.com> Fix scrolling when the bound target offset is too high

BUG: 13033556
Change-Id: I7a61548d3c604f004726117b40882f84ddf75337
/frameworks/base/core/java/android/widget/AbsListView.java
ff699570f62113b4df5b0efd74b9df8b9dbcd1a9 20-Feb-2014 Alan Viverette <alanv@google.com> Check item type before re-binding transient state views

BUG: 12701797
Change-Id: I180613cc342d24b63f80fd699937c7543c38fc20
/frameworks/base/core/java/android/widget/AbsListView.java
3e14162fc655e7a0dae61318911f3e29c07d0bf0 19-Feb-2014 Alan Viverette <alanv@google.com> Fix transient state, accessibility focus in ListView, GridView

Reverts portions of "Use transient state to preserve accessibility focus
in ListView," "Set transient state for focus container in ListView," and
"Restore A11y and keyboard focus positions after GridView layout."

Basically, using transient state here was bad and I should feel bad.

Replaces reverted code with better handling of accessibility properties
for scrapped views that are reused for the same stable ID.

BUG: 12701797
Change-Id: I7afcb2fe14413828435d1476b4f0f40108edd2dd
/frameworks/base/core/java/android/widget/AbsListView.java
bb9364279fd1f8ebd444b765ebea22af0199f34d 18-Feb-2014 Alan Viverette <alanv@google.com> Fix sub scroller bounds checking

BUG: 13031919
Change-Id: I6b569b50034fbe70441e11e56706faa9f2acfcbd
/frameworks/base/core/java/android/widget/AbsListView.java
23160f4fb911811759643bd3ef42e7b96abc1265 14-Feb-2014 Alan Viverette <alanv@google.com> Merge "Refactor AbsListView position scrollers for better abstraction"
d22db216fe7da01d70d4db3b3e76797aea64e956 14-Feb-2014 Alan Viverette <alanv@google.com> Refactor AbsListView position scrollers for better abstraction

The AbsListView sub-scroller knows nothing about layout. That's now
handled by ListView and GridView, with subclasses of AbsListView using
the default PositionScroller. Removes unnecessary (unreleased) APIs.

Also fixes a bounds check that was using the item position rather than
the child view position.

BUG: 13006641
Change-Id: I2adb0f15623e32295facf81f5ada974083ba03ce
/frameworks/base/core/java/android/widget/AbsListView.java
76769ae02e713f50816ee67ff618b748d95050a8 13-Feb-2014 Alan Viverette <alanv@google.com> Add selection properties to CollectionInfo, CollectionItemInfo

BUG: 12552541
Change-Id: Iae10abc02eeffea7c7fcb25020b343181e1e3482
/frameworks/base/core/java/android/widget/AbsListView.java
441b437b72dd92c1267c4f2cce5f28337e51cd2c 12-Feb-2014 Alan Viverette <alanv@google.com> Update smoothScrollToPosition to move faster for large offsets

Adds a method to AbsListView for translating from position to row
and vice-versa. Doesn't NPE this time.

BUG: 3434554
Change-Id: I6a731aedda6d951ad46322dbe87df00b8d34a22c
/frameworks/base/core/java/android/widget/AbsListView.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/AbsListView.java
c9c93e75ba80eee7309bd4adcdfa082747009ce7 21-Jan-2014 Adam Powell <adamp@google.com> Merge "Revert "Update smoothScrollToPosition to move faster for large offsets""
56032a37df89511c8d3b3b3c79818e2c86dedb92 21-Jan-2014 Adam Powell <adamp@google.com> Revert "Update smoothScrollToPosition to move faster for large offsets"

This reverts commit 203af24e4c2975c0b95fb4cc85ea03865e3b0e5b.

Change-Id: Ic56a9ded03eec188fb2834b42b60171f3cacb58b
/frameworks/base/core/java/android/widget/AbsListView.java
3abc47acf8ea2bea2f8a92a100bbceead2178914 16-Jan-2014 Alan Viverette <alanv@google.com> Merge "Update smoothScrollToPosition to move faster for large offsets"
4b95cc7ef7f1364799eba3bfa8830515282dcab7 15-Jan-2014 Alan Viverette <alanv@google.com> Quick fix for updating the FastScroller long list property

BUG: 12553181
Change-Id: I5305b0ec4ae8e069fc98d45dc3d5daaa0628ca79
/frameworks/base/core/java/android/widget/AbsListView.java
203af24e4c2975c0b95fb4cc85ea03865e3b0e5b 04-Jan-2014 Alan Viverette <alanv@google.com> Update smoothScrollToPosition to move faster for large offsets

Adds a method to AbsListView for translating from position to row
and vice-versa.

BUG: 3434554
Change-Id: I08459a6545cd02ac4eb5007c59bda1f3fece9e9f
/frameworks/base/core/java/android/widget/AbsListView.java
7999170276f18a5c5b9941ef65e4dff2ad7d9225 27-Dec-2013 quddusc <quddusc@google.com> am 6208ef25: am c609cb0d: am b889885e: am 34dbf7c3: am ad7b5993: Merge "docs: Fixed duplicate text in onScrollStateChanged() scrollState parameter description. Bug: 6804017" into klp-docs

* commit '6208ef25fd9b570770065edbfa71bbb2de8aa511':
docs: Fixed duplicate text in onScrollStateChanged() scrollState parameter description. Bug: 6804017
34dbf7c32327dc61a106b9a2f50e22cdb6cf6242 21-Dec-2013 quddusc <quddusc@google.com> am ad7b5993: Merge "docs: Fixed duplicate text in onScrollStateChanged() scrollState parameter description. Bug: 6804017" into klp-docs

* commit 'ad7b5993b579994c0b0838783bb8d0a94dffb1ee':
docs: Fixed duplicate text in onScrollStateChanged() scrollState parameter description. Bug: 6804017
9072110b8293ea3f933822df479c700d8bd9be4c 20-Dec-2013 quddusc <quddusc@google.com> docs: Fixed duplicate text in onScrollStateChanged() scrollState parameter description.
Bug: 6804017

Change-Id: I1e08fc7a9a5db85341c57f6ec04c434a94183cd0
/frameworks/base/core/java/android/widget/AbsListView.java
595115089fe3a55615b05c29352fc682d9a43f96 09-Dec-2013 Alan Viverette <alanv@google.com> Ensure transient state views are consistently temporarily detached

BUG: 12024471
Change-Id: I02659d65d664b3fd8991a0527bd23801db6f1a9d
/frameworks/base/core/java/android/widget/AbsListView.java
2a7de4eb8d4ee240908de09e28d58c5add61b540 01-Nov-2013 Svetoslav <svetoslavganov@google.com> am c896147c: am 9eae380b: am a9f28eea: Merge "Temporary detached views not properly reported to accessibility layer." into klp-dev

* commit 'c896147c96c020a923711b8a667baf2c881786c0':
Temporary detached views not properly reported to accessibility layer.
d4bdd6befa4e3cc29bedaaea3678c1075e0b7d24 01-Nov-2013 Svetoslav <svetoslavganov@google.com> Temporary detached views not properly reported to accessibility layer.

A view may be temporary detached. While in this state the view
state may change for which we fire accessibility events. Clients
use them to know when the view changed and what the change is.
However, detached views do not fire accessibility events.
Hence, a client may hold a stale AccessibilityNodeInfo since
the changes to its source view happened in a temporary detached
state.

bug:11388752

Change-Id: I9052700ca9195841cc2881b65c17f5615e6f71fb
/frameworks/base/core/java/android/widget/AbsListView.java
2ea312c1bf5f618f4877806b07e0fb2aa4541e6f 01-Nov-2013 Alan Viverette <alanv@google.com> Merge "Allow styling of fast scroll decorations, add default styles"
8636ace69640566768f89c2d92d2851ff064a2e9 31-Oct-2013 Alan Viverette <alanv@google.com> Allow styling of fast scroll decorations, add default styles

Also fixes bad old-style thumb 9-patches.

BUG: 11030706
Change-Id: I51abba952acf87586449fbda329212b435d1d6df
/frameworks/base/core/java/android/widget/AbsListView.java
5d565faab21324862fa24490f116424e1b668b1d 30-Oct-2013 Alan Viverette <alanv@google.com> Restore A11y and keyboard focus positions after GridView layout

Implementation copied verbatim from ListView. Moved a common helper
method into AbsListView.

BUG: 11438088
Change-Id: Iae44a8f3743669f63a67fd20f22dfc0486a1d063
/frameworks/base/core/java/android/widget/AbsListView.java
d33c97e2de9e900c9ba59119b2a38d78e2f709f5 14-Oct-2013 Adam Powell <adamp@google.com> am 5d96f61a: am c12f46eb: am 5db566f1: Fix updating fast scroll state for data set changes

* commit '5d96f61a92de034cb736fa831067759809ca83f9':
Fix updating fast scroll state for data set changes
5db566f16a1b8f36e84a9be00cde40482d48466b 14-Oct-2013 Adam Powell <adamp@google.com> Fix updating fast scroll state for data set changes

Only looking for old/new count changes is incomplete with the current
state of things. The observer's onChanged method will update this in
some cases, stomping the different values needed to trigger a fast
scroller update. Also update the fast scroller if the data change flag
is set.

Also fix the positioning of the legacy text overlay.

Bug 11188512

Change-Id: I35b3915ce49f8494c6d82f6be6d6df7169deddd7
/frameworks/base/core/java/android/widget/AbsListView.java
973d778b27eaeb289032f2d4479ac0a5349592e1 02-Oct-2013 Alan Viverette <alanv@google.com> am f58462f0: am 0d5fe0dd: am 4c6b2900: Merge "Clear accessibility focus from recycled views when needed" into klp-dev

* commit 'f58462f0c03c274ba829d74ecfe4c5e37a647719':
Clear accessibility focus from recycled views when needed
4c6b29006f2e6605da18ff8ad9acba2594ec78a2 02-Oct-2013 Alan Viverette <alanv@google.com> Merge "Clear accessibility focus from recycled views when needed" into klp-dev
69fdba4c383bb03eddac109aaf6429a81d426cad 02-Oct-2013 Alan Viverette <alanv@google.com> am ed2cfdbf: am 6f07cc84: Merge "Rebind transient state views when available" into klp-dev

* commit 'ed2cfdbf42203463cffbbc7184d93af6187c60fc':
Rebind transient state views when available
f9736d3b9aca08433382c18eb9157ab52c55ec2f 30-Sep-2013 Alan Viverette <alanv@google.com> Rebind transient state views when available

If a view is obtained, it is guaranteed to represent the same data.

BUG: 10901462
Change-Id: Ice2b3508ae8cf444f006c084e6b7a3e79373723b
/frameworks/base/core/java/android/widget/AbsListView.java
1e51cc7e71d30626a8e7f4311883fed8ac3107b7 27-Sep-2013 Alan Viverette <alanv@google.com> Clear accessibility focus from recycled views when needed

BUG: 10913323
Change-Id: I99c20269b4f5e491685f75c2e3bbb36d541a5525
/frameworks/base/core/java/android/widget/AbsListView.java
51d6615af498c727d0bc5d538bfc200f8f6aa703 25-Sep-2013 Adam Powell <adamp@google.com> am 8dcc0e7d: am 7ef9b612: Merge "Fix monkey bugs in ListView" into klp-dev

* commit '8dcc0e7dfb05a50ca306942037015244060862b8':
Fix monkey bugs in ListView
31986b5b696c399b356c8819cb581441027bef36 24-Sep-2013 Adam Powell <adamp@google.com> Fix monkey bugs in ListView

* Don't run item click listeners as part of touch mode reset if the
ListView is being detached from its window. Some calling code makes
assumptions around this.

* Remove redundant state tracking for window attachment from
AbsListView now that we have View#isAttachedToWindow(). The timing
of View's mechanism is closer to what we want here anyway -
subclasses calling super.onDetachedFromWindow() as the first line of
an overridden onDetachedFromWindow() method will see the window as
being in a detached state while the rest of the method runs,
resulting in the behavior described in the first bullet point above.

Bug 10834897

Change-Id: Ic9fdff3c5cfc4996361a7fb1a863547b4d1a2c9c
/frameworks/base/core/java/android/widget/AbsListView.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/AbsListView.java
23f31a1c4ed313790921427df82f36960d9e9706 09-Sep-2013 Alan Viverette <alanv@google.com> Merge "Only activate FastScroller when it's needed" into klp-dev
b9f2722f6f32b275731fc7e4aeb367cdf9c30dd3 07-Sep-2013 Alan Viverette <alanv@google.com> Only activate FastScroller when it's needed

Removes code that was incorrectly handling ACTION_DOWN when the
host ListView started intercepting events for its own use. Fixes
handling of short lists and changes resulting from toggling the
FastScroller enabled state.

BUG: 10651874
Change-Id: I7b088b46d00a372a0a55291db892cc059f1aed20
/frameworks/base/core/java/android/widget/AbsListView.java
1487466dc2ce14cccf0ff2bd2f824238aaa0044e 19-Jul-2013 Adam Powell <adamp@google.com> Add View#cancelPendingInputEvents API

This API allows an application to cancel deferred high-level input
events already in flight. It forms one tool of several to help apps
debounce input events and prevent things like multiple startActivity
calls, FragmentTransactions, etc. from executing when only one was
desired since it's otherwise not desirable for things like click
events to fire synchronously.

Change-Id: I60b12cd5350898065f0019d616e24d779eb8cff9
/frameworks/base/core/java/android/widget/AbsListView.java
ba299063348e8396c1ce63c8fcbf9ee69c5be266 04-Sep-2013 Alan Viverette <alanv@google.com> Ensure list scrolling API is in parity with view scrolling API

Change-Id: Icaf533c0085b80f3c52cc026e0da7468698724f9
/frameworks/base/core/java/android/widget/AbsListView.java
5b2081dc41cccd76780a2cb4e9a973505c13446c 28-Aug-2013 Alan Viverette <alanv@google.com> Implement new accessibility APIs in lists, text view

Sets contentInvalid for TextViews with errors, sets collection
and item properties in AbsListView, GridView, and ListView.

BUG: 10391326
Change-Id: I91191c8ce1e10a1112f74215e30b26349396344b
/frameworks/base/core/java/android/widget/AbsListView.java
86f5e8956df3309eb212b66657da4d0bd4fe5773 16-Aug-2013 Alan Viverette <alanv@google.com> Update documentation for FastScroller and SectionIndexer

BUG: 3341285
Change-Id: I0607031576eaaecaebe848437cfbacd0d1a4b161
/frameworks/base/core/java/android/widget/AbsListView.java
b339cc5bcbafbc5b9cf184c6f87b4eb466386ea6 12-Aug-2013 Alan Viverette <alanv@google.com> Not create context menu when mouse right click outside list/grid items

Even if mouse right click outside of list/grid items, a context menu
is made. But there is no item of the list, so a context menu info is
null. Then, NullPointerException happens at onCreateContextMenu()
using a context menu info.
For fixing the problem, check mTouchMoude and mMotionPosition to
distingusih where is clicked, on a list item or not, before
performButtonActionOnTouchDown() which makes a context menu.

Manually merged from AOSP contribution.

Change-Id: I778be73df36abbfd4ba9534d8e7a1ece6844ed40
Author: henrik baard <henrik.baard@sonymobile.com>
/frameworks/base/core/java/android/widget/AbsListView.java
26bb253b4001b7d4d876656b0c6bd11b6aab4131 09-Aug-2013 Alan Viverette <alanv@google.com> Fix padding adjustment for scrollbars in View, FastScroller

BUG: 10224791,10248282
Change-Id: Ia89d2cbea163b7cad567ea37161552c1cfd66045
/frameworks/base/core/java/android/widget/AbsListView.java
fb66415655c288be2ac2078cd0a5e20c7040266e 08-Aug-2013 Alan Viverette <alanv@google.com> Fix initial FastScroller enabled state, fix padding during layout

BUG: 10182784
Change-Id: I7f1ed029b68a1e6db6af0dc21e23aebca01bef31
/frameworks/base/core/java/android/widget/AbsListView.java
39bed695cecdbefc9fae785692fe468cd9007c35 08-Aug-2013 Alan Viverette <alanv@google.com> Fix FastScroller regression for non-UI threads

Previously it was safe to call setFastScrollEnabled() and
setFastScrollAlwaysVisible() off the UI thread. After switching
FastScroller to use an Overlay, these methods stopped working.

This change ensures that all direct interaction with FastScroller
happens on the thread that created the host AbsListView.

BUG: 10210504
Change-Id: Ib6d9bd9212965420c0de39546652e3bc2d32ff8b
/frameworks/base/core/java/android/widget/AbsListView.java
2f3317a06dd4d39298dc3fd2bb8a4d36a5762e03 07-Aug-2013 Alan Viverette <alanv@google.com> Add API for scrolling AbsListView by a pixel amount

Change-Id: Ib0fc48879991fd467242d8dc337db419edb12acf
/frameworks/base/core/java/android/widget/AbsListView.java
d248b0a4de69f290194970826dd795497ed9de9e 30-Jul-2013 Jean-Baptiste Queru <jbq@google.com> am c2314cf5: am e700a36e: Merge "Update getCheckedItemPositions() documentation"

* commit 'c2314cf5f4efa2cc767e0069dcc2a67e12d7cd20':
Update getCheckedItemPositions() documentation
e700a36e4041a921f880a7c3c5ec6ce96c955a92 30-Jul-2013 Jean-Baptiste Queru <jbq@google.com> Merge "Update getCheckedItemPositions() documentation"
a709b37eab535180f41d2bb9d029244aa84ee1f6 25-Jul-2013 Alan Viverette <alanv@google.com> Show FastScroller thumb on mouse-over

BUG: 9484233
Change-Id: I99a37e6d582e42b9a0fae4a0fc2d4348419bfa35
/frameworks/base/core/java/android/widget/AbsListView.java
82ff241fd6a82843a8d9d87a1a01c7315079e3d4 23-Jul-2013 Cyril Mottier <cyrilmottier@gmail.com> Update getCheckedItemPositions() documentation

getCheckedItemPositions()'s documentation previously mentioned the
returned SparseBooleanArray was only containing checked item positions
(i.e. get(int position) always returning true). In practice, this is
wrong, because getCheckedItemPositions() returns mCheckStates which
basically contains all key-value mappings that have been used. As a
consequence if the item at position p is checked and unchecked, the
returned SparseBooleanArray will contain a (p, false) mapping.

Another option could be to delete all keys having a false value.

Change-Id: I15f8fc2a1ba3f1501af126c272b827402cfd8b14
/frameworks/base/core/java/android/widget/AbsListView.java
0f80f4b584d0a0c5e3e9a3d72db788d2c348e431 22-Jul-2013 Michael Wright <michaelwr@google.com> Merge "Take advantage of KeyEvent.isConfirmKey"
24d36f592224d1316165f579bb0937df0bf42f7c 20-Jul-2013 Michael Wright <michaelwr@google.com> Take advantage of KeyEvent.isConfirmKey

Change-Id: I2925c624338a5c622a7b3fef05b62099465b6389
/frameworks/base/core/java/android/widget/AbsListView.java
d44696c4cfdda1e7e4e10a21b68f54ce5a4a459d 18-Jul-2013 Alan Viverette <alanv@google.com> Set transient state for focus container in ListView

BUG: 9860185
Change-Id: I0c7035e5992c56110a0cc5c94aa778bbb999deea
/frameworks/base/core/java/android/widget/AbsListView.java
447cdf2c069a05d9f8b5aaa4269be43e8f5e1d89 16-Jul-2013 Alan Viverette <alanv@google.com> Add disabled state to FastScroller.

BUG: 9759511
Change-Id: I555f501b33029665d94a493ee5cab5741c843328
/frameworks/base/core/java/android/widget/AbsListView.java
5fade8c69aef621312232ef0647502d7a63990b9 11-Jul-2013 Romain Guy <romainguy@google.com> Trace list view items management

Change-Id: If43ce115679c2bcacad26d6f59e3bfb655abff6e
/frameworks/base/core/java/android/widget/AbsListView.java
3d15a2b8f43f5b184f8fdcd3661711111bcf4674 26-Jun-2013 Alan Viverette <alanv@google.com> Minor ListView clean up. Exposes View.pointInView() as hidden API.

Change-Id: Ia628f8438fac5af2471efd8558c8876fae3dafb0
/frameworks/base/core/java/android/widget/AbsListView.java
0ebe81e8b1f2b9db8d41b72a6dae8d6848b51cc5 22-Jun-2013 Alan Viverette <alanv@google.com> Implement FastScroller as an animated overlay.

Bug: 9372090
Change-Id: I46cb67ef0482a4c8f721248d5f5e2e692144c3a1
/frameworks/base/core/java/android/widget/AbsListView.java
f38fd8784487c72983b061fb41b2aef656ccf265 10-Jun-2013 Romain Guy <romainguy@google.com> am 7a6e1297: am 8d8fc469: Merge "Don\'t orphan footers with transient state Bug #8725945" into jb-mr2-dev

* commit '7a6e129759672f0c1b0ce462d389c0f469e7348f':
Don't orphan footers with transient state Bug #8725945
b7e0f7942b97c1f88f4aa2338cbf3623fdfdad97 08-Jun-2013 Romain Guy <romainguy@google.com> Don't orphan footers with transient state
Bug #8725945

Selecting text in an EditText causes the View to have transient
state. This would in turn cause the View to be removed from its
ListView parent. When removed, the EditText would lose its
AttachInfo, causing all sorts of problems. Headers and footers
must not be removed, only detached. This is the part of the fix
in AbsListView.

Fixing AbsListView triggered a second bug: when a View is removed
from the Window manager, it would keep its parent assigned, thus
making it impossible to add it again to the window manager. When
a ViewRootImpl goes through doDie(), it must set its content view's
parent to null to properly cleanup.

Change-Id: I0489daa74f8f7fcf85526f0928f8925ec30d4f42
/frameworks/base/core/java/android/widget/AbsListView.java
f69913056b8c6000ff0306573a97971702e8d35a 06-Jun-2013 Romain Guy <romainguy@google.com> Remove unnecessary allocations

Change-Id: Ia561a0a312ca2737d5afa742184f5392bb2f29a3
/frameworks/base/core/java/android/widget/AbsListView.java
74ded29bd15a80bfc12250520f9595cc1674d4e7 04-Jun-2013 Alan Viverette <alanv@google.com> Clear pressed state when moving outside list bounds.

Bug: 8724943
Change-Id: Ife40ad672c161fef76e62dfd3c7f7fb3b08c3648
/frameworks/base/core/java/android/widget/AbsListView.java
8fa327a2fc1af466d59e7fb4969905865aa99a17 31-May-2013 Alan Viverette <alanv@google.com> Cleaning up AbsListView, fixing annotations and updating API calls.

Change-Id: I87ce7714d0cc9e10a1466f474b828f2a27c57e15
/frameworks/base/core/java/android/widget/AbsListView.java
e7f30dc14dce081058d6739f71ae99abe757fc48 31-May-2013 Alan Viverette <alanv@google.com> Split AbsListView.onTouchEvent into multiple methods for readability.

Change-Id: Iaa28b70f9d708857e64c3d857c65aa075ab4208a
/frameworks/base/core/java/android/widget/AbsListView.java
f4bf0ae2a7c2d9d92c5c8abdb82baa53b4c9ccda 21-May-2013 Dianne Hackborn <hackbod@google.com> New ArrayMap class.

This is a new kind of key/value mapping that stores its data
as an array, so it doesn't need to create an extra Entry object
for every mapping placed in to it. It is also optimized to reduce
memory overhead in other ways, by keeping the base object small,
being fairly aggressive about keeping the array data structures
small, etc.

There are some unit and performance tests dropped in to some
random places; they will need to be put somewhere else once I
decided what we are going to do with this for the next release
(for example if we make it public the unit tests should go in
to CTS).

Switch IntentResolver to using ArrayMap instead of HashMap.

Also get rid of a bunch of duplicate implementations of binarySearch,
and add an optimization to the various sparse arrays where you can
supply an explicit 0 capacity to prevent it from doing an initial
array allocation; use this new optimization in a few places where it
makes sense.

Change-Id: I01ef2764680f8ae49938e2a2ed40dc01606a056b
/frameworks/base/core/java/android/widget/AbsListView.java
f1cfdcee273a2313f7483582332e2afc2cc62c70 21-May-2013 Svetoslav Ganov <svetoslavganov@google.com> am 5315953b: am 78a4630e: Merge "Taking into account data change for AbsListView when prefetching node infos." into jb-mr2-dev

* commit '5315953b86ee7ca29756504535e124b053286623':
Taking into account data change for AbsListView when prefetching node infos.
50776863a2a2ed6e4015edc60bacd4f562a907ee 18-May-2013 Svetoslav Ganov <svetoslavganov@google.com> Taking into account data change for AbsListView when prefetching node infos.

We are prefetching accessibility node infos to minimize the number of IPC
calls when an accessibility service introspects the screen. It is however,
possible that the view we are prefetching is a child of an AbsListView whose
adapter changed its data but the AbsListView still did not perform a layout
pass to sync its children with the new adapter state. This may lead to an
exeption when trying to query for the state of a child's position. If the
data of the adapter is changed and the layout pass still not performed,
we return null for the AbsLIstView's children. When the layout pass
completes we already notify the accessibliity layer so it will be able to
refetch the children of the AbsListView.

bug:8433433

Change-Id: I56313c721aef3848b15fad50027d068ba1d291f7
/frameworks/base/core/java/android/widget/AbsListView.java
6f3a6a453ac55ac2974d32ead4615746594382c8 11-May-2013 Svetoslav <svetoslavganov@google.com> am 1e4c6589: am b3c2b21b: Merge "Accessibility should not query for list items when data set changed." into jb-mr2-dev

* commit '1e4c6589941e459871eed6e9d4675b05d977325c':
Accessibility should not query for list items when data set changed.
5b578daac9cea174b15fcd13528270270aadd8a2 08-May-2013 Svetoslav <svetoslavganov@google.com> Accessibility should not query for list items when data set changed.

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
/frameworks/base/core/java/android/widget/AbsListView.java
29219d963d1ec29ddea3e5814eb82c2aeaccc1ac 17-Apr-2013 Craig Mautner <cmautner@google.com> Steady improvement to multi stack.

- Fix back button behavior with two stacks. Stopping activities were
held in that state indefinitely. This change causes IDLE_NOW_MSG to
be sent immediately for the last activity in a stack.

- Touch in non-focused stack was being ignored because of focus tests
in AbsListView.

- Change the focused stack when the activity focus changes. Renamed
mMainStack to mFocusedStack to reflect this.

- Resume all top stack activities when resuming.

- Assign intent task to ActivityRecord if it doesn't have a task.
Fixes bug 8433463.

Change-Id: I8d3c806234511697bc209ab99890730ffa514d20
/frameworks/base/core/java/android/widget/AbsListView.java
3a1f1e5beaceeca5a53353fc9896202a9cfabf91 17-Apr-2013 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #8629386 FastScroller is on the wrong side when switching to Hebrew in a RTL enabled app

- in AbsListView, force setScrollbarPosition() when RTL properties change
- in FastScroller, invalidate the correct rectangle when in RTL mode and in STATE_EXIT

Change-Id: Ie9fe4f826e179eb993e443d10e171b9dda3b6f3f
/frameworks/base/core/java/android/widget/AbsListView.java
bd1dd0d51ae07f4fc5de5ec0004e7e40ed205022 10-Apr-2013 Adam Powell <adamp@google.com> Fix a monkey bug with AbsListView data set observers

Several conditions can cause an AbsListView's data set observer to be
removed and nulled out. If for some reason the view receives duplicate
onDetachedFromWindow events this could cause AbsListView to attempt to
unregister a null observer. Skip this unregister process if this
happens.

Bug 7088152

Change-Id: Ib0c630d1ee598640512023e4ef158f01e3ed474d
/frameworks/base/core/java/android/widget/AbsListView.java
a2230e18563833b9a0672067fe26a095c8847dd0 18-Mar-2013 Chet Haase <chet@google.com> Fix bug with transientState for listviews without stable IDs

This is the other part of a fix with transient state. A layout container
may be out of sync with its adapter during a data change. When the transient
state views are managed by their positions, and these positions may not match
between the container and the adapter, then the views will not be updated
correctly on the screen (though the underlying data will still be correct).

An earlier fix addressed the problem when the adapter has stable IDs (managing
the transient views by their IDs instead of their positions). This fix addresses
the other part of the problem, simply avoiding managing via positions during
a data change.

Issue #8254775 View.setHasTransient state has side-effects when deleting content in ListView

Change-Id: I0fe1692a1507a042180f8a14a8ef2d0c6946a061
/frameworks/base/core/java/android/widget/AbsListView.java
728713258ffef4df053b85e0a3488334cbcba24c 27-Feb-2013 Chet Haase <chet@google.com> DO NOT MERGE: ListView transient state fix

ListView child views with transientState (setHasTransientState(true)) are not
handled correctly when the data set changes, such as when an item is added
or removed. The problem is that the transient views are cached by their
position, but this position is out of sync between the ListView and the adapter
until the ListView layout process is complete.

A better way, which unfortunately only works on ListViews with stable IDs, is
to cache the views by their itemID instead, and to use that ID to determine when
and where to reuse/retrieve a transient view during the ListView layout.

Issue #8254775 View.setHasTransient state has side-effects when deleting content in ListView

Change-Id: I2fc25e71ed6655af30b9c3f47fdf014e9b667616
/frameworks/base/core/java/android/widget/AbsListView.java
80943d8daa6ab31ab5c486d57aea406aa0730d58 02-Jan-2013 Svetoslav Ganov <svetoslavganov@google.com> Adding UI test automation APIs.

This change adds APIs support for implementing UI tests. Such tests do
not rely on internal application structure and can span across application
boundaries. UI automation APIs are encapsulated in the UiAutomation object
that is provided by an Instrumentation object. It is initialized by the
system and can be used for both introspecting the screen and performing
interactions simulating a user. UI test are normal instrumentation tests
and are executed on the device.

UiAutomation uses the accessibility APIs to introspect the screen and
a special delegate object to perform privileged operations such as
injecting input events. Since instrumentation tests are invoked by a shell
command, the shell program launching the tests creates a delegate object and
passes it as an argument to started instrumentation. This delegate
allows the APK that runs the tests to access some privileged operations
protected by a signature level permissions which are explicitly granted
to the shell user.

The UiAutomation object also supports running tests in the legacy way
where the tests are run as a Java shell program. This enables existing
UiAutomator tests to keep working while the new ones should be implemented
using the new APIs. The UiAutomation object exposes lower level APIs which
allow simulation of arbitrary user interactions and writing complete UI test
cases. Clients, such as UiAutomator, are encouraged to implement higher-
level APIs which minimize development effort and can be used as a helper
library by the test developer.

The benefit of this change is decoupling UiAutomator from the system
since the former was calling hidden APIs which required that it is
bundled in the system image. This prevented UiAutomator from being
evolved separately from the system. Also UiAutomator was creating
additional API surface in the system image. Another benefit of the new
design is that now test cases have access to a context and can use
public platform APIs in addition to the UiAutomator ones. Further,
third-parties can develop their own higher level test APIs on top
of the lower level ones exposes by UiAutomation.

bug:8028258

Also this change adds the fully qualified resource name of the view's
id in the emitted AccessibilityNodeInfo if a special flag is set while
configuring the accessibility service. Also added is API for looking
up node infos by this id. The id resource name is relatively more stable
compared to the generaed id number which may change from one build to
another. This API facilitate reuing the already defined ids for UI
automation.

bug:7678973

Change-Id: I589ad14790320dec8a33095953926c2a2dd0228b
/frameworks/base/core/java/android/widget/AbsListView.java
847be7445e15851c460bf381d7083c443d8d6144 12-Dec-2012 Adam Powell <adamp@google.com> Fix regression in ListView click handling

Regression caused by patch a607223f34

If an item click handler results in the ListView becoming detached
from the window, the performClick runnable could be executed twice.
Null out the mTouchModeReset runnable before running the click handler
so that it is not run by the detach handler.

Change-Id: I2fab60232027bb4876f9912088e0ffb9b17d308c
/frameworks/base/core/java/android/widget/AbsListView.java
a607223f34d436619132597bc0174223a6611bbb 07-Dec-2012 Sangkyu Lee <sk82.lee@lge.com> Ensure running mTouchModeReset when AbsListView is detached

mTouchModeReset should be executed when AbsListView is detached from window.
If not, when the AbsListView is re-attaced to window,
the child can retain a pressed state.

You can see this problem easily when you double-touch an item of
option menu very quickly.

Change-Id: I5aaa1fd5b95847efb2f5f1b5ec7cabe8eb85b237
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
/frameworks/base/core/java/android/widget/AbsListView.java
f3b8e6fe7825bf31e7824041325ddedc0bd41bae 04-Oct-2012 Adam Powell <adamp@google.com> Fix regression in AbsListView CHOICE_MODE_SINGLE

Earlier patch reversed a few lines of code that allowed deselection of
the currently selected item in CHOICE_MODE_SINGLE. Put it back the way
it was.

Bug 7289436

Change-Id: Ia1c5f3238d2faa3dd79e474851333fda90978d3c
/frameworks/base/core/java/android/widget/AbsListView.java
5bb4e29aba21bf52873bc242102cdfabd9ec4aaa 03-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7274075 Non-functional CheckedTextView on Nexus 7 Jelly Bean 4.1.1

This regression has been introduced by this Change: Ia846de16bbc54f0729608259aa4b530da9404245

- in CHOICE_MODE_SINGLE you need to clear the checked states before doing anything
- rename variables for better readability too

Change-Id: I89b4390e5ebb192ca280fea2c06f991b537a2870
/frameworks/base/core/java/android/widget/AbsListView.java
a6a4cbc18f7e5a3831d787d3f398e02c5eae6512 27-Sep-2012 Adam Cohen <adamcohen@google.com> Fixing Keyguard widget click handling (issue 7179972)

Change-Id: I2b268d08f5aff403a04db53c357fa45a6cb8d490
/frameworks/base/core/java/android/widget/AbsListView.java
e181bd9b5e6a3e5382a1ff3c40b9ce2cb43c7971 25-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix AbsListView to correctly retain its state if not layed out.

This covers a hole where if the list view restores its state and
then is asked to save its state before its layout happens, the
original state is lost. Instead we just store that original state.

Also tweak FragmentManager to make sure an inactive fragment can
not have its state moved up out of CREATED.

Bug #7232088: ListView saved state being lost in some cases

Change-Id: I5b40f37c259c7bcbe17dd1330016f9531f1b5534
/frameworks/base/core/java/android/widget/AbsListView.java
b72fe7a2635906d6244efedfe302c2c46e564803 28-Aug-2012 alanv <alanv@google.com> Don't overwrite accessibility delegates in AbsListView items.

Bug: 6856579
Change-Id: I2963edcefdc0dd5e1413b57858e6f319904a269d
/frameworks/base/core/java/android/widget/AbsListView.java
a798170f2abe198f806b12dd904830bc25257525 24-Aug-2012 Adam Powell <adamp@google.com> More detailed error reporting for AbsListView/CHOICE_MODE_MULTIPLE_MODAL

Throw a more descriptive exception when an app has not set a
multi-choice mode listener and an item becomes checked.

Change-Id: Ib682fd7a467a3751bb81dacbd22676aaa4407d36
/frameworks/base/core/java/android/widget/AbsListView.java
94169a97fd8e553d8e46b6191d52b2b2f8f368e2 26-Jul-2012 Adam Cohen <adamcohen@google.com> am 956aefb3: am 26ed04ba: Merge "Caching the FixedSizeRemoteViewsCaches across rotation" into jb-dev

* commit '956aefb3c54c5b5a33b7faca8ce5246981995f88':
Caching the FixedSizeRemoteViewsCaches across rotation
335c3b681bf1c118d9bf22d1a508c87173632ec6 25-Jul-2012 Adam Cohen <adamcohen@google.com> Caching the FixedSizeRemoteViewsCaches across rotation

-> This prevents unnecessary flashing of collection widgets on rotation

Change-Id: Id29d4952aa640ca90b31dc3e02e2402cc0fb84d3
/frameworks/base/core/java/android/widget/AbsListView.java
27e2da7c171afa39358bbead18fbe3e6b8ea6637 03-Jul-2012 Svetoslav Ganov <svetoslavganov@google.com> Remove the accessibility focus search code.

1. In JellyBean we have added some APIs to search for next accessibility
focus in various directions and set accessibility focus from hover.
However, we have decided that there is not clean answer for how this
should behave and the APIs were hidden. Now the accessibility service
is responsible for that. The unused code is now taken out.

2. This patch also takes out the hidden attribute accessibiligyFocusable
since we moved the responsibility for implementing focus search strategy
to accessibility services and we did not need that for Jellybean which
is a good sign that this is not needed. I general this is one less thing
for an app developer to worry about. We can add this if needed later.

bug:6773816

Change-Id: I0c858d72c93a2b7ff1f8f35a08d33ec4b9eb85fd
/frameworks/base/core/java/android/widget/AbsListView.java
913bf80416a81f2783376939e7ad0b956975b05c 10-Jun-2012 Chet Haase <chet@google.com> Merge "Don't allow apps to request scrolls to out-of-bounds positions" into jb-dev
0061e16e538f800ff995ad05bc21cc7728f160e2 09-Jun-2012 Chet Haase <chet@google.com> Don't allow apps to request scrolls to out-of-bounds positions

An app was requesting smooth scrolling to a view position beyond the
number of items in the list. This caused our setup logic to execute on
every frame, waiting for the target view to be added.

This fix clamps the requested target position to the number of items
actually in the list.

Issue #6572175 Messaging: Sometimes conversation doesn't scroll when focus is brought to the compose field

Change-Id: I23707aeb213e67af4297713a03c2f5b446c8e2b6
/frameworks/base/core/java/android/widget/AbsListView.java
28048d011cb0887cd641977ca37e5f2fde04d191 07-Jun-2012 Adam Powell <adamp@google.com> Protect against bogus input for ListViews

Guard against cases where ListView might receive touch events while
detached.

Update ListMenuPresenter to dispatch a data set change when the
backing menu is changed.

Bug 6543282

Change-Id: If2fb9b6aa3cf4a1b7070a7cd0de0edf0fc2f4cca
/frameworks/base/core/java/android/widget/AbsListView.java
3016c1ae6a05a67106301fc5ffd7779338288e65 05-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> NullPointerException in AbsListView.focusSearch().

1. One of the loops was using the last visible position
as its end boundary as opposed to the child count
minus one.

bug:6610451

Change-Id: I600545ca3f64d1e982f909f893e5d34570ec5c8b
/frameworks/base/core/java/android/widget/AbsListView.java
30384653d2fc4d497ab3124c998c7d516f1bd25f 04-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Focus search in AbsListView returns invisible views." into jb-dev
b1fa98bb1c30bdfafbe3f251e2f849ce2cd49106 04-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Focus search in AbsListView returns invisible views.

1. The focus search algorithm considers only visible
views, specifically when adding focusables. Since
AbsListView implements a custom focus search strategy
for better user experience it also has to return
only views that are visible.

bug:6543878

Change-Id: I6207c29402e4ac6190c1e65d042e04449aa75ef8
/frameworks/base/core/java/android/widget/AbsListView.java
b552d89e901225e2b6aa2602e874ab984c638415 02-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Double input focus and focus movement in list not working.

1. The clearFocus routine in ViewGroup was clearing the pointer
to the descendant which has focus after calling clear focus
on that child. However, currently clearing the focus of a view
causes the view that loses focus to try to give the focus to
the first focusable which potentially sets the pointer to the
child that has input focus in the ViewGroup but the ViewGruop
essentially clears that pointer. This resulted in having two
focused views at the same time in some cases.

2. AbsListView was not calling the super implementation of add
focusables if the focus type was not accessibility.

bug:6559819

Change-Id: I478dfed000b5de3f9b15e12eb82aa3d34c2301e4
/frameworks/base/core/java/android/widget/AbsListView.java
a90e4512ab81dcd8cdbefdd2ffa0de55fca1caa3 02-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Calling the correct method when adding accessibility focusables.

1. Since we added explicit accessibility focusable attribute when
adding focusables views that do so should call this method. Some
views were not updated to do so.

bug:6581924

Change-Id: Id64c0b2d76e5269ebf3fbe17203e73b174bdb843
/frameworks/base/core/java/android/widget/AbsListView.java
00ca7a88271916f6022b2aa16acfb415fc1b5247 01-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Accessibility focus traversal of lists inconsistent." into jb-dev
2dda468606fa4e6b4b6b44d38f42e06cb31e2785 01-Jun-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus traversal of lists inconsistent.

1. Now the list traversal forward is the exact opposite
of the traversal backward.

2. The focus search starts from the view against which
the call is made as opposed to the one that has focus.
This is now consistent with the rest of the focus search.

bug:6537747

Change-Id: Ida6a696636a3099531155fcbff256f71264f5008
/frameworks/base/core/java/android/widget/AbsListView.java
325ea8deb86e09317683523625cf74666cd30c11 31-May-2012 alanv <alanv@google.com> Don't mark list headers or invalid items as disabled.

Bug: 6581689
Change-Id: I4088cdc7e785e60fe7e30807cdf045131584f29d
/frameworks/base/core/java/android/widget/AbsListView.java
161abf3d44feebb8462f7d0cbee81574d666234b 24-May-2012 Adam Powell <adamp@google.com> Fix a bug with deferred position scrolling in lists while data changes
are pending

Save the pending position scroll until the data change is actually
serviced before posting it to run. This avoids handler loops on
GONE subtrees or when the view is detached.

Bug 6547649

Change-Id: Iab108cfcb7dd11ece703762d311a5f5985f38c3b
/frameworks/base/core/java/android/widget/AbsListView.java
084c63eb6a44fdab7507f828062a2c4a8872f8c8 22-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Fix accessibility actions in AbsListView." into jb-dev
4ce106f5cff5670bf1aae4190612dc8e972f5c28 22-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Fixing some minor issues in accessibility focus." into jb-dev
f76a83cfcf32402edb78666733b5ebf9ec6ac2e2 22-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Fixing some minor issues in accessibility focus.

1. Now accessibility focus does not drag input focus and
vice versa. Having the two focuses chase each other
can lead to some pathological cases. For example, a
container is input focusable and manages input focus
for its children i.e. as soon as it gets input focus
it sets input focus to a child. Now assume input and
accessibility focus are on a child and focus search
finds the parent to take accessibility focus, now
putting accessibility focus to the parent will put
input focus there and the parent will put input focus
to the child which as a result will put accessibility
focus there, thus resulting in traversal loop.

bug:6522900

2. Fixed asymmetrical behavior of accessibility focus search
for AbsListView.

bug:6520016

3. Fixed accessibility focus search getting stuck in an
empty AbsListView.

bug:6520049

Change-Id: Ia26e5be7b5a9f340f873861ff466c787467b98dc
/frameworks/base/core/java/android/widget/AbsListView.java
13b907353f18215b52b5ceda24bbf520d91d72a1 21-May-2012 Romain Guy <romainguy@google.com> Remove unused, obsolete debug code

All these features have either been abandonned and left un-maintained
for years or can be replaced by systrace.

Change-Id: I42e4579a8078744047e5fe08a7a15254970b09bc
/frameworks/base/core/java/android/widget/AbsListView.java
9c3e0e68260fe50456996d75304b73054cbde94a 19-May-2012 alanv <alanv@google.com> Fix accessibility actions in AbsListView.

Check adapter for position enabled state, check selection index.

Bug: 6508142
Change-Id: If25a133533a7316ef7eba8761522bd2ee4f6338d
/frameworks/base/core/java/android/widget/AbsListView.java
fb1e80a247221ee7e8f5c5deba04812021d9d07e 17-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Exposing some accessiblity actions only for enabled views.

1. Some accessibility actions should not be performed on disabled
views. For example, scrolling should not be permitted while
accessibility focus should be. Made a quick pass over the
actions we expose now.

Change-Id: I36626dfbc0d2f480309a910f58f1de64e9e05675
/frameworks/base/core/java/android/widget/AbsListView.java
48d1586f4065fc9ab97a679da1e4f7c327c943f2 15-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Add accessibility scroll support to some widgets.

1. Added support for accessibility scroll action to
some widgets that are scrollable.

2. Making the super call when handling an accessibility
action in the views to call super first to allow
an accessibility delegate to intercept the call.

bug:5932640

Change-Id: I5eb37d64bf9fba1d5c596981132e0df717e2a18a
/frameworks/base/core/java/android/widget/AbsListView.java
e5dfa47d84668376b84074c04570fb961870adeb 09-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Improving accessibility focus traversal.

1. Now the views considered during the accessibility focus search
are the ones that would get accessibility focus when thovered
over. This way the user will get the same items i.e. feedback
if he touch explores the screen and uses focus traversal. This
is imperative for a good user experience.

2. Updated which focusables are considered when searching for access
focus in ViewGroup. Generally accessibility focus ignores focus
before/after descendants.

3. Implemented focus search strategy in AbsListView that will traverse
the items of the current list (and the stuff withing one item
before moving to the next) before continuing the search if
forward and backward accessibility focus direction.

4. View focus search stops at root namespace. This is not the right
way to prevent some stuff that is not supposed to get a focus in
a container for a specific state. Actually the addFocusables
for that container has to be overriden. Further this approach
leads to focus getting stuck. The accessibility focus ignores
root names space since we want to traverse the entire screen.

5. Fixed an bug in AccessibilityInteractionController which was not
starting to search from the root of a virtual node tree.

6. Fixed a couple of bugs in FocusFinder where it was possible to
get index out of bounds exception if the focusables list is empty.

bug:5932640

Change-Id: Ic3bdd11767a7d40fbb21f35dcd79a4746af784d4
/frameworks/base/core/java/android/widget/AbsListView.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/AbsListView.java
a1dc761c8322355eb1bb71d3d6c9c603c1d1fc0f 10-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Adding scroll actions to accessibility node info.

1. Scrolling actions are crucial for enabling a gesture based
traversal of the UI and specifically scrollable containers
especially lists and anything backed by an adapter. Since
accessibility focus can land only attached views, it cannot
visit views for adapter items not shown on the screen.
Auto scrolling the list as a result of putting access focus
ot a list item does not work well since the user may get
trapped in a long list. Adding an accessibility node provider
to emit virtual views for one view before the first and one
after the last is complex and suffers the limitation of trapping
the user. Accessibility service need an explicit scroll actions
which may be performed upon an explicit user action. Hence,
the user is informed for the start/end of the visible part of
the list and he makes a deliberate choice to scroll. This will
benefit also people developing Braille devices since they can
scroll the content without telling the user to stop using the
Braille controller and take the device out of his pocket to scroll
and go back to the Braille controller.

NOTE: Without these action large portions of the screen will be
hard to access since users will have to touch and explore to
find and scroll the list.

Change-Id: Iafcf54d4967893205872b3649025a4e347a299ed
/frameworks/base/core/java/android/widget/AbsListView.java
f103758b7c78f4dc1c5bd57383d245ec138576a1 09-May-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "Delegate list item focus and click actions to the parent list." into jb-dev
aadf4fb68e640c0622a1070206f69a7724328632 09-May-2012 Adam Powell <adamp@google.com> More fun with AbsListView smooth scrolling

If any data set change is pending when a smooth scroll is requested,
post it for later - not just if the list is currently empty.

Fix a bug in relative smooth scrolling where the last view was being
determined incorrectly.

Bug 6434713

Change-Id: Ic249eefc594151a414a6a8758074a9a60888e2b4
/frameworks/base/core/java/android/widget/AbsListView.java
c1d7e770e123adfa992d013fa294693d077cbc78 08-May-2012 alanv <alanv@google.com> Delegate list item focus and click actions to the parent list.

Change-Id: Ie05c79f049896bfb498d4b33f0611da38f381140
/frameworks/base/core/java/android/widget/AbsListView.java
bf1b81fb25b140fb9a55fc6d6b2383c851290432 08-May-2012 Adam Powell <adamp@google.com> AbsListView: Toss transient state views once they no longer have
transient state.

Bug 6365897

Change-Id: Ib2bd546c74d3303ac01bcae9b01e221db36c1440
/frameworks/base/core/java/android/widget/AbsListView.java
e69370e16852c576890dd70733ad40669fd9367e 08-May-2012 Adam Powell <adamp@google.com> Fix misc. bugs in AbsListView smooth scrolling.

Handle the edge cases a bit better. Deal with padding. If a smooth
scroll begins, the list is empty, but a data change is pending, try
again on the next looper pass.

Bug 6453837
Bug 6434713

Change-Id: I53f22ebacdcbc5d981a6c8055c4fd3fc1ef140f6
/frameworks/base/core/java/android/widget/AbsListView.java
6f663c1a3c4d4a23bc71302add27b3d03d7d507b 01-May-2012 Adam Powell <adamp@google.com> Fix a bug in ListView where touch scrolling could skip a data set change

Bug 2597058

ListView's touch scrolling can query the adapter for new views. As we now
flush pending touch events before running layout/draw traversals (when we
normally bring ListView back in sync), this can now happen more often.

Resync data before executing a scroll if a data set change is pending.

Change-Id: I3e4eba4c2537911ba9cb3393ee4d9e68e46f84bb
/frameworks/base/core/java/android/widget/AbsListView.java
0b8acd81d5029385ec0ae3cafd90acf3036b89ac 26-Apr-2012 Adam Powell <adamp@google.com> Fix janky programmatic ListView scrolling

Adjust AbsListView to use a linear interpolator for smooth scrolling
rather than the default scroller behavior. This prevents irregular
motion as the scroll is altered in-flight to account for varying
height list items.

Bug 6397800

Change-Id: I8cc33dfc18903943369e1353930c48e2652b0142
/frameworks/base/core/java/android/widget/AbsListView.java
1fa179ef41c06bd19da70fd9bf95741238791940 13-Apr-2012 Adam Powell <adamp@google.com> Fix some smooth scrolling bugs in lists and update on the animation
timer.

Change-Id: I0cb03c6da204a34c9e942c3953b87287c3d4763d
/frameworks/base/core/java/android/widget/AbsListView.java
4213804541a8b05cd0587b138a2fd9a3b7fd9350 20-Mar-2012 Svetoslav Ganov <svetoslavganov@google.com> Accessibility focus - framework

Usefulness: Keep track of the current user location in the screen when
traversing the it. Enabling structural and directional
navigation over all elements on the screen. This enables
blind users that know the application layout to efficiently
locate desired elements as opposed to try touch exploring the
region where the the element should be - very tedious.

Rationale: There are two ways to implement accessibility focus One is
to let accessibility services keep track of it since they
have access to the screen content, and another to let the view
hierarchy keep track of it. While the first approach would
require almost no work on our part it poses several challenges
which make it a sub-optimal choice. Having the accessibility focus
in the accessibility service would require that service to scrape
the window content every time it changes to sync the view tree
state and the accessibility focus location. Pretty much the service
will have to keep an off screen model of the screen content. This
could be quite challenging to get right and would incur performance
cost for the multiple IPCs to repeatedly fetch the screen content.
Further, keeping virtual accessibility focus (i.e. in the service)
would require sync of the input and accessibility focus. This could
be challenging to implement right as well. Also, having an unlimited
number of accessibility services we cannot guarantee that they will
have a proper implementation, if any, to allow users to perform structural
navigation of the screen content. Assuming two accessibility
services implement structural navigation via accessibility focus,
there is not guarantee that they will behave similarly by default,
i.e. provide some standard way to navigate the screen content.
Also feedback from experienced accessibility researchers, specifically
T.V Raman, provides evidence that having virtual accessibility focus
creates many issues and it is very hard to get right.
Therefore, keeping accessibility focus in the system will avoid
keeping an off-screen model in accessibility services, it will always
be in sync with the state of the view hierarchy and the input focus.
Also this will allow having a default behavior for traversing the
screen via this accessibility focus that is consistent in all
accessibility services. We provide accessibility services with APIs to
override this behavior but all of them will perform screen traversal
in a consistent way by default.

Behavior: If accessibility is enabled the accessibility focus is the leading one
and the input follows it. Putting accessibility focus on a view moves
the input focus there. Clearing the accessibility focus of a view, clears
the input focus of this view. If accessibility focus is on a view that
cannot take input focus, then no other view should have input focus.
In accessibility mode we initially give accessibility focus to the topmost
view and no view has input focus. This ensures consistent behavior accross
all apps. Note that accessibility focus can move hierarchically in the
view tree and having it at the root is better than putting it where the
input focus would be - at the first input focusable which could be at
an arbitrary depth in the view tree. By default not all views are reported
for accessibility, only the important ones. A view may be explicitly labeled
as important or not for accessibility, or the system determines which one
is such - default. Important views for accessibility are all views that are
not dumb layout managers used only to arrange their chidren. Since the same
content arrangement can be obtained via different combintation of layout
managers, such managers cannot be used to reliably determine the application
structure. For example, a user should see a list as a list view with several
list items and each list item as a text view and a button as opposed to seeing
all the layout managers used to arrange the list item's content.
By default only important for accessibility views are regared for accessibility
purposes. View not regarded for accessibility neither fire accessibility events,
nor are reported being on the screen. An accessibility service may request the
system to regard all views. If the target SDK of an accessibility services is
less than JellyBean, then all views are regarded for accessibility.
Note that an accessibility service that requires all view to be ragarded for
accessibility may put accessibility focus on any view. Hence, it may implement
any navigational paradigm if desired. Especially considering the fact that
the system is detecting some standard gestures and delegates their processing
to an accessibility service. The default implementation of an accessibility
services performs the defualt navigation.

bug:5932640
bug:5605641

Change-Id: Ieac461d480579d706a847b9325720cb254736ebe
/frameworks/base/core/java/android/widget/AbsListView.java
a8bfeaf4f49fa33e96f37302f9c9b99c94aa1581 15-Mar-2012 Romain Guy <romainguy@google.com> Cleanup ListView glow's optimized invalidates

Change-Id: Ie9759fd95366866512ec55072aa482f972650d15
/frameworks/base/core/java/android/widget/AbsListView.java
9d849a2f6351caed83105b90cab79223ec2bfbd3 15-Mar-2012 Romain Guy <romainguy@google.com> Optimize invalidate calls in lists.

AbsListView was doing too many invalidates during scrolls/flings.
Some of them were also covering too large an area of the screen.

Change-Id: I68fe5dda3657bddd673996e7cf4f3c3672c66cfc
/frameworks/base/core/java/android/widget/AbsListView.java
29382d9d9d03553dfbc235d32d27be13b4c76c5f 23-Feb-2012 Adam Powell <adamp@google.com> Bug 6058721 - optimize changing checked states in AbsListView

Instead of treating a checked state change as a full data set change,
simply modify the checked or activated state of on-screen views.
Any resulting layout changes will be serviced as appropriate.

Change-Id: Ia846de16bbc54f0729608259aa4b530da9404245
/frameworks/base/core/java/android/widget/AbsListView.java
aebd28f729fa28016d70551d0372ab7fcd56ee1a 22-Feb-2012 Adam Powell <adamp@google.com> Fix bug 6048643 - verify ListView layoutparams while tracking stable IDs

Account for adapters that don't inflate item views using the ListView as
a parent.

Unify how AbsListView and subclasses generate layoutparams.

Change-Id: I963a5fcb4d98b721210a4d92d0db307f56acdf59
/frameworks/base/core/java/android/widget/AbsListView.java
539ee8716b4f81260bab2e9f3dc5d88d81c99985 04-Feb-2012 Adam Powell <adamp@google.com> Add transient state tracking to Views

Transient state is temporary bookkeeping that Views need to perform
that the app should not need to be aware of. Examples include text
selection regions and animation state.

Transient state is a problem for AdapterViews like ListView that do
view recycling. Unless the app takes responsibility for tracking and
restoring transient state as if it were a part of the adapter's data
set, it cannot correctly recycle views. Selections disappear when an
EditText is scrolled out of sight and animations seem to play on the
wrong views.

Views can now flag themselves as having transient state. (As the name
implies, this should be a temporary condition.) If a ViewGroup
contains a child with transient state, that ViewGroup also has
transient state.

AbsListView's recycler now tracks views with transient state
separately. Views with transient state will be retained, and until a
data set change occurs the same view will be reused for that position
instead of calling the adapter's getView() method.

The API to set and check transient state is currently hidden.

Change-Id: Idfd8eaac2c548337686d8d9f98fda4c64be5b8a0
/frameworks/base/core/java/android/widget/AbsListView.java
0764dee89cc82dd53196cce2865d3cabafed208f 18-Jan-2012 Svetoslav Ganov <svetoslavganov@google.com> Merge "AccessibilityEvent/AccessibilityNodeInfo class name property should be set to only framework classes."
b967392e0170af8cfd8053fd43fcdf8c46f703e9 05-Jan-2012 Adam Cohen <adamcohen@google.com> Hinting RemoteViewsAdapter as to which views are visible

-> This prevents collection widgets from flashing loading
views when they are updated with new content

Change-Id: I1241ff9a09edfd990ad03f76449d18b9359246b4
/frameworks/base/core/java/android/widget/AbsListView.java
8a78fd4d9572dff95432fcc4ba0e87563415b728 17-Jan-2012 Svetoslav Ganov <svetoslavganov@google.com> AccessibilityEvent/AccessibilityNodeInfo class name property should be set to only framework classes.

AccessibilityEvent and AccessibilityNodeInfo have a property className which is set to the source
Java class. This is problematic since leads to leaking private classes which would allow an
accessibility service to load classes from other packages. This is strongly undesirable since
not trusted code can be loaded, and hence executed, in the accessibility service. To address
that the class name is set to the most concrete framework class extended by the info/event
source.

bug:5878943

Change-Id: I7b3114ece8772ea2773f5151e21b8a6f2006882a
/frameworks/base/core/java/android/widget/AbsListView.java
43ee0ab8777632cf171b598153fc2c427586d332 09-Oct-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5433910: RTE while adding an account from settings

Make the new marshalling/unmarshalling code for the long sparse
array of ints always consistent.

And sane.

Change-Id: Ifbfbe6e56f59e469acb66257c504b1168d6566fa
/frameworks/base/core/java/android/widget/AbsListView.java
e0f2515b444ceae20571cbe29e44237d259f54bd 07-Oct-2011 Adam Powell <adamp@google.com> Merge "Fix bug 5399568 - ListView check states inconsistent after data set change"
14c080497e427c4dd9395df5bacb28bcc4291a32 07-Oct-2011 Adam Powell <adamp@google.com> Fix bug 5399568 - ListView check states inconsistent after data set change

ListView tracks check states in two ways, by position and by ID if an
adapter reports stable IDs. After a data set change there was no
guarantee that the position checked mapping was consistent.

Fix up the position mapping from the ID mapping after a data set
change. In the future this should happen by asking the adapter where a
given ID is now located, but this will require new API and not all
adapters in the wild will implement it. For now make a best guess by
searching in a limited window around the item's last known position.

Change-Id: I70ba89eb103c438b0410c3c6d066acc3918459f9
/frameworks/base/core/java/android/widget/AbsListView.java
d9ee72fddb8be40e414a831fb80458dc48699613 06-Oct-2011 Svetoslav Ganov <svetoslavganov@google.com> Fixing errors in position information of scrollable views reported for accessibility.

1. ScrollView/HorizontalScroll view were reporting only the scroll X and Y but
failed to convey the max scroll along X and Y so the position can be determined.

2. WebView was not reporting correctly its scroll position for accessibility.

3. Some descendants of AdapterView were reporting incorrect position information.

4. Updated the accessibility docs with some details about the scroll information.

5. Cleaned up duplicated code.

bug:5412132
bug:5412265

Change-Id: I165e73ecde027dad811425b9f395a3f758c923ba
/frameworks/base/core/java/android/widget/AbsListView.java
b84b94e1a04cd1f396dd6fef98d65ca1a2729c92 23-Sep-2011 Svetoslav Ganov <svetoslavganov@google.com> Scroll accessibility events should not populate text.

Scroll events are used to report position change and should not
contain the text content of the view that fires them because it
is usiually a containter for many other views and the text will
be long and not informative for accessibility purposes. Also
such evens are fired relatively frequently. If a client wants
to fetch some textual content for a scroll event he can use
the interrogation APIs.

bug:5352059

Change-Id: I43e02aca895c8ab16ba82ebe1cee3aea8ce7711a
/frameworks/base/core/java/android/widget/AbsListView.java
b0c71eb9f50ce06327fa6bb6219f0970e04fd856 17-Sep-2011 Jeff Brown <jeffbrown@google.com> Can't stop the fling!
Bug: 5335420

Fixed a bug in VelocityTracker where the output velocity was
not being set to zero when not available.

Added a condition to ensure that the velocity is at least
the minimum fling velocity before continuing. If not, then
the user is trying to stop the fling and scroll more precisely.

Change-Id: I36634b0c3f7a9a09cf20c33f71d41163a8e33eed
/frameworks/base/core/java/android/widget/AbsListView.java
a2b986e72c403f0b2ea593884e3135254bb83d30 14-Sep-2011 Adam Powell <adamp@google.com> Bug 5151927 - Monkeys should not play with detached lists.

Don't process ListView key events while detached from a window.

Change-Id: Ibf85e081887d47834a467f9fd2cb6a1e39b4857e
/frameworks/base/core/java/android/widget/AbsListView.java
1e83b3e6ab69456db5d308c12e367a5d7166610d 14-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5312352 - ListView modal multi-select mode bugs

When the provided callback returned false for creating the mode, the
item was still getting checked and the bar was flickering. Don't do
that.

Change-Id: I384962742edeac0c43aec6f7898bd50dab064738
/frameworks/base/core/java/android/widget/AbsListView.java
7f2202b0bd6eb66e64d1bbed91c39181b754e90f 13-Sep-2011 Jeff Sharkey <jsharkey@android.com> Handle data changed during FlingRunnable.

Bug: 5297171
Change-Id: I733ed978bb1d237c992f5d003b212baeac102a3d
/frameworks/base/core/java/android/widget/AbsListView.java
78f6e63031da4ff06057be9a9e6c77ea83da4673 10-Sep-2011 Jeff Brown <jeffbrown@google.com> Handle DOWN/MOVE/UP gestures with fling.
Bug: 5265814

When MOVE events are batched, a ListView may not receive only
one MOVE event followed immediately by an UP in the case of
a quick fling. Unfortunately, the old code relied on there
being at least one additional MOVE event following the first
in order to really scroll or fling.

This change extracts common code from onTouchEvent to
handle scrolls as soon as they are started if there is additional
remaining motion beyond the initial touch slop (taken care of by
mMotionCorrection).

Change-Id: I8c8f03f580bfba96aa69cf111d245ba7fd3b4c2a
/frameworks/base/core/java/android/widget/AbsListView.java
89935e41c593a599e8955388b27fb926e60e5e94 31-Aug-2011 Adam Powell <adamp@google.com> Make EdgeEffect public API.

This enables apps to make use of the system's visual edge effect used
during overscroll in 2D content.

Also un-@hide the getCurrVelocity methods from Scroller/OverScroller,
without which it becomes cumbersome to obtain values to pass to the
EdgeEffect#onAbsorb method.

Change-Id: I40e452455f5cb5d45d1fb3687f739fc8eae65560
/frameworks/base/core/java/android/widget/AbsListView.java
9a5cc2810bbbcb0eab4579aa4131039820d92101 29-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5124021 - Menu visibility incorrect when restoring ListView
selection mode

Fix visibility of menus when action modes are initiailized early.

Fix ListView problems persisting check states.

Change-Id: Idc21036dc39259e72f0e6831a0ccb4695f8858ef
/frameworks/base/core/java/android/widget/AbsListView.java
13451a476a1951a19d3cb531c47bf5a51587800a 23-Aug-2011 Michael Jurka <mikejurka@google.com> Track motion events before we decide to start scrolling

Change-Id: I0e2de488c62814982a21b7a7debbf1cd78e5891c
/frameworks/base/core/java/android/widget/AbsListView.java
ee78b173aae7ecb35b065c7499ac4f89b9c2f06e 17-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5048082 - Conversation doesn't scroll after you send a message

Fix TRANSCRIPT_MODE_NORMAL to work properly when multiple data set change
events happen before a relayout.

Change-Id: If866f7c649c1119d088020f1231b916047402b8c
/frameworks/base/core/java/android/widget/AbsListView.java
b3750133db256ffa5956c8836bc86c3c22918cb1 09-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5135608 - Let AbsListView take focus while detached

While it is valid to request focus while detached from a window,
AbsListView did not handle it gracefully if it had an adapter whose
data changed while the view was detached, since DataSetObservers are
unregistered during this time. Assume that the data could have changed
if we gain focus while detached.

Change-Id: Id135693ffcc48ff5a9d530d335ab449180624c43
/frameworks/base/core/java/android/widget/AbsListView.java
4e03f5910cf641e2610f4cbe3fc24d84c430d1e8 30-Jul-2011 Svetoslav Ganov <svetoslavganov@google.com> Removing firing of spurious scroll accesibility events.

1. Adding a TextView to a layout fires an accessibility scroll event
with mScrollX = 8144. Now TextView does not fire scroll events
since they are not interesting for accessibility and also the
implementation fires scroll to frequently - though correctly.

2. AbsListView was firing accessibility events for the same location.
Here the caveat is that this class does not know its height and
calls onScrollChange every time is scroll as seen by the user
may have changed but for accessibility purposes we care for the
start and end indices of visible views. The fix is to avoid
sending access events with duplicate data.

bug:5097467

Change-Id: I7bf11efd638ea3673843f1095a03f518e57cfe9d
/frameworks/base/core/java/android/widget/AbsListView.java
2148d43eb23c702e834c93ae427f822f32d280a2 28-Jul-2011 Adam Cohen <adamcohen@google.com> Fixing widget notifyDataSetChanged() not getting called, issue 5092676

Change-Id: I61a034a77c0c9d07aba71bfabe7a0864ce92c2e9
/frameworks/base/core/java/android/widget/AbsListView.java
044a46bda5e2f6bc9f700e65d05ed17faae68f11 26-Jul-2011 Adam Powell <adamp@google.com> Fix bug 5051894 - drags/flings at the beginning/end of ListViews are
often dropped

Fix some weirdness in transitioning between overscroll states.

Change-Id: Ie0c2ba75cc60c340e654df58dee675ed1426edb9
/frameworks/base/core/java/android/widget/AbsListView.java
fc302cdeed5317b140a2a7813857434effb793af 22-Jul-2011 Adam Powell <adamp@google.com> Fix bug 5037537 - Revert "ListView focus bugfix."

This reverts commit a86127fe265896136d2e70273b7623e7c765fe2e.
/frameworks/base/core/java/android/widget/AbsListView.java
1e20946aa34372de5585e2a8ce3b73906a2d828b 15-Jul-2011 Jeff Brown <jeffbrown@google.com> Ensure selector state is updated when touch mode changes.

This fixes a problem where the focus selection rectangle
often remains visible even after entering touch mode.
This problem is particularly noticeable when using the
mouse to scroll the list while an item is selected.

Change-Id: I9938d2586725d91fd3f6738408233f2ead167319
/frameworks/base/core/java/android/widget/AbsListView.java
a6111377e1edbc5d63fc2a7205d58b2d9c21d978 15-Jul-2011 Jeff Brown <jeffbrown@google.com> Remove edge slop support.

The edge slop feature was added a long time ago for a specific
device that had severe non-linear touch response issues near
the edges of its touch screen. The feature is not useful on
modern hardware that is property calibrated.

Change-Id: I26716cbc7411c31883ddb4bb4ddd981027790d0f
/frameworks/base/core/java/android/widget/AbsListView.java
a79f4b7df9d6d80b9371ba289040a60fa93bb87c 23-Mar-2011 Jason Bayer <bayer@google.com> Refresh the drawable state when selecting a position.

It seems that mSelectorShowing is a dead (always false) field.

Bug: 4070346
Change-Id: Icf3cc6f19cc49dcfda15229a6d91232404c0743c
/frameworks/base/core/java/android/widget/AbsListView.java
a86127fe265896136d2e70273b7623e7c765fe2e 01-Jul-2011 Mark Lindner <mlindner@google.com> ListView focus bugfix.

resurrectSelection() didn't take into account disabled items
(which shouldn't ever get focus).

Bug: 4967915
Change-Id: I849d2d993ddf93f49108e7b867ff6d24643c07a8
/frameworks/base/core/java/android/widget/AbsListView.java
2585e9bd6ded294e426607717ccc85a56bade594 01-Jul-2011 Justin Koh <justinkoh@google.com> Frameworks: fixes possible invalid pointer index call.

Fixes possible invalid pointer index call in AbsListView.

Bug: 4982383
Change-Id: I9b88ab6a055c7678ef81fbe3187473edf8d12f6a
/frameworks/base/core/java/android/widget/AbsListView.java
a0156177cdc809795dd8bc5a19943dd2b6f82b66 27-Jun-2011 Svetoslav Ganov <svetoslavganov@google.com> Added scroll and text selection change accessibility events.

1. Added scrolling accessibility event to provicde feedback
when a view is scrolled.

Note: We need scroll events for ICS since even though we have
touch exploration the user does not know when something
is scrollable and not feedback is provided while scrolling.

bug:4902097

2. Added a text selection change event to provide feedback
for selection changes including cursor movement.

Note: We need the text selection change events for ICS since
even though the IME supports navigation in text fields
the user receives no feedback for the current selection/
cursor position.

bug:4586186

3. Added a scrollable property to both AccessibilityEvent and
AccessibilityNodeInfo. The info has to describe the source
in terms of all properties that make sense for accessibility
purposes and the event has this property (kinda duplicated)
since clients will aways want to know if the source is
scrollable to provided clue to the user and we want to avoid
pulling the info of the source for every accessibility event.

Change-Id: I232d6825da78e6a12d52125f51320217e6fadb11
/frameworks/base/core/java/android/widget/AbsListView.java
eeee4d2c01d3c4ed99e4891dbc75c7de69a803fa 11-Jun-2011 Svetoslav Ganov <svetoslavganov@google.com> Final polish of the interrogation feature.

1. Added a new event type for notifying client accessibilitiy
services for changes in the layout. The event is fired at
most once for a given time frame and is delivered to clients
only if it originates from the window that can be interrogated.

2. Exposed the findByText functionality in AccessibilityNodeInfo.
This is very useful for an accessibility service since it allows
searching for something the user knows is on the screen thus
avoiding touch exploring the content. Touch exploring is
excellent for learning the apps but knowing them search is
much faster.

3. Fixed a bug causing an accessibiliby service not to receive
the event source in case of more than one service is registered
and one of them does not have paermission to interrogate the window.
The same event was dispatched to multiple services but if one
of them does not have interrogation permission the event is
modified to remove the source causing subsequent serivices not
to get the later.

4. Moved the getSource setSource methods to AccessibilityRecord
instead in AccessibilityEvent.

5. Hiden some protected members in AccessibilityRecod which should
not be made public since getters exist.

6. Added the View absolute coordinates in the screen to AccessibilityNodeInfo.
This is needed for fast computation of relative positions of
views from accessibility - common use case for the later.

7. Fixed a couple of marshalling bugs.

8. Added a test for the object contract of AccessibilityNodeInfo.

Change-Id: Id9dc50c33aff441e4c93d25ea316c9bbc4bd7a35
/frameworks/base/core/java/android/widget/AbsListView.java
b93ffdb5d5c42cb3d3ae3596428f50b3046ae3d4 03-Jun-2011 Adam Powell <adamp@google.com> am b30dda6b: am 036c40f4: am fa8ee177: Merge "Framework: bugfix for menu selector not showing up properly." into honeycomb-mr2

* commit 'b30dda6b550fedcf5c3b15671d483205a7757e1b':
Framework: bugfix for menu selector not showing up properly.
3c7b96a3466d05ad9979e86f44eb61a12ef67da3 01-Jun-2011 Justin Koh <justinkoh@google.com> Framework: bugfix for menu selector not showing up properly.

Menu selector wasn't showing up properly because selector state wasn't updated after touch mode. Added this to resurrectselection call.

http://b/issue?id=4372583

TESTED = runs on M4.

Change-Id: I349c3b86f4e8a1a02a20494b547859d0c12867ee
/frameworks/base/core/java/android/widget/AbsListView.java
bad9d97693a784ea37f1510550e0e4a98f9a9180 28-May-2011 Svetoslav Ganov <svetoslavganov@google.com> Refatoring a bit of accessibility code

Change-Id: I4df1741b622b21176c10311da0dc6347ca6fb390
/frameworks/base/core/java/android/widget/AbsListView.java
fe9f8ab03a63b1037f07dd85799fbea80ec6adaa 07-May-2011 Jeff Brown <jeffbrown@google.com> Add initial API for stylus and mouse buttons.

Added the concept of pointer properties in a MotionEvent.
This is currently used to track the pointer tool type to enable
applications to distinguish finger touches from a stylus.

Button states are also reported to application as part of touch events.

There are no new actions for detecting changes in button states.
The application should instead query the button state from the
MotionEvent and take appropriate action as needed.

A good time to check the button state is on ACTION_DOWN.

As a side-effect, applications that do not support multiple buttons
will treat primary, secondary and tertiary buttons identically
for all touch events.

The back button on the mouse is mapped to KEYCODE_BACK
and the forward button is mapped to KEYCODE_FORWARD.

Added basic plumbing for the secondary mouse button to invoke
the context menu, particularly in lists.

Added clamp and split methods on MotionEvent to take care of
common filtering operations so we don't have them scattered
in multiple places across the framework.

Bug: 4260011
Change-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83
/frameworks/base/core/java/android/widget/AbsListView.java
c6cc0f8c19d9eccf408a443fa2bf668af261dcd0 12-Apr-2011 Joe Onorato <joeo@google.com> Rename ViewRoot to ViewAncestor.

ViewRoot is about to be a new public class for poking at ViewAncestor.

Change-Id: Ie95d707c6d8bbb48f78d093d7b2667851812a7d5
/frameworks/base/core/java/android/widget/AbsListView.java
736c2756bf3c14ae9fef7255c119057f7a2be1ed 23-Apr-2011 Svetoslav Ganov <svetoslavganov@google.com> Touch exploration feature, event bubling, refactor

1. Added an Input Filter that interprets the touch screen motion
events to perfrom accessibility exploration. One finger explores.
Tapping within a given time and distance slop on the last exlopred
location does click and long press, respectively. Two fingers close
and in the same diretion drag. Multiple finglers or two fingers in
different directions or two fingers too far away are delegated to
the view hierarchy. Non moving fingers "accidentally grabbed the
device for the scrren" are ignored.

2. Added accessibility events for hover enter, hover exit, touch
exoloration gesture start, and end. Accessibility hover events
are fired by the hover pipeline. An accessibility event is
dispatched up the view tree and the topmost view fires it.
Thus predecessors can augment the fired event. An accessibility
event has several records and a predecessor can optionally
modify, delete, and add such to the event.

3. Added onPopulateAccessibilityEvent and refactored the existing
accessibility code to use it.

4. Added API for querying the currently enabled accessibility services
by feedback type.

Change-Id: Iea2258c07ffae9491071825d966dc453b07e5134
/frameworks/base/core/java/android/widget/AbsListView.java
3fb3d7c4e756bd32d5abde0abca9ab52d559bc84 23-Apr-2011 Adam Powell <adamp@google.com> Revert "Touch exploration feature, event bubling, refactor"

This reverts commit ac84d3ba81f08036308b17e1ab919e43987a3df5.

There seems to be a problem with this API change. Reverting for now to
fix the build.

Change-Id: Ifa7426b080651b59afbcec2d3ede09a3ec49644c
/frameworks/base/core/java/android/widget/AbsListView.java
ac84d3ba81f08036308b17e1ab919e43987a3df5 05-Apr-2011 Svetoslav Ganov <svetoslavganov@google.com> Touch exploration feature, event bubling, refactor

1. Added an Input Filter that interprets the touch screen motion
events to perfrom accessibility exploration. One finger explores.
Tapping within a given time and distance slop on the last exlopred
location does click and long press, respectively. Two fingers close
and in the same diretion drag. Multiple finglers or two fingers in
different directions or two fingers too far away are delegated to
the view hierarchy. Non moving fingers "accidentally grabbed the
device for the scrren" are ignored.

2. Added accessibility events for hover enter, hover exit, touch
exoloration gesture start, and end. Accessibility hover events
are fired by the hover pipeline. An accessibility event is
dispatched up the view tree and the topmost view fires it.
Thus predecessors can augment the fired event. An accessibility
event has several records and a predecessor can optionally
modify, delete, and add such to the event.

3. Added onPopulateAccessibilityEvent and refactored the existing
accessibility code to use it.

4. Added API for querying the currently enabled accessibility services
by feedback type.

Change-Id: Iec03c6c3fe298de3f14cb6efdbb9b198cd531a0c
/frameworks/base/core/java/android/widget/AbsListView.java
becb0be2bb769e819774d32d6f9e4f6b31668157 22-Mar-2011 Adam Powell <adamp@google.com> Fix bug 3175131 - listviews don't highlight properly

Fix up selector drawable state when we resurrect a selection.

Change-Id: Id883c8b416207a50951ec2852826b1eee17bc50c
/frameworks/base/core/java/android/widget/AbsListView.java
7b5b6abf852c039983eded25ebe43a70fef5a4ab 15-Mar-2011 Romain Guy <romainguy@google.com> Fix rendering artifact in edge fades.
Bug #4092053

The problem always existed but was made visible by partial invalidation.
When saving a layer, the renderer would try to postpone glClear()
operations until the next drawing command. This however does not work
since the clip might have changed. The fix is rather simple and
simply gets rid of this "optimization" (that turned out to be
usless anyway given how View issues saveLayer() calls.)

This change also fixes an issue with gradients (color stops where
not properly computed when using a null stops array) and optimizes
display lists rendering (quickly rejects larger portions of the
tree to avoid executing unnecessary code.)

Change-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46
/frameworks/base/core/java/android/widget/AbsListView.java
07d6f7bd750655852da49ee1a3c64f7dc05cc00d 02-Mar-2011 Adam Powell <adamp@google.com> Fix bug 3502257 - overscroll effect api

Change-Id: I3bf8bb653e96151c51fb94b4571a72b210615e62
/frameworks/base/core/java/android/widget/AbsListView.java
498e43dd8e0314e1147321bef57d4fdd82cb5284 02-Mar-2011 Adam Powell <adamp@google.com> Fix bug 3501411 - ListView should ignore "up" events outside of its view

Do not dispatch item clicks if the up event occurs completely outside
of list bounds.

Change-Id: I2bc38040bcc98944e1449affcdbd75e0194637cf
/frameworks/base/core/java/android/widget/AbsListView.java
91b52b189550b20cdb4e3e1920fe81a479aec843 01-Mar-2011 Gilles Debunne <debunne@google.com> Merge "AbsListView notifies scroll events to the ViewTreeObserver."
0a1b818b8c45c8b100eeabb5c59bb4d85cf90868 01-Mar-2011 Gilles Debunne <debunne@google.com> AbsListView notifies scroll events to the ViewTreeObserver.

ViewTreeObserver OnScrollChangedListener will then get notified.

The scroll values are not specified, since they are passed to the
base View.onScrollChanged method that simply sets the flags.

No need to throw these from a Runnable (in case this happens during
a relayout) since the listeners will be notified later from ViewRoot.draw().

Calling View.onScrollChanged in invokeOnItemScrollListener for normal scroll and
in onOverScrolled to handle mScroller animation.

Change-Id: Ib41434e5cd82e5a45ca6653db576746e89ef072d
/frameworks/base/core/java/android/widget/AbsListView.java
5bf7658cb85a1e70f3ea89a3a674a96c2eb7531f 01-Mar-2011 Gilles Debunne <debunne@google.com> Merge "Removed ViewTreeObserver null checks"
f37fccd9d867af5c1ea1770dea64e600fda04500 01-Mar-2011 Adam Powell <adamp@google.com> Merge "Change behavior of multitouch in scrolling views."
9bc30d31322848d61f518c1db43544988faaba8f 28-Feb-2011 Adam Powell <adamp@google.com> Change behavior of multitouch in scrolling views.

New pointers touching the screen always become the active pointer.

Still to do: allow flings until another pointer moves enough to stop
it. Currently flings will be immediately stopped by the other pointers
still contacting the screen.

Change-Id: Ic1c7bf98dcf40252593cec0ab1f0d524aaeed8e4
/frameworks/base/core/java/android/widget/AbsListView.java
bb579480494b78e5943408bde116850cdb2b61d3 01-Mar-2011 Jeff Brown <jeffbrown@google.com> Merge "Fix inverted scrolling condition in lists."
275d8238da4c19acefffdb701273de86c09d2472 28-Feb-2011 Jeff Brown <jeffbrown@google.com> Fix inverted scrolling condition in lists.

Change-Id: Iaf0de1f7cad565b59e8347cb3634cb620d8016b0
/frameworks/base/core/java/android/widget/AbsListView.java
ccf857cc4c388ecb3bf2e4d84d563853cc21dbfa 28-Feb-2011 Gilles Debunne <debunne@google.com> Merge "OnScrollListener fix in AbsListView"
33bbfd2232ea9eaae9a9d87a05a95a430f09bd83 25-Feb-2011 Jeff Brown <jeffbrown@google.com> Add support for mouse hover and scroll wheel.

Dispatch ACTION_HOVER_MOVE and ACTION_SCROLL through the View
hierarchy as onGenericTouchEvent. Pointer events dispatched
this way are delivered to the view under the pointer. Non-pointer
events continue to be delivered to the focused view.

Added scroll wheel support to AbsListView, ScrollView,
HorizontalScrollView and WebView. Shift+VSCROLL is translated
to HSCROLL as appropriate.

Added logging of new pointer events in PointerLocationView.

Fixed a problem in EventHub when a USB device is removed that
resulted in a long stream of ENODEV errors being logged until INotify
noticed the device was gone.

Note that the new events are not supported by wallpapers at this time
because the wallpaper engine only delivers touch events.

Make all mouse buttons behave identically. (Effectively we only
support one button.)

Change-Id: I9ab445ffb63c813fcb07db6693987b02475f3756
/frameworks/base/core/java/android/widget/AbsListView.java
e20a193754edec182fc0ea13f84a2a1e50add99f 25-Feb-2011 Gilles Debunne <debunne@google.com> OnScrollListener fix in AbsListView

Starting from a list at position 0 (first element displayed
at the top), touch and scroll down. The list cannot go further
down and the glow is displayed.

A connecter scrollListener will receive a FLING but will not
receive the IDLE after.

The reason is that the springback motion that should be started
at that point is not started because the overscroll distance is set to 0.

The fix is to report an IDLE state in that case.

Change-Id: I383babaf8412ee74d598efcf61e91cff44068c79
/frameworks/base/core/java/android/widget/AbsListView.java
0e7d652dbd7cc6415685bece745a752da39179c6 23-Feb-2011 Gilles Debunne <debunne@google.com> Removed ViewTreeObserver null checks

Change-Id: Ib11cbe188ac059cc3eaa24c178b2746a8b519918
/frameworks/base/core/java/android/widget/AbsListView.java
7d86378b0c3a02499a5a9aab35851424ffa57bd8 16-Feb-2011 Adam Powell <adamp@google.com> Fix bug 3362273 - Make overscroll glow appear within padding region

Change-Id: I3c6513ada6bdd192c83f3ff59a2c85717156de22
/frameworks/base/core/java/android/widget/AbsListView.java
0211a0a10d20ec99bd78905ea9cd2960f7beb4c8 15-Feb-2011 Romain Guy <romainguy@google.com> Gracefully handle drawing caches allocation failure.
Bug #3431451

This bug was causing ListView to not render properly when showing an item
larger than the maximum drawing cache size. ListView relies on the drawing
cache to correctly mask all the background pixels. However, if the cache
is not properly created, the background will show through even though
ListView.isOpaque() == true. This change detects this case and falls
back to the default non opaque behavior.

Change-Id: I30a45e7a03fb7ebb2b12f0e85c075c2901954c44
/frameworks/base/core/java/android/widget/AbsListView.java
8d6d3b83fb765eefc6fd38de77f1f45d2523ab89 27-Jan-2011 Jeff Brown <jeffbrown@google.com> Fix down arrow in AutoCompleteTextView.

Bug: 3337416
Change-Id: I572d55c973b9adc68765ba02197e84f3558e65bc
/frameworks/base/core/java/android/widget/AbsListView.java
9e7c2c6ded1144122915cfb8bd663e789c7eb93b 27-Jan-2011 Romain Guy <romainguy@google.com> Merge "Optimize invalidate() calls." into honeycomb
0fd89bf7221431260883cee4597e2db942d799a0 27-Jan-2011 Romain Guy <romainguy@google.com> Optimize invalidate() calls.

Change-Id: I09d99290ca74f96046702bc2604f125a1276ce05
/frameworks/base/core/java/android/widget/AbsListView.java
16c8d8a558f94ec14ef52bb5ac11044e2d0d902c 21-Jan-2011 Winson Chung <winsonc@google.com> Re-enabling queued unbinding of services after requests to the service. (3394210)

- Fix for crash when detaching from window
- Potential fix for occasional IllegalStateException when updating List based widgets

Change-Id: I3d3f2bb691552a1136111043db686c4926b510c6
/frameworks/base/core/java/android/widget/AbsListView.java
4ce35419cea4c320b71f848cf00fd6f5d17e960e 24-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3242393 - overscroll effect missing from lists which drag but
are always visible

Change-Id: I20d73c452c7b98f1a046e356d0c6cdbfc8e5fe7a
/frameworks/base/core/java/android/widget/AbsListView.java
daf98e941e140e8739458126640183b9f296a2ab 10-Jan-2011 Chet Haase <chet@google.com> Use optimized display lists for all hwaccelerated rendering

Previously, display lists were used only if hardware acceleration
was enabled for an application (hardwareAccelerated=true) *and* if
setDrawingCacheEnabled(true) was called. This change makes the framework
use display lists for all views in an application if hardware acceleration
is enabled.

In addition, display list renderering has been optimized so that
any view's recreation of its own display list (which is necessary whenever
the visuals of that view change) will not cause any other display list
in its parent hierarchy to change. Instead, when there are any visual
changes in the hierarchy, only those views which need to have new
display list content will recreate their display lists.

This optimization works by caching display list references in each
parent display list (so the container of some child will refer to its
child's display list by a reference to the child's display list). Then when
a view needs to recreate its display list, it will do so inside the same
display list object. This will cause the content to get refreshed, but not
the reference to that content. Then when the view hierarchy is redrawn,
it will automatically pick up the new content from the old reference.

This optimization will not necessarily improve performance when applications
need to update the entire view hierarchy or redraw the entire screen, but it does
show significant improvements when redrawing only a portion of the screen,
especially when the regions that are not refreshed are complex and time-
consuming to redraw.

Change-Id: I68d21cac6a224a05703070ec85253220cb001eb4
/frameworks/base/core/java/android/widget/AbsListView.java
2bed570bba183249c6ca9ca1151d1d23808de8c1 24-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3367627 - spontaneous crash

Fix a little-traversed codepath that could cause some grief.

Change-Id: I75e6931c3208a0f18b40446f23a2fdd5a0065ce8
/frameworks/base/core/java/android/widget/AbsListView.java
d63d33581051fdffd16789551852368d21b89fe1 19-Jan-2011 Adam Powell <adamp@google.com> Merge "Fix bug 3362258 - Fastscroll is out of sync with the list" into honeycomb
b1f498afc379ec84b86137e91afda6eccb8f4c0a 19-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3362258 - Fastscroll is out of sync with the list

Change-Id: I13282bfed355f5794041e83818ee2e9e97c1b318
/frameworks/base/core/java/android/widget/AbsListView.java
7890fe2da4719bf72b4fbcbef20a555d5fbd94bb 19-Jan-2011 Romain Guy <romainguy@google.com> Don't pass a null View to OnListItemClickListener.
Bug #3365153

Change-Id: I1328a554408bf16ec592ae1a747e57a5fb9305e3
/frameworks/base/core/java/android/widget/AbsListView.java
e0fd2eb2f143b2776b5e1a4e88144fddadd149b1 18-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3357208 - List selector shows as dark black on first pressed state

Make sure AbsListView selector drawable state gets configured on touch.

Change-Id: Ic5863ee05517b426585f59aaf52ba75b72d8c020
/frameworks/base/core/java/android/widget/AbsListView.java
79303750df0e4d18f51f64c7ef3ca21fca893bbb 14-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3352112 - crash in AbsListView.smoothScrollBy

Change-Id: I00b4e5855a1c0861993670a38ed2cd946fd18594
/frameworks/base/core/java/android/widget/AbsListView.java
4032252c997be9f5d013054dc23ace855007b3a5 13-Jan-2011 Adam Powell <adamp@google.com> Fix bugs 3077517 and 3309579 - ListView bugs

Fix smoothScrollPositionFromTop scrolling too far on reverse scrolls

Fix an invalid touch mode when smoothScrollBy attempts to scroll off
the end of a list
/frameworks/base/core/java/android/widget/AbsListView.java
b3ea92235c9ccc1ff295839a8f324dcd1c83dd6f 11-Jan-2011 Jeff Brown <jeffbrown@google.com> Fix NPEs in detached views.

Bug: 3297518
Change-Id: Ife1384f3a5bebbd28a29f97dc6d519f8a0b10ba9
/frameworks/base/core/java/android/widget/AbsListView.java
d0b8365fcbe891b0bb3b54d345337f60c292d09e 10-Jan-2011 Romain Guy <romainguy@google.com> Return the View that matches the clicked position.
Bug #3323669

Change-Id: If6093885283f962d20bf287ba8b82d7c76f9076c
/frameworks/base/core/java/android/widget/AbsListView.java
0633549799ec02e8aaea3242ea66bd501f3bb604 07-Jan-2011 Gilles Debunne <debunne@google.com> Removed XmlAdapters from frameworks.

Has been moved to samples.

Change-Id: Icc0530d78df9755a4a1fe9314fa557a91da408c6
/frameworks/base/core/java/android/widget/AbsListView.java
a13fc67b8147a1bc8c25d2f28ab027023e339426 06-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3326380 - ListView motion scrolling stops too early when list
is padded

Change-Id: Iaca31e030aefc87f115d5022c2a42aefd73b88ea
/frameworks/base/core/java/android/widget/AbsListView.java
d173fa3b1cb8e4294aba7564c0171894be6c3c24 23-Dec-2010 Dianne Hackborn <hackbod@google.com> Possible fix to issue #3213749: NPE at...

...android.app.Fragment.startActivityForResult(Fragment.java)

Make sure to remove all pending messages when AbsListView is detached
from its window.

But... that's not enough.

It turns out that when a fragment's views are animating away, they of
course don't get detached until after the animation is done. However
the fragment itself is immediately destroyed, leaving its live views
still going after that.

Here's a possible solution: when fragment manager initiates an animation
on a fragment whose views are being removed, it makes note of that so
it can hold off on destroying the fragment until the animation is over.

There are a lot of interesting race conditions here, if further operations
happen on the fragment while it is being animated. I think the code here
does something sensible, and it does seem to work for the situations I
have tested, but it is hard to know all of the edge cases that may happen.

Change-Id: I4490ce8862a9bb714c7ea54baca3072c62126388
/frameworks/base/core/java/android/widget/AbsListView.java
dd830c21149c336139b28560c0e6fba9f3d0e0fc 23-Dec-2010 Dianne Hackborn <hackbod@google.com> am 60238734: am 2dda21b9: Merge "Another stab at fixing issue #3149290 java.lang.RuntimeException:..." into gingerbread

* commit '6023873463331d30b7ed12942c3323f1b6975ed8':
Another stab at fixing issue #3149290 java.lang.RuntimeException:...
7becaeea7b220ab6fbe93e35461c7734032e7af4 23-Dec-2010 Dianne Hackborn <hackbod@google.com> Another stab at fixing issue #3149290 java.lang.RuntimeException:...

...Unable to pause activity
{com.android.settings/com.android.settings.applications.StorageUse}

Change-Id: Ibfa28a1c5af50dd150dfcafe71e905426d312643
/frameworks/base/core/java/android/widget/AbsListView.java
4e6319b73c85082e18d1c532b86336ddd1f8cfaa 13-Dec-2010 Jeff Brown <jeffbrown@google.com> Add initial support for TAB navigation.

Bug: 3286652
Change-Id: I813a0318b3b8d9c9bc791ea6a2427be11c08de00
/frameworks/base/core/java/android/widget/AbsListView.java
fb60386b46d0c6216c765c10bd33ac42ca780917 17-Dec-2010 Adam Cohen <adamcohen@google.com> Addressing issues associated RemoteViewsAdapter's service crashes / disconnects

-See issue: 3052667

Change-Id: I95f1cac3defeadc38ac75453d9d59cd1b3cbcc83
/frameworks/base/core/java/android/widget/AbsListView.java
a8a9ff20dcf5e3fa40e9b5aa69a7e3bf24a3a3d7 15-Dec-2010 Dianne Hackborn <hackbod@google.com> am b32ea255: am 7daaa98c: Merge "Fix issue #3149290: java.lang.RuntimeException: Unable to pause activity" into gingerbread

* commit 'b32ea25529589a77ede8faf278068157107ba897':
Fix issue #3149290: java.lang.RuntimeException: Unable to pause activity
99441c45e48abd118bd38da6f0844750a710cd33 15-Dec-2010 Dianne Hackborn <hackbod@google.com> Fix issue #3149290: java.lang.RuntimeException: Unable to pause activity

{com.android.settings/com.android.settings.applications.StorageUse}

AbsListView could call mAdapter.getItemId() if a save state happened
after the data changed but before a layout occurred.

Change-Id: Ica020971dc458dff79b56dd810733e217f4f7da6
/frameworks/base/core/java/android/widget/AbsListView.java
bdccc2d3db85d6489ddf332871ebf082386bae53 15-Dec-2010 Adam Powell <adamp@google.com> Fix bug 3274422 - Prevent pop-in of items in certain lists

Change-Id: Ia4f253b1cb49fbed175d87f8d85fae838a99a614
/frameworks/base/core/java/android/widget/AbsListView.java
3cd0c571ead0795d6e3d86a2865d51ff35b01c6f 25-Oct-2010 Adam Powell <adamp@google.com> Fix bug 3281956 - Cherry-picked from GB

DO NOT MERGE Fix bug 3124899 - timeout in CTS test
ExpandableListViewBasicTest

A certain sequence of events could cause AbsListView to enter an
infinite event loop. Only report reaching a scroll boundary to the
overscroll code path if the Scroller wants to move further, not if
we're done moving.

Change-Id: Ib61897f619e83b28f08b91e82f2b901cb1739e1a
/frameworks/base/core/java/android/widget/AbsListView.java
2c6196aa557e4eaf09d1ec3ad1347742f7f9f7b5 10-Dec-2010 Adam Powell <adamp@google.com> Fix a bug where the fast scroll track would be positioned
incorrectly.

Make fast scroll theme attributes public.

Fix a bug where always-visible fast scrollers wouldn't appear on small
lists.

Change-Id: I377adf63d2fe88478f77b0b04466c6ae88557efe
/frameworks/base/core/java/android/widget/AbsListView.java
16bb80af66012cee1625dd4e926c1fbdf87b8670 10-Dec-2010 Adam Powell <adamp@google.com> Fix typo

Change-Id: I59e7009d054e376e4b48bcabb4a7343d0cab4bd1
/frameworks/base/core/java/android/widget/AbsListView.java
20232d0f7ce2220df72dd78bed052f6b4a643f10 09-Dec-2010 Adam Powell <adamp@google.com> Holo scrollbars and related tweaks.

Added setting for placing vertical scrollbars on left or right.

Added setting for showing fast scroll persistently.

Fixed a bug where inset padding was miscalculated for horizontal scroll bars.

Fixed a bug where padded ListViews would draw fading edges incorrectly

Change-Id: I1f8499895272d42598b4b3fd3375301115def461
/frameworks/base/core/java/android/widget/AbsListView.java
e1be66cdbce9f1bb6aa00bcfc32c1fe6a60e7574 09-Dec-2010 Mindy Pereira <mindyp@google.com> Make sure bottom overscroll feedback takes scrollY into account.

This fixes an issue where the overscroll feedback was rendering
several pixels above the bottom of the list on a flick.

Change-Id: I66160d1b72c04f0273f063910eff995e2b2569f0
/frameworks/base/core/java/android/widget/AbsListView.java
da13dbae6fe0619101433ac861da460b8be63a36 05-Dec-2010 Adam Powell <adamp@google.com> Fix bug 3214215 - ListView should stay scrolled to the bottom in transcript mode after a resize

Change-Id: Iaccc61d9b38e7add44216f3e39b196623773af91
/frameworks/base/core/java/android/widget/AbsListView.java
4e30d89ceda832300f80bf73f4f58cd2b51bf112 25-Nov-2010 Mindy Pereira <mindyp@google.com> Per designers, update the algorithm for when effect is clipped or stretched.

New algo is:
1) if view width < MIN_WIDTH (currently 300px), clip glow and edge to fit
2) else stretch glow and edge to fill width
3) make alpha and height of edge and glow 30% "more intense"

Change-Id: I8f121bb165a8fb835bc33950dbedd1bc80c5df65
/frameworks/base/core/java/android/widget/AbsListView.java
a5531d784b9b79fe3bf9b30d99e9c99ea3947c6d 23-Nov-2010 Mindy Pereira <mindyp@google.com> Update edge and glow rendering to match new specs.

Change-Id: Id2ad0ff4fa78617cb79475952e9ce561ee8fec10
/frameworks/base/core/java/android/widget/AbsListView.java
637d337b58d8eec6de19230a5dd5ca5581c0478d 25-Aug-2010 Adam Powell <adamp@google.com> Merge overscrolling from gingerbread.

Change-Id: I3eb4413261b38ddd8c609d6153bdfd4ae46c6a0f
/frameworks/base/core/java/android/widget/AbsListView.java
b43d6a30ad1e7bf0e64192a1f144b3fe1bcf7f95 20-Nov-2010 Erik <epastern@google.com> b/3215774 Fix scrollMode notifications

When transitioning from a fling to a touch the mode was being set
to idle instead of ending up in scroll. This corrects the
notifications to get sent in the correct order.

Change-Id: Ideed6e4064b2be62788307f4232015fa88e101b4
/frameworks/base/core/java/android/widget/AbsListView.java
5e9d94505bd7d4e294bfe309db25e293164e2d29 19-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Fix AbsListView StrictMode.Span end point on flings.

Noticed after logs showed a ton of false positives, I went back and
looked at the history. During the review of the previous CL, I
accidentally moved the finish() of the fling animation tracking inside
the PROFILE_FLINGING block, which is normally off.

Re-tested this CL with StrictMode debugging enabled and it now always
propertly resets to 0 animations in flight when no animations are
running.

Change-Id: Ie9746df36e2ec3f82679b20e91e3d93c05b863d4
/frameworks/base/core/java/android/widget/AbsListView.java
8c3e0fc84f69e9fe704dc20dd6c2bab1ce43fe93 18-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3207067 - adjust AbsListView content pop-in when clipToPadding=false

Known issue: Dividers are not drawn on top. This should be handled
once overscroll is merged in.

Change-Id: I778703601183f919e7c4345cfc4af6036b4ada4e
/frameworks/base/core/java/android/widget/AbsListView.java
d348bb4feff72d047a1037537be2d334a00c380c 15-Nov-2010 Gilles Debunne <debunne@google.com> Changes to scrolling physics

Spline curve for Scroller fling motion (debunne)

Flywheel motion for AbsListView

Change-Id: Ic1f226878745ff4c302dc6bd0752868fa182dd7b
/frameworks/base/core/java/android/widget/AbsListView.java
1cc13b6d1cc7203ad126b0708f0bf697e111264f 17-Nov-2010 Brad Fitzpatrick <bradfitz@android.com> Annotate ListView with StrictMode.Span

Change-Id: Ibee1bfa73c85dac2e8103eb5900f0609cbb30ee7
/frameworks/base/core/java/android/widget/AbsListView.java
0046bd8ea6f56b632fd7b9c4c33e22f57232bcbc 16-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3192412 - ListView doesn't reportScrollStateChange properly
for programmatic scrolls

Allow for onScrollStateChanged implementations that end up changing
scroll state again.

Change-Id: I53105f5be708bacc0d3ec8e76ba1cc22f4131467
/frameworks/base/core/java/android/widget/AbsListView.java
0785279dad89d90564f42beb2c4620bf387a966e 11-Nov-2010 Adam Powell <adamp@google.com> Refine AbsListView transcript mode behavior.

Make transcript mode only scroll to the bottom if the last item is
already scrolled fully to the bottom when the change occurs Before
this, transcript mode would cause a list to scroll to the bottom as
long as the last item in the adapter was visible at all. Long items
would make this behave unexpectedly.

Change-Id: Ia6a52c969ea6d50653cf2b8cd4dc30ba517cf803
/frameworks/base/core/java/android/widget/AbsListView.java
a0eeeac82010e03ce8949bf7efed909afdbaf41c 05-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3167945 - list selection mode should persist across rotations

Modal multi-choice mode action modes will now be restarted when
restoring instance state provided that the application has set a
multi-choice mode callback before instance state is restored. This
matches other list state restoration behavior with adapters.

Change-Id: I8e96e079faa3a086d3d4480d65b8c53a60f4c0ea
/frameworks/base/core/java/android/widget/AbsListView.java
2614c6c1f9fb19af21b901c16c443335bbc9d50b 05-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3167099 and bug 3009490 - GridView choice modes and
getCheckedItemCount after orientation change

Remove the restriction on choice modes for GridView - this is handled
by common code in AbsListView. Persist the checked item count in saved
instance state.

Change-Id: Iebb964bb3c43779c082a458ea3f2754ab694b69d
/frameworks/base/core/java/android/widget/AbsListView.java
e213677037f836529efcc0ac201fc61dd95481c5 04-Nov-2010 Dianne Hackborn <hackbod@google.com> Push the jumpDrawablesToCurrentState() thing off everywhere it should be.

Also add a new interface that items in AbsListView can implement to
adjust the bounds of the selection shown for them. This will allow
contacts to use list view's regular selection facility rather than
implementing something special in their item views.

Change-Id: I29cbdbc7122111ee97e47fe7d6ec55ff07be79cc
/frameworks/base/core/java/android/widget/AbsListView.java
079e23575024e103358c982152afb7a720ae1a8a 19-Oct-2010 Dianne Hackborn <hackbod@google.com> Add new fade in/out feature for drawable containers.

This is used to allow list view's pressed and activated indicators
to fade in an out, though of course it can be used elsewhere as well.

There is a lot of complexity in supporting this in list view. The
two main things that are being dealt with:

- When recycling views, we need to make sure that the view's drawable
state doesn't get animated from an old row's state. The recycler
now keeps track of which position a view was last in, and if it is
reused at a new position there is a new View/Drawable API to tell
it to jump to its current state instead of animating.

- For the pressed indicator to fade out, we need to keep displaying it
after it is hidden. There are new variables and code to keep track
of this state, and tweaks in various places to be able to remember
the last selected position and continue updating the drawable bounds
as needed.

Change-Id: Ic96aa1a3c05e519665abf3098892ff2cc4f0ef2f
/frameworks/base/core/java/android/widget/AbsListView.java
a32edd4b4c894f4fb3d9fd7e9d5b80321df79e20 26-Oct-2010 Adam Cohen <adamcohen@google.com> Adding click feedback to widget collections

Change-Id: I97fceb6c68ca6eb1b703eafacf201e1aed7c38e7
/frameworks/base/core/java/android/widget/AbsListView.java
b9b8f7b99b25eb9520e5d33e5a84d202d96e81af 25-Oct-2010 Adam Powell <adamp@google.com> DO NOT MERGE Fix bug 3124899 - timeout in CTS test
ExpandableListViewBasicTest

A certain sequence of events could cause AbsListView to enter an
infinite event loop. Only report reaching a scroll boundary to the
overscroll code path if the Scroller wants to move further, not if
we're done moving.

Change-Id: Ifdaf72d60ca25584e4a37d3d8f17365e0fcbfa40
/frameworks/base/core/java/android/widget/AbsListView.java
6a0d09944b550b15dce6ead35917e80205cbf09b 25-Oct-2010 Adam Powell <adamp@google.com> Fix bug 2964954 - Lists blow up if their adapter changes while detached.

If a list adapter's content changes while the ListView is detached
from a window, the data change is not registered and the next
layoutChildren call causes the ListView to detect a bad change that
the adapter did not notify ListView about. Any time a ListView becomes
attached to a window, has a valid adapter, and no attached data set
observer, treat it as a data set changed event.

Change-Id: Ic00c05a1a0d063399dc78d5d877e3d5f9b1bee16
/frameworks/base/core/java/android/widget/AbsListView.java
bf5f2b3ffebcf4201f228b73137f32486638775f 25-Oct-2010 Adam Powell <adamp@google.com> Fix bug 3005359 - onListItemClick and ActionMode conflict

CHOICE_MODE_MULTIPLE_MODAL should not dispatch item click events
when in selection mode.

Change-Id: I664fdd01e5c5691ea6ad071bc36a9497fd97ce4d
/frameworks/base/core/java/android/widget/AbsListView.java
299acb581205b6574bfa91824b1b887e265c4c40 21-Oct-2010 Marc Blank <mblank@google.com> Don't stop FlingRunnable when deltaY is rounded to zero

Change-Id: I6558d1b2e392c741108ca13da83351eadbce0824
/frameworks/base/core/java/android/widget/AbsListView.java
322171b333a1c796fcc1428a96ea1d854a3881fa 14-Oct-2010 Erik <roboerik@android.com> Adds a way to scroll to a position in a given duration

Adds a method to AbsListView to allow for a smooth scroll to an
offset position with an app defined duration.

Change-Id: I8cd690597cda078b25bce9aeba683be030d6b155
/frameworks/base/core/java/android/widget/AbsListView.java
21317d1ddaa7c7204dfea9b38f87c6991f4a41af 12-Oct-2010 Romain Guy <romainguy@google.com> Report scroll state change after cancelling the fling runnable.

Bug #3089972

This change also adds the ability to control the ListView's fling
velocity by introducing a new scale factor.

Change-Id: I4030d3fe3688f72b2b8250ac85bbf000e9adc883
/frameworks/base/core/java/android/widget/AbsListView.java
4bede9e425875542976a422222510fa4056a8339 12-Oct-2010 Romain Guy <romainguy@google.com> Add an API to control AbsListView's friction.

Change-Id: Iafb08cd28703d282c369c472a5d85a22cc5dacb7
/frameworks/base/core/java/android/widget/AbsListView.java
ca6eb210e6eb0afe84bdf0558085f555a9a32655 07-Oct-2010 Mindy Pereira <mindyp@google.com> DO NOT MERGE Only show edge glow effect on 1 side at a time.

Pulling on a side should force the opposite side into "decay".
Fixes b/3061753 new list "bounce" shouldn't show on both ends

Change-Id: I4742e8c212f8e13da29ed887ebdd712903b533f7
/frameworks/base/core/java/android/widget/AbsListView.java
737e8fe2c7ce167bc68ad779160488007a5e0b1d 05-Oct-2010 Adam Powell <adamp@google.com> DO NOT MERGE Fix bug 3001751 and bug 3001584 - Gingerbread API review for over-scroll

Change-Id: If34c8ea4e15697420adad0bc404f3c278efd7c1b
/frameworks/base/core/java/android/widget/AbsListView.java
e6c4747276cd4e7f0243bcd8ea50ad3e66609fef 02-Oct-2010 Mindy Pereira <mindyp@google.com> DO NOT MERGE. Fix logic for switching between overscroll and scroll modes.

The issue here was originally that webview was showing twice
as intense of an effect for edge glow as lists. The root cause
was that abslistview was calling onPull half as often as webview. This
occurred because every time an action_move came into the touch handler
for abslistview when it was in overscroll, the mode was ALWAYS changed
back to scroll mode. Therefore, half the action_move events were
essentially being eating by the abslistview state machine.
After fixing that issue, needed to decrease the intensity of the effect
for webview and abslistview by halving the PULL_DISTANCE_GLOW_FACTOR.

Change-Id: I5dbdf4f1219f3bb157a71d4fccf8fa42e2abe047
/frameworks/base/core/java/android/widget/AbsListView.java
3ec9a45c36d3ca5ffbc6e85bbeb497b065e14155 24-Sep-2010 Winson Chung <winsonc@google.com> Re-architecting RemoteViewsAdapter internals due to new constraints.

- Respecting the AdapterView/Adapter contract using FrameLayout notification to update individual items
- Initial changes to allow for keeping (currently bitmap only) memory in check when loading numerous RemoteViews
- Fixing issue with leaking activities due to extra service connection references
- Fixing issue with multiple RemoteViewsAdapters being set on the same AdapterView
- Fixing small issue with StackView sometimes requesting indices out of bounds
- Removing background loading, reverting to previous message-queuing method (seems to be performant now)

Change-Id: I42313767aa791dfe35c247c97ae5d64389e6bb4c
/frameworks/base/core/java/android/widget/AbsListView.java
9b3a2cf2a0a482ce8212eb2775176dd4c23e8e9a 16-Sep-2010 Winson Chung <winsonc@google.com> Prevent multiple RemoteViewAdapters from being set for the same intent.

Fixing issue where we were comparing and storing intents incorrectly in the RemoteViewsService reference counting scheme.

Change-Id: Iedf5997ed3a3ee7f8729cf8689121913196571f8
/frameworks/base/core/java/android/widget/AbsListView.java
234a5715309ea74757780aff6123e3144efb5b69 14-Sep-2010 Adam Powell <adamp@google.com> Improve ListView smooth scrolling timing

Change-Id: Icbd727efd5bafa1a80d65003aead1697f6103fda
/frameworks/base/core/java/android/widget/AbsListView.java
e6ffce9f65a1a8f498eb51a993a8cbf5f13a109e 03-Sep-2010 Adam Powell <adamp@google.com> Fix bug 2973252 - Make overscroll glow respect ifContentScrolls

Change-Id: I0e4bf09c0cbc660c9b8d26a3526b09568c05e93d
/frameworks/base/core/java/android/widget/AbsListView.java
5916882c3f13429d29f95b89dd94bd2d5733da85 02-Sep-2010 Adam Powell <adamp@google.com> DO NOT MERGE Overscroll continues; asset and behavior tweaks.

Change-Id: I367643877a397e7b4fa9bd8c40639ff69436e7f0
/frameworks/base/core/java/android/widget/AbsListView.java
5be37c81a72c2085db87ae9e6f235de358e4b4cb 01-Sep-2010 Daisuke Miyakawa <dmiyakawa@google.com> Clarify the behavior of ListView#setColorHint().

Bug: 2965521
Change-Id: Iacd139b0e9eec4bfdd007eb1391cc45c1d889b00
/frameworks/base/core/java/android/widget/AbsListView.java
0a77ce277c6ed2aa25bbea5f8cd5687c0720cb68 25-Aug-2010 Adam Powell <adamp@google.com> New edge effects for scrolling widgets (overscroll)

TODO: Currently disabled for WebView. Assets used for the glow effect
need to be themable/styleable. Overscroll effect should take place
even when the user did not grab the widget within actual content.

Change-Id: I68277d14d37dc5bcdb9254eaddf6e4998b3f2bf4
/frameworks/base/core/java/android/widget/AbsListView.java
4ef1da3c04aed2fc7af7796a731f5cf00712ae02 28-Aug-2010 Daniel Lehmann <lehmannd@google.com> Perform a float division for screenTravelCount

Change-Id: Ie0f23344a26c7ecf1a641e60d649ad0fc54fecbf
/frameworks/base/core/java/android/widget/AbsListView.java
f343e1ba7e796120eefa917dbf78348feea98e11 14-Aug-2010 Adam Powell <adamp@google.com> Add selection mode support to GridView.

Changed 9.xml to make update-api behave with the API change involved.
Several fields and methods moved from ListView to AbsListView. This
should not break source or binary compatibility.

Change-Id: Icad6e238522b8b7cc5bbc935ad89ac3e015572c1
/frameworks/base/core/java/android/widget/AbsListView.java
ecb1d5ded9afee63735dc91cfb08ada2c639d237 11-Aug-2010 Konstantin Lopyrev <klopyrev@google.com> resolved conflicts for merge of f00ee0f7 to master

Change-Id: I13b968bde37fad8fffdaa9bb94a0f1da9b2e6e0c
bea95162ca25bd00b0479d93739b6283795c3986 11-Aug-2010 Konstantin Lopyrev <klopyrev@google.com> Categorizing exported view properties.

Change-Id: I79c42019836973d80662c21d195d088ae01537a0
/frameworks/base/core/java/android/widget/AbsListView.java
8350f7dbc3a62211b2891f35911e4073d24c4cc5 28-Jul-2010 Adam Powell <adamp@google.com> Added CHOICE_MODE_MULTIPLE_MODAL to ListView.

Based on ActionModes, CHOICE_MODE_MULTIPLE_MODAL supports the new
Honeycomb-style selection mode.

Change-Id: I293ea22487db8e081c95e5236f1e053f7dd4ada6
/frameworks/base/core/java/android/widget/AbsListView.java
499cb9f516062b654952d282f211bee44c31a3c2 16-Jul-2010 Winson Chung <winsonc@google.com> Initial changes to allow collections in widgets.

Change-Id: I3cfa899bae88cd252912cecebc12e93c27a3b7c9
/frameworks/base/core/java/android/widget/AbsListView.java
266e05179cc8f5fe6324510aa54bb8c1779d2f6c 14-Jul-2010 Romain Guy <romainguy@google.com> Prevent crash in ListView when changing cache hint.
/frameworks/base/core/java/android/widget/AbsListView.java
371133174b84a72ba61d5dc53b34216bbf0ecf1c 09-Jul-2010 Adam Powell <adamp@google.com> Fix some issues with smooth scrolling ListViews

Change-Id: I8b0f3d318eb0508ed12b92584c368e6f0edeb0be
/frameworks/base/core/java/android/widget/AbsListView.java
e44afae7ff91edb80142fc62ce2bc2cb9d133d09 01-Jul-2010 Adam Powell <adamp@google.com> Add AbsListView#smoothScrollToPositionFromTop

Change-Id: I4dec9cdcf63b1075264c772faf1303c7281d0efe
/frameworks/base/core/java/android/widget/AbsListView.java
c047b956360a2476793b38d9d3e996fed941af8b 23-Jun-2010 Adam Powell <adamp@google.com> am bc337d2f: am 73ccafb5: Merge "Fix a bug where requestDisallowInterceptTouchEvent does not get called when scrolling is resumed after stopping a fling." into gingerbread

Merge commit 'bc337d2f675e8417be5534439e1b4ed1bc45a9c7'

* commit 'bc337d2f675e8417be5534439e1b4ed1bc45a9c7':
Fix a bug where requestDisallowInterceptTouchEvent does not get called
110486f932510fb49bfeff978b0b0e0237ee0656 23-Jun-2010 Adam Powell <adamp@google.com> Fix a bug where requestDisallowInterceptTouchEvent does not get called
when scrolling is resumed after stopping a fling.

Change-Id: I6796c5082cb81b3116de5baf1f27fe3addb40d00
/frameworks/base/core/java/android/widget/AbsListView.java
e46c1e817c4e801b309af9644b9c20a188147303 25-May-2010 Adam Powell <adamp@google.com> am 49551ca4: am 9a559970: am f67c874c: am 7e5e3745: Fix bug 2710825 - Prevent ExpandableListView from scrolling too far when expanding children.
7e5e3745cf0103219a13071fbd488c3c01da85d9 25-May-2010 Adam Powell <adamp@google.com> Fix bug 2710825 - Prevent ExpandableListView from scrolling too far when expanding children.

Change-Id: I21b37647c5ad16e4f57fdda433e3b3ee2c7c83ad
/frameworks/base/core/java/android/widget/AbsListView.java
82afc7b32b5a22fe5a0f1a98e8fd0873a4b7f9a1 13-May-2010 Romain Guy <romainguy@google.com> Prevent possible leak in AbsListViews.

This change unregisters a list's data observer from the adapter when the list
is detached from the window. The default data observer impl. is a non-static
inner class with a synthesized pointer to the list. Thus if an app keeps
the adapter around the list is also kept around. This can be a problem with
dialogs in particular.

Change-Id: Ia95a995d3f54b9caf1bbcd2c7239a0318511b08c
/frameworks/base/core/java/android/widget/AbsListView.java
57f65e04fdcdbca606a998e3d294cb06a454585d 07-Apr-2010 Adam Powell <adamp@google.com> am 203cd5e0: am 85a650fe: am c696b0df: am eb3d47e4: Merge "Fix bug 2574860 - fix AbsListView.trackMotionScroll edge detection" into froyo
91f234fe4d070121d65095e98c9b2e958cf22548 07-Apr-2010 Adam Powell <adamp@google.com> Fix bug 2574860 - fix AbsListView.trackMotionScroll edge detection

Change-Id: I0fc6d2b8547ab56937eeb5ef3438003a06b966ec
/frameworks/base/core/java/android/widget/AbsListView.java
702d985b5d4c28b04b948fd2d07bdb26a3bbe167 02-Apr-2010 Adam Powell <adamp@google.com> am 942d070c: am 1f29b4cd: am 21990922: Merge "Fix AbsListView scrolling behavior at edges." into froyo
b7795432a5512080fae2a0aa123c02b222f7bca6 02-Apr-2010 Adam Powell <adamp@google.com> Fix AbsListView scrolling behavior at edges.

Allow the user to start scrolling back into content immediately
after dragging past the end of content.

Remove some dead code.

Change-Id: Ife8f60499ac58179ba1e2500ca8745916392a4bc
/frameworks/base/core/java/android/widget/AbsListView.java
ffd8e0fe94b7571599710c7f03410062f9a966be 01-Apr-2010 Adam Powell <adamp@google.com> am fff52b6a: am 5af7ef60: am 40cd1cf6: Merge "Fix bug 2562240 and clean up scrollbar behavior" into froyo
a0d645cb6980113a624e6e70a7fa9ae5e91bbac8 01-Apr-2010 Adam Powell <adamp@google.com> Fix bug 2562240 and clean up scrollbar behavior

Change-Id: I551803a1c997c9d10e1d004ce14472af6090f432
/frameworks/base/core/java/android/widget/AbsListView.java
30346c4399af45b46996f504004796177b975349 25-Mar-2010 Romain Guy <romainguy@android.com> Add support for XML-defined adapters.
This is preliminary work for new types of Launcher widgets.

See javadoc in android.widget.Adapters for more details.

Change-Id: I413b8d5f97673e255d84dc07ad112c333c0ce9dc
/frameworks/base/core/java/android/widget/AbsListView.java
005c0a445e32dfbf18bf93d209da857604925a58 31-Mar-2010 Adam Powell <adamp@google.com> Fix bug 2523622 - ListView invokes onItemClick for disabled adapter items

AbsListView was relying on TOUCH_MODE_DOWN to signal that the item was
enabled, but onInterceptTouchEvent uses it for other purposes. Check
before dispatching the event.

Change-Id: I6babd3872cb51ebdba8e97a3b349e0cc08cd1279
/frameworks/base/core/java/android/widget/AbsListView.java
9d32d24dbd8a015c9d5c44ed4901d5a666eb8e7f 30-Mar-2010 Adam Powell <adamp@google.com> Remove overscrolling

Change-Id: I7e9db8d8a9b8ef67f0c0c82bf57c9155b7ebabea
/frameworks/base/core/java/android/widget/AbsListView.java
aeb30e6d22e5dc92e0a82653cea3b36b392cfa4d 26-Mar-2010 Adam Powell <adamp@google.com> Fix bug 2544916 - Fun with AbsListView touch mode

Change-Id: I79de051891d535f44c0910295976d1f3634aca4c
/frameworks/base/core/java/android/widget/AbsListView.java
6579b0b4ac0e781efab044aaaf3f66447cf5e067 25-Mar-2010 Adam Powell <adamp@google.com> API refactoring for OverScroller.

OverScroller is no longer a child class of Scroller and several
Scroller methods that do not make sense for OverScroller and could
cause misbehaving edge cases have been removed or hidden and
deprecated.

Change-Id: Ie055b607bd3b36c47ab9798d5c9518aef686b474
/frameworks/base/core/java/android/widget/AbsListView.java
0ee0a2ea57197cb2f03905454098d9a7a309f77b 23-Mar-2010 Gilles Debunne <debunne@google.com> New edge effect when OverScrolled.

The constant force that was applied has been replaced by a spring force
when the OverScroller goes beyond valid position values.

Bounce coefficient can be set for each directions.

Change-Id: If7d506d3f35b3451f590c54d6c04a1deb8d9ca95
/frameworks/base/core/java/android/widget/AbsListView.java
45b3dcd07ef58164484e3648ec0ddc8fdba8e5d1 22-Mar-2010 Romain Guy <romainguy@android.com> Fix possible NPE in AdapterView's OnItemClickListener clients.
Bug #2533718

Change-Id: I32e72e29a7b4bb8331f2492f5c5b5507d1b3993a
/frameworks/base/core/java/android/widget/AbsListView.java
52964243dc95f74ac2ab9a96d031a36931a11931 24-Feb-2010 Gilles Debunne <debunne@google.com> New OverScroller with edge bouncing effect.

OverScroller has been made a Scroller child class. Both use a physical constant deceleration
force to compute the animation. OverScroller also includes a rubber edge bounce effect.

Approved by Jim Palmer.

Change-Id: I3f43a03694b8cb6bfa0784c2663b37c9c39322cc
/frameworks/base/core/java/android/widget/AbsListView.java
8a836a8b98557263152a476f614b6e05e19ffc5a 18-Mar-2010 Adam Powell <adamp@google.com> Eliminate haptic feedback when hitting an overscroll barrier due to a fling.

Change-Id: I434ec3edd95a19677ad9dbd1ac5ca3f3f5d091cb
/frameworks/base/core/java/android/widget/AbsListView.java
f3c2edaa213e6d8c779ab819ff630b4ce389007c 17-Mar-2010 Adam Powell <adamp@google.com> Make AbsListViews remeasure children after rotation

Fixes issues in Settings and other places where TextView separators
aren't resized properly after a rotation

Change-Id: Id5c53d4c5e6621e79e723ec2c300c8a43f12e379
/frameworks/base/core/java/android/widget/AbsListView.java
c5014294a07b33e537b76f62d053cdcfcc7a9a04 16-Mar-2010 Adam Powell <adamp@google.com> Fix bug 2516434

AbsListView shouldn't update mLastTouchMode in onTouchModeChanged;
it's only used in onWindowFocusChanged and since onTouchModeChanged
gets called first, the current and last modes will never be different
to trigger the right code path.

Change-Id: Ic9bc454c87826622df54417801fd8f13213c480e
/frameworks/base/core/java/android/widget/AbsListView.java
51a6bee6719820d09595f474264fcb833eff470a 15-Mar-2010 Adam Powell <adamp@google.com> Fix bugs when transitioning out of touch mode

Change-Id: I56cbac17fba500871af839a87d746ea8e1fd5d0f
/frameworks/base/core/java/android/widget/AbsListView.java
2a20ddd90bb9eeab56ffaa916ed062dfd5cf7fa6 12-Mar-2010 Adam Powell <adamp@google.com> Tame some monkeys

Change-Id: I1bdcd466d6bacb0cebdd6bb0b5339477c2c284b0
/frameworks/base/core/java/android/widget/AbsListView.java
84222e04252720cf681032e865db526ce4a612a4 11-Mar-2010 Adam Powell <adamp@google.com> Fix overscroll distance calculation for stack-from-bottom ListViews

Change-Id: Ic8278763586d03c152f7b30b7fdd0b37b0dfc9cb
/frameworks/base/core/java/android/widget/AbsListView.java
97566043afdb714fd4eea6bb22898964e95f16bc 10-Mar-2010 Adam Powell <adamp@google.com> Fix ListView filter popups when window focus changes

Change-Id: I8c468900d5dd4d8d82308e2bed3bf992b6c803c7
/frameworks/base/core/java/android/widget/AbsListView.java
fee20911e3ec97af64e4ac2c519d75b5f75e2a27 09-Mar-2010 Adam Powell <adamp@google.com> Fix bug with AbsListView position scrolling

Change-Id: I91338f0533178417c874325f5f126d1b5fbb5f92
/frameworks/base/core/java/android/widget/AbsListView.java
029cfbd6f28e1664e8ef77ea928560f20ac3fb8e 09-Mar-2010 Adam Powell <adamp@google.com> Fix issues with ListView.smoothScrollBy

Change-Id: I4a2752c56a1d2ad3227644f764d6be7a02c9eb8d
/frameworks/base/core/java/android/widget/AbsListView.java
090e0f08b9d8ea6328cd5210f1a27953fb0e4e67 05-Mar-2010 Romain Guy <romainguy@android.com> Do not select any item when the user clicks outside of the list content.
Bug #2485544
/frameworks/base/core/java/android/widget/AbsListView.java
ca8faae6b930abb2f1622c50ddee0b205b943ade 04-Mar-2010 Adam Powell <adamp@google.com> Awaken ListView scroll bars for overscroll
/frameworks/base/core/java/android/widget/AbsListView.java
0bf88594c43ced48d862d122e3e84967b3b63658 02-Mar-2010 Romain Guy <romainguy@android.com> Make sure all list items know they are in a window.
Bug #2476671

If you had a ListView with a layout_height equals to WRAP_CONTENT, you would
get list children with a parent but not attached to the window. This was caused
by the onMeasure() code: that code was obtaining views from the adapter to
measure them and putting them in the recyler for later reuse. Unfortunately
the recycler assumes that views have been attached to the window but detached
from the parent, thus causing much grief. The fix simply forces measured views
to be added to the window the first time they come out of the recycler.

ListView, bow before me for I am your master!
/frameworks/base/core/java/android/widget/AbsListView.java
9bf3c128509de5bd66222943a00acfcd1000cd62 26-Feb-2010 Adam Powell <adamp@google.com> ListView now tries to keep the position containing focused child views on-screen.
/frameworks/base/core/java/android/widget/AbsListView.java
9b1bb81fe256e3b342a7375be39da7e752eaf3d4 26-Feb-2010 Romain Guy <romainguy@android.com> Do not detach headers and footers from the list view.
/frameworks/base/core/java/android/widget/AbsListView.java
9c3184cc162ee8c10eabd3f996629a9397a1f551 26-Feb-2010 Romain Guy <romainguy@android.com> Do not recyle headers and footers when measuring the ListView.
Bug #2461893

This was causing headers and footers to be in a wrong state after the first
recycling pass, which would cause them to be detached from the window. This
was in turn preventing invalidate operations from performing successfully.
/frameworks/base/core/java/android/widget/AbsListView.java
4cd47702f00a2fd6d6bc16c5398edb884d98bdca 25-Feb-2010 Adam Powell <adamp@google.com> HorizontalScrollView multitouch scroll and only grip on content
AbsListView multitouch scroll and only grip on content
/frameworks/base/core/java/android/widget/AbsListView.java
a440b002aa59e1455bdfa2c5a1ca51c74bbc19ac 25-Feb-2010 Romain Guy <romainguy@android.com> Prevents ListView items children to modify properties of other children.
Bug #2464502

This fix introduce a new dispatch mechanism to tell views when they are temporary
detached/reattached from/to a ListView. This is very important to remove pending
callbacks or cleanup temporary states.

This change also modifies TextView which was relying on that callback in a very
particular case: a focused EditText in a ListView. The modified code acts only
when in that case, not if onStart/FinishTemporaryDetach() is called via
dispatch*() (== recycled views in ListView.)
/frameworks/base/core/java/android/widget/AbsListView.java
ab3e1052823620a91a1330b31da6aaf530ed8c3b 18-Feb-2010 Adam Powell <adamp@google.com> Don't switch layout modes in AbsListView#onTouchModeChanged()
Don't stomp mResurrectToPosition for LAYOUT_SPECIFIC in AbsListView#hideSelector()
/frameworks/base/core/java/android/widget/AbsListView.java
7fd28847f11f718033737976d85969869e0dc66d 17-Feb-2010 Adam Powell <adamp@google.com> Don't move the fast scroll thumb with a list on overscroll.
/frameworks/base/core/java/android/widget/AbsListView.java
c9fbaabc1bbf847b6e8bf2595068cbd990f3da55 17-Feb-2010 Adam Powell <adamp@google.com> XML attribute for overscrolling behavior
/frameworks/base/core/java/android/widget/AbsListView.java
0b8bb4282a7d1afb24f8c4d5beb2ca4ecc731116 08-Feb-2010 Adam Powell <adamp@google.com> Overscrolling modifications. Overscroll will not allow the user to
scroll content out of view. Scrolling will slow down halfway to the
barrier point. API added in View. AbsListView, ScrollView,
HorizontalScrollView all use this API. Overscrolling uses haptic
feedback. Added scroll barrier pattern to config.xml.
/frameworks/base/core/java/android/widget/AbsListView.java
498b2960d541fe271cc920eb92d60060fe219b35 08-Feb-2010 Romain Guy <romainguy@android.com> Always remember the last touch mode state when touch mode changes.

Do not just rely on getting an onWindowFocusChanged() event. There are cases
where we might not get it (view removed from the window for instance.)
/frameworks/base/core/java/android/widget/AbsListView.java
458034799861fef47e00d85d528b4dac5e00bd51 26-Jan-2010 Adam Powell <adamp@google.com> ListView updates. Fixed several overscrolling bugs. Added programmatic
scrolling to ListView. Added auto-scrolling to show expanded content
for ExpandableListView. Fixed an AbsListView recycler bug where
offscreen views would stick around in the view hierarchy.

Addresses bugs 1161597 and 1119429.
/frameworks/base/core/java/android/widget/AbsListView.java
eb6b1fa7b86e529ed7de1c77fbc77ccef65bf6a9 03-Feb-2010 Adam Powell <adamp@google.com> Fixed an overscrolling bug in AbsListView with a root in OverScroller.
/frameworks/base/core/java/android/widget/AbsListView.java
24562487126b48c8ff39a42b76f3705f238da6c8 01-Feb-2010 Romain Guy <romainguy@android.com> Do not reshow the filter popup after hiding it.

This was causing the popup to show after moving a list out of the screen in
the new music app.
/frameworks/base/core/java/android/widget/AbsListView.java
79ac3395b58de5b99f0bb43d8950f6b95348326d 29-Jan-2010 Adam Powell <adamp@google.com> Overscrolling in AbsListView; visibility cleanup for FlingRunnable
/frameworks/base/core/java/android/widget/AbsListView.java
43c9cdffb619f93d9d4525dffd05701dc9c8c4bf 27-Jan-2010 Romain Guy <romainguy@android.com> New View.dispatchDisplayHint() API.
Bug #2399147

This new API will be used by scrollable containers to tell children that they
are/are not displayed. This will allow lists to hide their filter popup window
for instance.
/frameworks/base/core/java/android/widget/AbsListView.java
52e2ef8cac0cd6d78c2c2f5783846e03c636a54c 14-Jan-2010 Romain Guy <romainguy@android.com> Update ListView's children when the drawing cache color hint changes.
Bug #2371777
/frameworks/base/core/java/android/widget/AbsListView.java
670dd819425b44ab4cb7565a322fd21ab6e811f5 14-Jan-2010 Mark Wagner <mxw@google.com> bugfix endfling case (bug 2300534)

When the menu comes up over the activity we call removeCallbacks(mFlingRunnable);
The effect of that is that our mTouchMode variable is left dangling in the fling
state. This change calls endFling() after removeCallbacks. In the specific bug
being addressed we depend on reportScrollStateChange() because we avoid doing
requeries while scrolling.
/frameworks/base/core/java/android/widget/AbsListView.java
21875052adddf2b52bc57fea62bf097b8aa04cbf 07-Jan-2010 Romain Guy <romainguy@android.com> Fix two ListView bugs related to onAttachedToWindow/onDetachedFromWindow.
Bug: #2359368.

onDetachedFromWindow() would never be called for views living in the scrap heap, but onAttachedToWindow() could be called several times for views recycled from the scrap heap.
/frameworks/base/core/java/android/widget/AbsListView.java
c7426628dfcf5f667ef398235a70de37be3df01f 05-Jan-2010 Adam Powell <adamp@google.com> Don't perform ListView click events for INVALID_POSITION.
Addresses bug 2329294
/frameworks/base/core/java/android/widget/AbsListView.java
cf6c5720a759709db69f253c36646d22ceb23f90 04-Jan-2010 Romain Guy <romainguy@android.com> Do not start filtering if the first character is a space.
Bug: #2347833.
/frameworks/base/core/java/android/widget/AbsListView.java
f3c7d4294dee6a271e417d81bdd74c87e57ce5b3 05-Dec-2009 Romain Guy <romainguy@android.com> Report SCROLL_STATE_IDLE after the user finishes a scroll (not a fling.)

When the user lifts her finger up, AbsListView computes the fling velocity
and report a SCROLL_STATE_FLING if the velocity is high enough. However,
when the fling is not initiated because the velocity is too low (case of
a normal scroll), the idle state was not set nor reported.
/frameworks/base/core/java/android/widget/AbsListView.java
83276b99987067938717b63d1b1763b168959ffe 07-Nov-2009 Romain Guy <romainguy@android.com> am 9d790678: Merge change I32ce8591 into eclair

Merge commit '9d790678bb83c829dddb9e4d0d6d6c4db7facc8b' into eclair-mr2

* commit '9d790678bb83c829dddb9e4d0d6d6c4db7facc8b':
Stop scrolling ListView when tapping a clickable item.
4b4f40f84e72579417604143e5f42115769649b8 07-Nov-2009 Romain Guy <romainguy@android.com> Stop scrolling ListView when tapping a clickable item.

Bug #2210279.

Approved by mcleron.

Change-Id: I32ce8591b00fada95072513f5de69674b45e4cf3
/frameworks/base/core/java/android/widget/AbsListView.java
18d1255ebe83d73df34832f2197a1e51ea717b96 02-Oct-2009 Romain Guy <romainguy@android.com> Prevents memory leaks by correctly detaching views in AbsListView.

AbsListView can reject views from the recycler's scrap heap but when that
happens the rejected view is not detached from the parent. This can be pretty
bad in the case of TextView since it prevents them from unregistering their
OnPreDrawListeners.
/frameworks/base/core/java/android/widget/AbsListView.java
f116bf8884b5b58aae261d148003811aa4a7c6e9 28-Sep-2009 Mike Cleron <mcleron@google.com> Fading scrollbars return. But you have to opt in.
/frameworks/base/core/java/android/widget/AbsListView.java
8d37426c754e9822feaa8c6cc0b7c13e8523e217 15-Sep-2009 Dianne Hackborn <hackbod@google.com> Various fixed for back key handling.

My last change was far from perfect. Hopefully this gets us
a little closer.

Change-Id: I413e55b6af42400b565de3040859d25d668bc9d2
/frameworks/base/core/java/android/widget/AbsListView.java
83fe3f559249451706957b1a5f660b2b8272f114 13-Sep-2009 Dianne Hackborn <hackbod@google.com> Last big work on #1991910: Make swipes work with capacitive keys

This takes care of allowing us to cancel the back button. The
back button is a bear because it is strewn all over the place --
everywhere you can close something, there is some code looking
for the back button that now needs to deal with being canceled.

The main things changed are activity (of course), dialog,
input method, search dialog. There are some other misc places
in the framework (and some I missed here that I will get in a
second pass).

To facility all of this, the key dispatching APIs now provide
a lot more support for dealing with looking for cancelled keys,
and incidentally also provide an actual API for catching long
key presses. This also helped clean up the code in PhoneWindow
where it deals with all of the combinations of key pressed and
releases. (And also allows people to override
Activity.onKeyLongPress() to provide a different long press
action for a standard key like search.)

And while I was doing this, I reworked how we detect long
presses by having this be part of the key event delivered by
the window manager. This should greatly reduce (hopefully
outright eliminate) the problems with long presses being
mis-detected when an application is being slow.

Change-Id: Ia19066b8d588d573df3eee6d96e1c90fdc19f57d
/frameworks/base/core/java/android/widget/AbsListView.java
6198ae8468668bf7374535c2eeeab8de7f8e7e99 01-Sep-2009 Romain Guy <romainguy@android.com> Prevent ListView from scrolling/flinging its content when the content fits on screen.

Change-Id: Id46313bca3ae53b0717cd74a4a6f889a01f9fcb1
/frameworks/base/core/java/android/widget/AbsListView.java
df01607380c81e26c1c90129aa22b2e1118e2b71 17-Aug-2009 Romain Guy <romainguy@android.com> Fix listview clicks with the trackball.
/frameworks/base/core/java/android/widget/AbsListView.java
dd753ae6115fdcb389b5abd8320245228b2e1d2d 17-Aug-2009 Romain Guy <romainguy@android.com> Honor the clickable and enabled properties in ListView.
/frameworks/base/core/java/android/widget/AbsListView.java
1f7f3c336a767802a0cada789f6b2055f45911dc 22-Jul-2009 Romain Guy <romainguy@android.com> Fixes #1994125. Ensures AbsListView's filter window is always dismissed.
/frameworks/base/core/java/android/widget/AbsListView.java
6bdbfcfa77177eb7c8905123f44f2fa5aa0f17b1 17-Jul-2009 Romain Guy <romainguy@android.com> Fixes #1861763. Prevents IllegalArgumentException in AbsListView on focus
search.

This change makes sure the focus search does not attempt to traverse views from
the recycler.
/frameworks/base/core/java/android/widget/AbsListView.java
4296fc4d326447875c26a925f12b3935632f13bb 06-Jul-2009 Romain Guy <romainguy@android.com> Fixes #1444844. Set a maximum fling velocity in scrollable views.
/frameworks/base/core/java/android/widget/AbsListView.java
f642aa2a44e63aa105bbc6aec59f9bee261986ef 09-Jun-2009 Romain Guy <romainguy@android.com> Removes gestures from ListView.
/frameworks/base/core/java/android/widget/AbsListView.java
0a20264db87e26f5b392f16159860b902d8c5bd3 08-Jun-2009 Romain Guy <romainguy@android.com> Do not automatically enable gestures in list based on filtering/fastscroll status. Enable gestures in Contacts for now.
/frameworks/base/core/java/android/widget/AbsListView.java
834f0391b50d33a832bd583fd7763a9a12208e8d 05-Jun-2009 Romain Guy <romainguy@android.com> Fixes #1899273.

When a "ghost" stroke was showing, events would be intercepted in ListView. This patch modifies the logic used to detect when to still events: either the current stroke is a gesture, or the previous stroke was a gesture.
/frameworks/base/core/java/android/widget/AbsListView.java
f993ad5b89a8aa47fcbc7494811f45bb74cb8713 04-Jun-2009 Romain Guy <romainguy@android.com> Fixes #1882836.

Prevents the gestures window from leaking. This change does exactly what was
done for the filter popup window: the popup is dismissed in onSaveInstanceState()
as it is the only place that is executed early enough to avoid the dreaded
window leak error.
/frameworks/base/core/java/android/widget/AbsListView.java
0a63716ed0e44f7cd32b81a444429318d42d8f08 29-May-2009 Romain Guy <romainguy@android.com> Modify the base gestures API to use streams instead of files. Adds new wrappers to easily load/save gestures from files, resources, etc. Do the same for the letters recognizer.
/frameworks/base/core/java/android/widget/AbsListView.java
c51ef9702d7ccd3dac15ccaeb509d1150f0a2d7f 29-May-2009 Romain Guy <romainguy@android.com> Fixes #1873537.

Only update the popup window when it is shown. This avoids throwing an NPE in PopupWindow.
A PopupWindow is only aware of its content view after being shown.
/frameworks/base/core/java/android/widget/AbsListView.java
b0ded43d3844d9d97c5d554e8ca4ec3ee2c7bbe1 28-May-2009 Romain Guy <romainguy@android.com> Uninstalls the gestures overlay when the letters recognizer cannot be loaded instead of simply dismissing the popup. This is cleaner and reuses the setGestures() method.
/frameworks/base/core/java/android/widget/AbsListView.java
8ae3f6190244156bc6e750680654057bd7816309 27-May-2009 Marco Nelissen <marcone@google.com> Fix another crash in Gestures, this one caused by the data file
having the wrong version. I made the loader print a message to
the log for this, and made the calling code disable gestures
for the listview instead of crashing.
/frameworks/base/core/java/android/widget/AbsListView.java
fea57edf0dd27bc21c34e7f96cd6383d6f2dff42 26-May-2009 Marco Nelissen <marcone@google.com> Fix crash in GestureOverlayView
/frameworks/base/core/java/android/widget/AbsListView.java
82f3495b146b267f3786997752cef25310176349 25-May-2009 Romain Guy <romainguy@android.com> Cleanup Gestures API and make it easier to use in 3rd party apps. Also fix the events processing in the gestures overlay mechanism. Give better control of the various properties of the overlay through XML attributes.
/frameworks/base/core/java/android/widget/AbsListView.java
d6a463a9f23b3901bf729f2f27a6bb8f78b95248 22-May-2009 Romain Guy <romainguy@android.com> Add a new API to ListView: setGestures(int). This allows developers to enable gestures to jump inside the list or filter it. This change also introduces a new XML attribute to control this API. It also adds the ability to theme the GestureOverlayView from the gestures library. Finally, this adds a new VERSION header to the binary format used to store the letters for the recognizer.
/frameworks/base/core/java/android/widget/AbsListView.java
13922e03037d71a538f24ddf61c0b61bb4eb5af0 13-May-2009 Romain Guy <romainguy@android.com> Fixes #1836075. Adds consistency checks for the View hierarchy. To enable them, you need a debug build and ViewDebug.sConsistencyCheckEnabled set to true in debug.prop. This change also lets you easily enable drawing and layout profiling in ViewRoot by setting ViewRoot.sProfileDrawing, ViewRoot.sProfileLayout and ViewRoot.sShowFps in debug.prop with a debug build.
/frameworks/base/core/java/android/widget/AbsListView.java
6dfed24158b8fc9150abee23992db621cd82aa43 12-May-2009 Romain Guy <romainguy@android.com> Fixes 1844680. Interrupted scrolling could lead to rendering artifacts. The ListView was invalidating itself in opaque mode but before the drawing could happen, it was getting rid of its scrolling cache, thus becoming translucent again.
/frameworks/base/core/java/android/widget/AbsListView.java
24443ea3992e372e47daa50266b0f2ec38cac388 11-May-2009 Romain Guy <romainguy@android.com> Fixes #1596240. Optimize invalidate/draw passes by marking opaque views and avoiding drawing them. Whenever a View requests an invalidate its parent check whether the view is opaque or not. When the view is not opaque, the framework behaves as it used to. However, when a view is opaque, the parent marks itself as being dirty because of an opaque view. Its parent then does the same, and so on. When the framework then starts drawing the views, it does not draw views marked as dirty opaque. If a view is dirty opaque and receives an invalidate request from a non-opaque view, it then clears the dirty opaque flag and behaves as before.
/frameworks/base/core/java/android/widget/AbsListView.java
20fb46fa1e16b57fe7aba2ac7cdf1efbf1a12393 05-May-2009 Romain Guy <romainguy@android.com> Fixes 1830181. Tapping disabled items in a ListView would cause the framework to take a code path that wasn't resetting the mMotionCorrection variable if it had been previously set. This would force ListView to apply a scroll to its children even though it was unnecessary. This simple fix prevents the issue by resetting mMotionCorrection appropriately.
/frameworks/base/core/java/android/widget/AbsListView.java
875d50a4b9294b2be33cff6493cae7acd1d07ea7 24-Apr-2009 Karl Rosaen <> AI 147564: Merge back from search branch to donut. Notes:
- all public apis and framework changes have been reviewed by relevant folks in our branch (e.g romainguy)
- all new public apis are @hidden; they will still get reviewed by api council once we're in git
- other than that, it's mostly GlobalSearch and search dialog stuff, a new apps provider, and some tweaks
to the contacts provider that was reviewed by jham

Automated import of CL 147564
/frameworks/base/core/java/android/widget/AbsListView.java
f8a7ceaef2e7d5cd530c9426bde91b6fa9a40b75 11-Apr-2009 Andy Stadler <> AI 145778: Manual merge changes 145382-145384 from cupcake.

Automated import of CL 145778
/frameworks/base/core/java/android/widget/AbsListView.java
1bf5e22da72b477c8b7a45ed85a4dba94be39db5 25-Mar-2009 Dianne Hackborn <> Automated import from //branches/donutburger/...@141001,141001
/frameworks/base/core/java/android/widget/AbsListView.java
105925376f8d0f6b318c9938c7b83ef7fef094da 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
/frameworks/base/core/java/android/widget/AbsListView.java
ba87e3e6c985e7175152993b5efcc7dd2f0e1c93 13-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@138607
/frameworks/base/core/java/android/widget/AbsListView.java
c39a6e0c51e182338deb8b63d07933b585134929 11-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137873
/frameworks/base/core/java/android/widget/AbsListView.java
b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
/frameworks/base/core/java/android/widget/AbsListView.java
4df2423a947bcd3f024cc3d3a1a315a8dc428598 05-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@136594
/frameworks/base/core/java/android/widget/AbsListView.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/widget/AbsListView.java
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/widget/AbsListView.java
076357b8567458d4b6dfdcf839ef751634cd2bfb 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
/frameworks/base/core/java/android/widget/AbsListView.java
3dec7d563a2f3e1eb967ce2054a00b6620e3558c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
/frameworks/base/core/java/android/widget/AbsListView.java
3001a035439d8134a7d70d796376d1dfbff3cdcd 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
/frameworks/base/core/java/android/widget/AbsListView.java
da996f390e17e16f2dfa60e972e7ebc4f868f37e 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
/frameworks/base/core/java/android/widget/AbsListView.java
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/frameworks/base/core/java/android/widget/AbsListView.java
9266c558bf1d21ff647525ff99f7dadbca417309 16-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@126645
/frameworks/base/core/java/android/widget/AbsListView.java
b798689749c64baba81f02e10cf2157c747d6b46 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
/frameworks/base/core/java/android/widget/AbsListView.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/core/java/android/widget/AbsListView.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/core/java/android/widget/AbsListView.java