Commit Graph

2533 Commits

Author SHA1 Message Date
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
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
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
Philip Milne
580d079101 Merge "Fix remaining issue with bug #5904777" 2012-02-17 10:06:47 -08:00
Jeff Brown
50eb3b9bf9 Merge "Encapsulate the ViewRootImpl's handler." 2012-02-16 19:43:43 -08:00
Philip Milne
6216e87fe8 Fix remaining issue with bug #5904777
LEFT alignment in an RTL environment had the wrong 'gravity'.

This was due to a modelling error in GridLayout which is fixed in this CL.

Also apply some very minor simplifications and refactorings following the
addition of RTL support.

Change-Id: I153bc06d3c22dcb9954e4cbdfa89625823239b89
2012-02-16 17:23:31 -08:00
Fabrice Di Meglio
6d3d5057b4 Improve textDirection APIs
Change-Id: I8bff30f5adb0ab4077145d83ac4a716e04f289ac
2012-02-16 16:42:20 -08:00
Fabrice Di Meglio
2367706473 Merge "Add View.onResolvePadding() as a public API" 2012-02-16 14:36:28 -08:00
Jeff Brown
a175a5b7ea Encapsulate the ViewRootImpl's handler.
This change makes it much easier to make sense of the messages that
get posted to the ViewRootImpl's handler by encapsulating their point
of dispatch within the ViewRootImpl itself.

As part of this change, the View.AttachInfo now carries a reference
to the ViewRootImpl itself, which simplifies some code that used
to try to find the ViewRootImpl by getting the root view's parent.

In principle, it might have been nice to hide the ViewRootImpl from
the View hierarchy but in practice the two were coupled in many ways.

Change-Id: I51ebccdf5f8c8c505cd6f17cdf594174d041dc54
2012-02-15 19:32:16 -08:00
Romain Guy
8963822068 Merge "Prevent AutoCompleteTextView from opening a popup when it shouldn't Bug #5553515" 2012-02-15 18:36:55 -08:00
Romain Guy
c27cc01f6a Prevent AutoCompleteTextView from opening a popup when it shouldn't
Bug #5553515

The People app is forcing ACTV to show the IME which had the side effect
of showing the drop down popup. ACTV was unfortunately not ready to show
the drop down if the filtering resulted in no results. Doing so was putting
ACTV in a weird state that in turn caused a window to be leaked and really
bad behavior to occur in the lower graphics levels.

Change-Id: I2ff146d5ae4e4a28edf6ea17039c9f8fdb710e4f
2012-02-15 18:34:37 -08:00
Fabrice Di Meglio
ccb1562e90 Add View.onResolvePadding() as a public API
- following a comment from Dianne on this CL:

Change-Id: Ifa11d6ac423f205d0684297d25885eac1a89f279
https://android-git.corp.google.com/g/#/c/123009/1
2012-02-15 15:52:19 -08:00
Gilles Debunne
5e78d9bea5 Invalidate display list on alpha change
Bug 5945886

Change-Id: Ibab3ad2c9e526c038672699b571de154dfc8d17c
2012-02-14 17:46:43 -08:00
Gilles Debunne
626c316975 Display list invalidated on hint text change
Bug 5993119

Change-Id: I750e73cb5c26e2aaa2a88a80cf35c4d471c30403
2012-02-14 15:46:43 -08:00
Gilles Debunne
07ba2a2131 Minor typo fixes
Change-Id: I8cd9500cc50b7a484bf387e6a6a0c9b4ffb175a4
2012-02-13 18:13:44 -08:00
Philip Milne
d7dd89095f New hooks to allow layouts to improve their performance by doing more caching
This change allows layouts to be notified of changes to LayoutParameters that have occurred
between layout operations.

If an assignment is made to the fields of LayoutParams instances that are already in use,
cachced data may become inconsistent with the new values. For complex layouts, like
GridLayout, in which the layout parameters define the structure of the layout, caching
could have caused  ArrayOutOfBoundsException to be raised without this change. This case is
rare in normal code as initialisation is typically performed once. Its nevertheless possible
and much more likely in environments like design tools where layout parametrs may be being
edited on the fly.

Prevent errors as follows (belt and braces):

1. Change javadoc to request that changes to the fields of LayoutParams be accompanied with
a call to View.setLayoutParams(). (This calls requestLayout() which was what the previous
javadoc advised.) Provide a (for now, private) hook for layouts with caches to receive notification
of such calls so they can invalidate any relevant internal state.

2. For GridLayout, we cannot clone layout parameters as traditional Java grids do without retaining
two complete copies because of the public getLayoutParameters() method on View. Retaining two
copies is wasteful on constrainted devices. Instead, we keep just one copy and compute a hashCode
for the critical fields of a GridLayout's layoutParams. The hashChode is checked it prior to all
layout operations; clearing the cache and logging a warning when changes are detected, so that
developers can fix their code to provide the call to setLayoutParams() as above.

Change-Id: I819ea65ec0ab82202e2f94fd5cd3ae2723c1a9a0
2012-02-13 16:55:57 -08:00
Fabrice Di Meglio
47d248eb43 Fix bug #5904777 GridLayout should be RTL aware
- update also DEBUG mode for taking care about RTL
- one minor issue remaining: left alignment is not properly honored in RTL

Change-Id: I9a4c8413cb1189a032649472016994642418637b
2012-02-13 13:52:47 -08:00
Gilles Debunne
c067717c1e Merge "Invalidate text display list when text properties change." 2012-02-08 10:27:46 -08:00
Fabrice Di Meglio
132bda1cff Fix bug #5979311 Change TextView to not clip top/bottom text
Change-Id: I40a2ef40e540f20a9f626ab2e4e6e39fd062c9fe
2012-02-07 17:31:38 -08:00
Gilles Debunne
2e85274d26 Invalidate text display list when text properties change.
Bug 5887530, Bug 5945886, Bug 5904371

Added more invalidation when other properties of the text are changed.

Change-Id: I618dbaae9da64bf72dd29e444215b7de1c644573
2012-02-07 17:11:17 -08:00
Adam Cohen
041a434d38 Merge "Handle null PendingIntents, Bitmaps, Uris and Intents in RemoteViews (issue 5223291)" 2012-02-03 12:06:20 -08:00
Adam Cohen
c6151f2369 Handle null PendingIntents, Bitmaps, Uris and Intents in RemoteViews (issue 5223291)
Change-Id: If8895b774dee6ba4138751a0c2f68c70402b3fa5
2012-02-02 22:12:58 -08:00
Adam Powell
2d8b0170bf Fix bug 5339708 - edge case in ListView focus restoration
Some apps have managed to hit this edge case in monkey runs. In
layoutChildren an attempt to findFocus() fails when items are
focusable. When ListView attempts to restore focus to this view,
bad things happen.

Change-Id: Ie8bb1bab847898e342c16fbe3ff1a6153d6f69df
2012-02-01 17:23:41 -08:00
Scott Main
0aa8f3b8db resolved conflicts for merge of 20d06540 to master
Change-Id: I80da9a11b4538c070b0000cfa3ea6cd865e46aef
2012-01-31 08:55:23 -08:00
Scott Main
6440534660 docs: fix typos and clarify some grammar in summary
external issue 21548

Change-Id: Ic38921cb64390b42651f3971efeb4b76101dfc14
2012-01-30 23:49:26 -08:00
Romain Guy
1e56fff3b9 Merge "Add debug markers to OpenGLRenderer" 2012-01-30 17:43:37 -08:00
Romain Guy
13631f3da8 Add debug markers to OpenGLRenderer
These markers will be used to group the GL commands by View in the
OpenGL ES debugging tool. This will help correlate individual GL
calls to higher level components like Views.

Change-Id: I73607ba2e7224a80ac32527968261ee008f049c6
2012-01-30 17:41:55 -08:00
Gilles Debunne
e62beb5c20 Removed SoftInputShownOnFocus methods in TextView
Not used by Phone, for which it was initially created.

Change-Id: I0cad668f894e88cda0a410005aaf6b6c0b89dc3e
2012-01-30 15:10:41 -08:00
Gilles Debunne
a821733059 Merge "Remove onPreDrawListeners earlier in TextView" 2012-01-30 12:58:53 -08:00
Chet Haase
0d29936ec3 Fix bug in LayoutTransition for INVISIBLE views
When a view is becoming VISIBLE or INVISIBLE in a container with a
LayoutTransition, animations run to fade the view in and out and also
to run 'changing' animations on the view's other siblings. This logic
also cancels any running 'changin' animations to account for new ones
running.

However, in the specific case of INVISIBLE changes, there will be no
layout changes in the container - layout has already accounted for that
view (unlike in the case of GONE views); the visibility is just a matter of
drawing the view (or not). Therefore, we're canceling 'changing' animations
that should continue running and not replacing them with any other animations,
since new animations would only be started on layout chnages which are not
forthcoming.

One artifact seen from this bug is that the navigation bar buttons sometimes
disappear when changing orientation. This is because the menu button may
toggle between VISIBLE and INVISIBLE, causing animations on the other
buttons to get canceled, which leaves those views in a completely wrong
state.

The right thing to do is to avoid canceling in-process 'changing' animations
and to skip the logic of setting up new 'changing' animations which won't fire
anyway.

There is some minor API work in here because we did not previously have the
necessary information in LayoutTransition to know whether a view was being
hidden or shown to/from the INVISIBLE state.

Issue #5911213: LayoutTransitions ending in an odd state

Change-Id: I5c60c8583c8ea08965727b4ef17b550c40a3882c
2012-01-30 07:53:59 -08:00
Gilles Debunne
2e37d62926 Remove onPreDrawListeners earlier in TextView
Bug 5556478

Launcher pre-populates its all apps and widget pages with their
content, which includes text. The layout calls some onMeasure methods
that trigger TextView's registerForPreDraw(), which in turns adds a
listener in the ViewTreeObserver.

However, some of these pages may never be actually displayed, leaving
the listeners in the list since onDraw() is never called.

As a result, every frame displayed by launcher is slowned down by this
array copy of 6-18 listeners.

The problem is not Launcher specific since other applications may use
a similar caching mechanism.

The solution is to unsubscribe the listener in onPreDraw.

The drawback is that several successive calls to registerForPreDraw() will
add/remove the some listener object. However, these calls are rare and are
relatively cheap since we're just adding the object in and out of an
ArrayList which should not need to change its size.

Change-Id: Ifb65655a27e302d31a2ad622d18f839aec99689e
2012-01-27 18:39:07 -08:00
Gilles Debunne
566e8baf43 Merge "Fix for IOOB when suggestions have disappeared" 2012-01-27 13:54:50 -08:00
Gilles Debunne
ea1181220d Merge "Handle tap and move cursor before showing suggestions" 2012-01-27 13:54:42 -08:00
Gilles Debunne
e93c51713c Merge "Modified algorithm to remove duplicated suggestions" 2012-01-26 14:09:20 -08:00
Gilles Debunne
7af1f9669b Fix for IOOB when suggestions have disappeared
This new test is required since the suggestion popup is now triggered by a
Runnable. We have to make sure there is still at least one SuggestionSpan
at that position.

Change-Id: I5c84ba0ca412f51a0201bee5c2e63b5bd3717338
2012-01-25 17:06:38 -08:00
Gilles Debunne
868121f296 Handle tap and move cursor before showing suggestions
Otherwise the suggestions do not correspond to the tapped location.

Change-Id: Id0bd87931e73513ca7e50c6212a17b0fc7d6179d
2012-01-25 15:38:27 -08:00
Gilles Debunne
6e0b22bea9 Modified algorithm to remove duplicated suggestions
Bug 5916225

Duplicates were removed when received from SpellChecker, in a way
that could move the top candidates lower in the list.

Moved that code to the part that creates the actual suggestion list,
to make it more generic. The order of the first SuggestionSpan is
guaranteed to be respected.

Also mentionned non null suggestions and fixed a problem in SuggestionSpan
constructor.

Change-Id: Iaa3b1b84ae512451e439e5c5e63448c2a19145b5
2012-01-25 15:07:50 -08:00
Gilles Debunne
954325ed26 TextView's display list updated on layout
Bug 5903021

We need to invalidate the DL at anytime the layout is changed.

Change-Id: Ief06c988b88cdf1b35fe8ce9bac1243326ea44c4
2012-01-25 11:57:09 -08:00
satok
f43305fb05 Do not spell check when the keyboard language is not supported by the current spell checker
Bug: 5787064
Change-Id: I54a3955220bbe3dae999f6634ccd734e658e45c0
2012-01-25 16:05:11 +09:00
Svetoslav Ganov
3ad774667d Merge "Fixing a typo in the NumberPicker documentation." 2012-01-24 17:02:23 -08:00
Svetoslav Ganov
7caffbcd6a Merge "NumberPicker should not throw an exception if no enough values for wrapping." 2012-01-24 15:27:12 -08:00
Svetoslav Ganov
08a9e9f20a Fixing a typo in the NumberPicker documentation.
Change-Id: I3a76923d468ddd01cd1ed5521992479cee82c6f0
2012-01-24 14:32:20 -08:00
Adam Powell
37e800d688 Merge "Update ShareActionProvider to clear the sharing activity when the task is reset." 2012-01-24 13:58:41 -08:00
Svetoslav Ganov
15a7bc62e1 Merge "Removing unused imports and swiching off deprecated APIs" 2012-01-24 13:57:05 -08:00
Svetoslav Ganov
aa47a6b35a Removing unused imports and swiching off deprecated APIs
Change-Id: I08fd2c17bcad42f0216b140c0511f48a782c8018
2012-01-24 13:55:35 -08:00
Adam Powell
314419ccb9 Update ShareActionProvider to clear the sharing activity when the task
is reset.

As per platform guidelines, when launching a sharing activity the Intent
flag FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET should be used.

Change-Id: I30bd3d20eb75aee7943b681dc2d9c7f44a04e919
2012-01-24 13:46:45 -08:00
Svetoslav Ganov
3f9c9eab7b NumberPicker should not throw an exception if no enough values for wrapping.
1. The selector wheel was throwing an exception if a client requires that it
   wraps its selector wheel if the number of values is less that the number
   of values shown in the wheel.  While wrapping makes no sense if the all
   possible values are already shown, we should not throw an exception,
   rather to ignore the request.

bug:5911190

Change-Id: Icd90cd39f66d9f39939801752bf1eb1eef8fe757
2012-01-24 12:09:11 -08:00
Gilles Debunne
a54b9641cd Merge "Restored selectAllOnFocus" 2012-01-24 10:42:09 -08:00
Adam Cohen
cbe2f48d3f Merge "Fix issue 5905210, AdapterViewAnimator sending negative index to Adapter" 2012-01-23 19:23:06 -08:00