Commit Graph

2498 Commits

Author SHA1 Message Date
Gilles Debunne
1b3d01de38 Merge "InputConnection is warned when finished" 2012-02-28 18:05:28 -08:00
Robert Ly
e6c118b5d0 am 61a9a83a: am 40226da7: am f4994b3e: Merge "fix bug 5911175" into ics-mr1
* commit '61a9a83ac09246f815806fa4f64cc65a7e876f96':
  fix bug 5911175
2012-02-28 15:45:40 -08:00
Robert Ly
40226da7ae am f4994b3e: Merge "fix bug 5911175" into ics-mr1
* commit 'f4994b3eb03e1e772d7d46e8b6dcfc88593db792':
  fix bug 5911175
2012-02-28 15:39:39 -08:00
Robert Ly
f4994b3eb0 Merge "fix bug 5911175" into ics-mr1 2012-02-28 15:37:21 -08:00
Adam Powell
035a1fcd5e View pressed state dispatching tweaks
Bugs 6075823, 6050563

Revise pressed state dispatch logic:

Only propagate pressed state to non-clickable views. This should
eliminate the "double glow" problem in some list items where a
clickable child button has a secondary glow along with a clickable
parent. This only applies to setPressed(true) calls; setPressed(false)
must propagate. Don't early-out in setPressed to support this use
case.

Change-Id: Ibbe2309f5030282fad8d23e4a9bc4616b3f5dc7c
2012-02-27 16:30:19 -08:00
Romain Guy
765dcf3230 Small optimization for the battery status screen
Change-Id: I2833ba4009f6c284c9ef33c45a4dd7365423fb5f
2012-02-27 13:28:22 -08:00
Romain Guy
778f67f7c0 Merge "Add hooks to implement Canvas.drawTextOnPath() in GL" 2012-02-24 18:01:22 -08:00
Adam Powell
b98a81f86a Add support for optional titles in action modes
Optional titles will only be displayed in the CAB if they entirely fit
instead of ellipsizing.

Fixes bug 5821883

Change-Id: I0cfd6d4fd34a4fa9f520499d577706da30606811
2012-02-24 16:59:03 -08:00
Romain Guy
325740fb44 Add hooks to implement Canvas.drawTextOnPath() in GL
Change-Id: I165c9e05facf5365aa6850605688e538640c7fcc
2012-02-24 16:48:34 -08:00
Gilles Debunne
9d69ecbf61 InputConnection is warned when finished
As said in https://android-git.corp.google.com/g/#/c/155992
finishComposingText is indeed too broad of a method.

Introducing a new dedicated method to warn the InputConnection.

Should solve the problems with a negative counter value.

Change-Id: I5525d776916f0c42d5e6d4a4282aed590d7f0e9a
2012-02-24 16:12:52 -08:00
Dianne Hackborn
0aec3ea6de am 911b505f: am dc5fa185: am 133dc2d7: Merge "Fix issue #6048808: sometimes auto-correct is inactive" into ics-mr1
* commit '911b505f11c719906985f169a4f45930bdec8695':
  Fix issue #6048808: sometimes auto-correct is inactive
2012-02-24 15:44:55 -08:00
Dianne Hackborn
dc5fa1859d am 133dc2d7: Merge "Fix issue #6048808: sometimes auto-correct is inactive" into ics-mr1
* commit '133dc2d7aecc68990c363c861716b134910a4ced':
  Fix issue #6048808: sometimes auto-correct is inactive
2012-02-24 15:38:07 -08:00
Dianne Hackborn
7663d80f6b Fix issue #6048808: sometimes auto-correct is inactive
My previous change to speed up the time the IME is dismissed was
fundamentally flawed.  That change basically switched the order
the application called the input method manager service from doing
startInput() and then windowGainedFocus(), to first windowGainedFocus()
and then startInput().

The problem is that the service relies on startInput() being done
first, since this is the mechanism to set up the new input focus,
and windowGainedFocus() is just updating the IME visibility state
after that is done.  However, by doing the startInput() first, that
means in the case where we are going to hide the IME we must first
wait for the IME to re-initialize editing on whatever input has
focus in the new window.

To address this, the change here tries to find a half-way point
between the two.  We now do startInput() after windowGainedFocus()
only when this will result in the window being hidden.

It is not as easy as that, though, because these are calls on to
the system service from the application.  So being able to do that
meant a fair amount of re-arranging of this part of the protocol
with the service.  Now windowGainedFocus() is called with all of
the information also needed for startInput(), and takes care of
performing both operations.  The client-side code is correspondingly
rearranged so that the guts of it where startInput() is called can
instead call the windowGainedFocus() entry if appropriate.

So...  in theory this is safer than the previous change, since it
should not be impacting the behavior as much.  In practice, however,
we are touching and re-arranging a lot more code, and "should" is
not a promise.

Change-Id: Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb
2012-02-24 13:18:23 -08:00
Svetoslav Ganov
00d0c14a0f Regression: Cannot query the content of certain windows.
1. A bad merge on my part caused ViewRootImpl not to register
   for accessibility state change.

bug:6064348

Change-Id: Idf7b8b444e9021e9d9ec3749164cfe448c8268ab
2012-02-24 11:31:17 -08:00
Svetoslav Ganov
afd5fab3ab AccessibilityNodeInfos node properly cached.
1. AccessibilityNodeInfo were not cloned when cached
   and obtained from the cache. This was causing a
   problem when the client calls #recycle() as he
   should since this results in wiping the data of
   the cached node info.

bug:6026952

Change-Id: I5807b09d95ef6f310327192ff91f036adf337e33
2012-02-24 10:22:00 -08:00
Svetoslav Ganov
42d840b91d Merge "Fixing issues with the AccessibilityNodeInfo cache." 2012-02-23 19:04:41 -08:00
Svetoslav Ganov
57c7fd5a43 Fixing issues with the AccessibilityNodeInfo cache.
1. Before there were two caches one in the app process that
   kept track only the ids of infos that were given to a
   querying client and one in the querying client that
   holds the infos. This design requires precise sync
   between the caches. Doing that is somehow complicated
   since the app has cache for each window and it has
   to intercept all accessibility events from that window
   to manage the cache. Each app has to have a cache for
   each querying client. This approach would guarantee that
   no infos are fetched twice but due to its stateful nature
   and the two caches is tricky to implement and adds
   unnecessary complexity. Now there is only one cache in
   the client and the apps are stateless. The client is
   passing flags to the app that are a clue what nodes to
   prefetch. This approach may occasionally fetch a node
   twice but it is considerably simpler and stateless
   from the app perspective - there is only one cache.
   Fetching a node more than once does not cause much
   overhead compared to the IPC.

Change-Id: Ia02f6fe4f82cff9a9c2e21f4a36747de0f414c6f
2012-02-23 18:51:04 -08:00
Romain Guy
cfef12374c Perform early intersect to avoid unnecessary draws
Change-Id: I48d61c4488e622f93733d8e53a50c93e6a20166d
2012-02-23 13:50:37 -08:00
Michael Jurka
b7ee8e2cb4 am 6ad5d69d: am 0a232673: am bf378fd7: Don\'t allow screen invalidations to go outside bounds of screen
* commit '6ad5d69da5cff2e4b5fb7acdb2699e2315b83307':
  Don't allow screen invalidations to go outside bounds of screen
2012-02-23 12:26:16 -08:00
Scott Main
3fcf93b037 am cb4ebcb2: am ce980d8e: am 68d97aa2: Merge "docs: fix broken link" into ics-mr1
* commit 'cb4ebcb20b8540cc8027ae03dd578ce3846e9af1':
  docs: fix broken link
2012-02-23 12:25:53 -08:00
Michael Jurka
0a23267337 am bf378fd7: Don\'t allow screen invalidations to go outside bounds of screen
* commit 'bf378fd7d7a91085685fe9e5528b84c485041c77':
  Don't allow screen invalidations to go outside bounds of screen
2012-02-23 08:07:22 -08:00
Michael Jurka
bf378fd7d7 Don't allow screen invalidations to go outside bounds of screen
Fixes invalidation issue in Launcher

Change-Id: Iab32149489aed6884e917f0ac5a548d4ae26896e
2012-02-23 00:19:58 -08:00
Svetoslav Ganov
2822111948 Merge "Add check for no children in VIew hosting virtual view tree." 2012-02-22 16:49:36 -08:00
Svetoslav Ganov
311a63af40 Add check for no children in VIew hosting virtual view tree.
1. For accessibility purposes View may report a virtual tree
   rooted at them to convey the logical structure they draw.
   These are usually custom Views. Such views cannot have
   children and this patch adds a check for that.

bug:6022217

Change-Id: I3795a613b4aef1a7ec5810db8584a11b648870f2
2012-02-22 16:45:10 -08:00
Scott Main
ce980d8ea0 am 68d97aa2: Merge "docs: fix broken link" into ics-mr1
* commit '68d97aa2c1ff16f327491fed5afb8b318f034a01':
  docs: fix broken link
2012-02-22 16:23:04 -08:00
Scott Main
68d97aa2c1 Merge "docs: fix broken link" into ics-mr1 2012-02-22 16:20:49 -08:00
Robert Ly
5c4d41ecb3 fix bug 5911175
Change-Id: I528e7c30e81c85ec31a5abbd74e85cc364a8362f
2012-02-22 11:05:55 -08:00
Jean-Baptiste Queru
aff90790df am 4280891d: Merge "The bigger touch slop still has a problem"
* commit '4280891dbc2cf60bdf51726e0aa9265ccb64ec88':
  The bigger touch slop still has a problem
2012-02-22 09:56:27 -08:00
John Reck
5160e2a197 Add null parent check to startActionMode
Bug: 6012515

Change-Id: I9f684bf0fd314285c4d4933ba2a7645f10c9dc7b
2012-02-22 09:41:25 -08:00
satok
5c9b4329f3 Merge "Refactor sentence level spell checking APIs" 2012-02-21 22:59:12 -08:00
satok
d404fe1105 Refactor sentence level spell checking APIs
Support sentence level spell checking APIs: Step 1

Change-Id: I31c0b88e7885f33a0694ab60b8f2dbceeffe42f1
2012-02-22 15:35:46 +09:00
Svetoslav Ganov
a6cdf86518 Merge "Improving accessibility APIs used for UI automation." 2012-02-21 17:17:33 -08:00
Svetoslav Ganov
0d04e24553 Improving accessibility APIs used for UI automation.
1. UiTestAutomationBridge was accessing the root node in the
   active window by tracking the accessibility event stream
   and keeping the last active window changing event. Now
   the bridge is stateless and the root node is fetched by
   passing special window and view id with the request to
   the system.

2. AccessibilityNodeInfos that are cached were not finished,
   i.e. not sealed, causing exception when trying to access
   their children or rpedecessors.

3. AccessibilityManagerService was not properly restoring its
   state after the UI automation bridge disconnects from it.
   I particular the devices was still in explore by touch mode
   event if no services are enabled and the sutomation bridge
   is disconnected.

4. ViewRootImpl for the focused window now fires accessibility
   events when accessibility is enabled to allow accessibility
   services to determine the current user location.

5. Several missing null checks in ViewRootImpl are fixed since
   there were scenraios in which a NPE can occur.

6. Update the internal window content querying tests.

7. ViewRootImpl was firing one extra focus event.
bug:6009813
bug:6026952

Change-Id: Ib2e058d64538ecc268f9ef7a8f36ead047868a05
2012-02-21 17:09:09 -08:00
Adam Powell
4d6f066b19 Have View call setPressed explicitly instead of just twiddling flags.
This allows apps to override setPressed to reliably observe changes in
pressed state for custom views.

Change-Id: I59f472a9d864f4abcc4f692fef0a13f004348432
2012-02-21 15:13:20 -08:00
Masanori Ogino
dac640f403 The bigger touch slop still has a problem
I had submitted the patch about this issue at
https://android-review.googlesource.com/#/c/20438/ before. But it
has never been included in any version.

In the latest implementation, touchSlop is a configurable value
which is declared in config.xml for each device. First of all,
the problem is that BiggerTouchSlop is not scalable and variable
value according to a configured touchSlop.

I don't think that there should be a new api in ViewConfiguration
for this. Because the bigger touch slop is a local threshold value
in GestureDetector. The only thing to be satisfied is that the
value should be bigger than configured touch slop and should not
be over double touch slop.

Change-Id: I2c6662400fcffb4a7192ede4ac8da08559aa7948
2012-02-20 15:51:17 +09:00
Romain Guy
e8585b1721 Correctly offset the dirty bounds by 0.5px in every direction
The existing code was behaving differently for the leaf view and its parents.

Change-Id: I14c1ce5cc149ff840ad957408d6a41bbb4137264
2012-02-17 18:31:31 -08:00
Adam Powell
539ee8716b 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
2012-02-17 16:40:24 -08:00
Romain Guy
6917e6550d Merge "Record possible clip rejects when recording display lists" 2012-02-17 15:18:14 -08:00
Scott Main
ef0314b2c6 docs: fix broken link
Change-Id: I13e29ec18bb503ea33ee59d187f588c5be8fd109
2012-02-17 14:37:58 -08:00
Romain Guy
33f6beb10f Record possible clip rejects when recording display lists
This optimization allows us to quickly skip operations that lie
entirely outside of the known bounds of a display list. Because
of ViewGroup.setClipChildren, we must keep the operations recorded
in the display list. setClipChildren(false) is however a very
uncommon operation and we will therefore often benefit from this
new optimization.

Change-Id: I0942c864e55298e6dccd9977d15adefbce3ba3ad
2012-02-17 13:10:00 -08:00
Jeff Brown
2bf372888c Merge "Mark input and sensor messages as asynchronous." 2012-02-16 19:49:14 -08:00
Jeff Brown
50eb3b9bf9 Merge "Encapsulate the ViewRootImpl's handler." 2012-02-16 19:43:43 -08:00
Fabrice Di Meglio
101d5aade4 Fix #5050417 Update View class Javadoc for padding start / end
Change-Id: Iec9533616d94e4a738378bafeb1867dd74e53127
2012-02-16 18:36:40 -08:00
Jeff Brown
e0dbd00275 Mark input and sensor messages as asynchronous.
Set a barrier on traversals.

Vsync is still not enabled by default in this patch so there
should be no observable effect from these changes.

Change-Id: Ie12081b95a8f1e81ed686edf747cc62f2e044b7e
2012-02-16 18:19:56 -08:00
Fabrice Di Meglio
30e2fbe0d2 Merge "Improve textDirection APIs" 2012-02-16 16:58:47 -08:00
Romain Guy
add3239ffb Merge "Ensure we always reset graphics modifiers Bug #6025838" 2012-02-16 16:52:53 -08:00
Romain Guy
445c83c775 Ensure we always reset graphics modifiers
Bug #6025838

If a modifier is setup and not reset crashes can occur.

Change-Id: I715524fb46928f1f06499cc1402499ef59f4a050
2012-02-16 16:43:07 -08:00
Fabrice Di Meglio
6d3d5057b4 Improve textDirection APIs
Change-Id: I8bff30f5adb0ab4077145d83ac4a716e04f289ac
2012-02-16 16:42:20 -08:00
Fabrice Di Meglio
069bbe79fb Fix Javadoc for View
Change-Id: Iccae458320273253637017c6f32329150bae479e
2012-02-16 15:49:18 -08:00
Dianne Hackborn
a3b5f6c29b am 804aa297: am 01810bbb: am 06a591cd: Fix last change -- don\'t call startInputInner() with lock held.
* commit '804aa297950949985882e4841303cd6e12fae06e':
  Fix last change -- don't call startInputInner() with lock held.
2012-02-16 14:48:48 -08:00