350 Commits

Author SHA1 Message Date
Christopher Tate
ccd24de8a9 Suppress orientation changes during drag operations
Fixes bug 3322455

Change-Id: I21d4dbc3aaf6c8ba7afcb73a823d6443c61a4d1b
2011-01-12 17:52:31 -08:00
Dianne Hackborn
2e7ffa54c1 Fix issue #3344089: runtime restart due to java.lang.StackOverflowError...
...in WindowManager after app force closed a few times

Change-Id: I9d5ff16b01d14030150ba0904a47635f9c7a158f
2011-01-12 13:21:28 -08:00
Christopher Tate
02d2b3ba9b API CHANGE: startDrag() now takes "int flags" instead of "boolean localOnly"
There will be, in the future, a flag (View.DRAG_FLAG_GLOBAL) that means
for the drag to be cross-application.  For now that flag constant is @hide
and furthermore the server-side implementation strips it, enforcing
local-only drags.

Change-Id: I8db840480ab90e18a5b8ecf29d62b4e6eafd405e
2011-01-11 18:30:23 -08:00
Jeff Brown
928e054931 Prevent events from getting backlogged.
This change implements two heuristics.

1. When events are older than 10 seconds, they are dropped.

2. If the application is currently busy processing an event and
   the user touches a window belonging to a different application
   then we drop the currently queued events so the other application
   can start processing the gesture immediately.

Note that the system takes care of synthesizing cancelation events
automatically for any events that it drops.

Added some new handle types to allow the native dispatcher to
indirectly refer to the WindowManager's window state and app window
token.  This was done to enable the dispatcher to identify the
application to which each window belongs but it also eliminates
some lookup tables and linear searches through the window list
on each key press.

Bug: 3224911
Change-Id: I9dae8dfe23d195d76865f97011fe2f1d351e2940
2011-01-10 17:23:05 -08:00
Dianne Hackborn
7eab094722 Fix flicker issue in IME.
When IME is being moved as part of a window going away, it could flicker
as it immediately moves behind the window.  Fix this.

Also make the default soft input mode for PopupWindow to be to not change
the IME visibility, since it is a rare pop-up window that should cause your
IME to close.

Change-Id: I0b43e080ad012739e9a3e5842794c778c859ac1a
2011-01-01 13:32:30 -08:00
Mattias Petersson
658ecc1869 am 2f209e88: am 1622eee2: Improve performance of WindowState.toString()
* commit '2f209e885a86b8396fe1344043cf9858751fcb64':
  Improve performance of WindowState.toString()
2010-12-22 12:04:43 -08:00
Mattias Petersson
2f209e885a am 1622eee2: Improve performance of WindowState.toString()
* commit '1622eee2e48678b17a4668641957f09213f98905':
  Improve performance of WindowState.toString()
2010-12-22 11:25:32 -08:00
Mattias Petersson
1622eee2e4 Improve performance of WindowState.toString()
This fix improves the performance by caching the string that should
be returned, and reuse it next time if possible.
This will make it faster to switch between activities, approximately
half the time to create the new view when changing from landscape to
portrait. Also, the time for starting a new application is be reduced
as WindowState.toString is being called thousands of times in this
case.

Change-Id: I2b8b9bc1e251d1af43b6c85f049c01452f2573a2
2010-12-22 10:42:47 -08:00
Dianne Hackborn
4c7cc34127 Demo hack!
To make a 800 tall screen run like a 720:

adb shell setprop persist.demo.screensizehack 800=720

Note this is a persistent property, so it will (intentionally) remain across boots.

Change-Id: I8a8a9f937399327444e8fb154b91f0e642db116e
2010-12-18 16:25:29 -08:00
Dianne Hackborn
88b03bd2e1 Hm somehow my log didn't make it in the last patch.
Change-Id: If7b3b041e478e1f05998323c02deb665f65073cb
2010-12-16 13:29:27 -08:00
Dianne Hackborn
cb8f0e099c Fix issue #3291975: Google services frame work crash...
..observed after adding Google account from Gtalk

Change-Id: Ide0646e01ded6f661e4e8de990a21e4d4330b416
2010-12-16 11:15:18 -08:00
Dianne Hackborn
d2835935d2 Fix issue #3258849: Grab thumbnail when exiting an app via back
Also issue #3281400: Rotating a retained instance fragment leaks the fragment manager

And turn off fragment debug logging.

Change-Id: Ibdd7db82bb35618021bcba421ba92ced7cd691c2
2010-12-13 20:41:17 -08:00
Dianne Hackborn
7da6ac33a9 Fix issue #3272051: Use backward transition when going backwards.
Also know as:

Issue #3272051 Contacts edit view: Tapping the in-app back button
results in a forward transition

Yeah more complexity in deciding which animation to use.

Also reduce complexity in deciding which app's animation set to use,
to balance things out (and make it have less stupid behavior).

Change-Id: I78c6c5c5249a96206f7e03ce587c1dcb9a7dc14f
2010-12-09 19:22:04 -08:00
Mathias Agopian
d211230633 remove support for PUSH_BUFFER surfaces and overlays
the same functionality is now supported through
the h/w composer HAL, and YUV support in the GPU.

Change-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf
2010-12-08 16:13:59 -08:00
Dianne Hackborn
0aae2d4e00 Rework activity lifecycle so onSaveInstanceState() is after onPause().
The goal is to fix a bunch of fragment-related bugs caused by various
things trying to do fragment transactions after onPause()...  which
currently throws an exception, since this is after the activity's state
has been saved so the new fragment state can be lost.

The basic change is relatively simple -- we now consider processes
hosting paused or stopping activities to be unkillable, and the client
code now does the onSaveInstanceState() as part of stopping the
activity.

For compatibility, if an app's targetSdkVersion is < HONEYCOMB, the
client side will still call onSaveInstanceState() prior to onPause()
and just hold on to that state until it needs to report it in once
being stopped.

Also included here is a change to generate thumbnails by taking
screenshots.  The code for generating thumbnails by re-rendering
the view hierarchy is thus removed.

Change-Id: Iac1191646bd3cadbfe65779297795f22edf7e74a
2010-12-08 00:35:27 -08:00
Jeff Brown
49ed71db42 Add support for fallback keycodes.
This change enables the framework to synthesize key events to implement
default behavior when an application does not handle a key.
For example, this change enables numeric keypad keys to perform
their associated special function when numlock is off.

The application is informed that it is processing a fallback keypress
so it can choose to ignore it.

Added a new keycode for switching applications.

Added ALT key deadkeys.

New default key mappings:
- ESC -> BACK
- Meta+ESC -> HOME
- Alt+ESC -> MENU
- Meta+Space -> SEARCH
- Meta+Tab -> APP_SWITCH

Fixed some comments.
Fixed some tests.

Change-Id: Id7f3b6645f3a350275e624547822f72652f3defe
2010-12-07 17:35:26 -08:00
Dianne Hackborn
87fc308282 Fix issue #3175809: system_server crash with SEGV_MAPERR (IKXEVEREST-1372)
Don't crash if dump() is called before we have set mDisplay.

Change-Id: I0d3d356ff27dbc61353a5b99e348178937d5f4a5
2010-12-03 13:09:12 -08:00
Jean-Baptiste Queru
cd5e8b60ca am a30c12a1: am 4a88013a: resolved conflicts for merge of bf1439c5 to stage-korg-master
* commit 'a30c12a18326ed4d608382cd4f970a6e15a58bf5':
  Preserve flags field of event passed to injectKeyEvent()
2010-12-02 15:25:18 -08:00
Jean-Baptiste Queru
4a88013a4a resolved conflicts for merge of bf1439c5 to stage-korg-master
Change-Id: Iab543a7ee449025f1df5d58afaa8f8fdd4809c99
2010-12-02 15:16:53 -08:00
Mike Playle
c6ded10dd1 Preserve flags field of event passed to injectKeyEvent()
This patch allows users of WindowManagerService.injectKeyEvent() to
set flags on the key event being injected.

In particular this allows long presses (FLAG_LONG_PRESS) to be
injected into the window manager.
2010-12-02 16:25:46 +00:00
Christopher Tate
407b4e91fe API CHANGE: drags can now carry an originator-only object payload
When calling startDrag(), the app can now supply an Object to be passed
along in every DragEvent that the app winds up receiving itself.  This
object is *not* passed to any other applications; it's strictly app-
local.  The purpose is to allow state tracking/management to be done
directly through the drag mechanism rather than requiring out-of-band
code.

An example of the utility here might be TextEdit widgets.  A drag that
starts in one TextEdit but ends in a different one should be treated as
a copy/paste operation, where the originating TextEdit is not altered.
However, a drag that starts and ends in the *same* TextEdit is a 'move'
operation within that TextEdit; the text is removed from its original
position and inserted at the drop point.  To support this easily, the
drag/drop code in TextEdit can now pass a pointer to the originating
view as the local state object.  Then, the drop recipient could tell
whether the drag started within the same TextEdit without needing to
implement any other out-of-band state tracking.

This CL (and its accompanying CLs in a few other packages where the
startDrag() API is being used) adds the new local-state parameter to
the API, but does not actually change the behavior of any existing
clients.

Change-Id: Icba73b2ab4a650b7a94485a19633065b0ef9058c
2010-12-01 14:45:06 -08:00
Dianne Hackborn
0f761d6b8f Implement issue #3201795: Improve transition when keyboard comes up
ViewRoot now does a fade animation between a snapshot of the previous
layout to the new one when its content rect changes.

Also tweaked some things in the window manager to fix problems in
deciding when to animate the movement of a window and when not to.

Change-Id: I9b4b3bd53c8258bd39a2f2fc315e77cfc56a409c
2010-12-01 11:00:42 -08:00
Jeff Brown
1f2451007c Ensure the ShortcutManager uses the correct key character map.
The ShortcutManager used to only receive the key code of the key event
that triggered the shortcut.  This change now provides the shortcut
manager with the whole key event so it can look up the associated
character using the correct key character map.

To make this more efficient, added a mechanism for recycling
key events.  At the moment it is only used by key events owned by the
system process, since clients of the existing API (such as Views)
might continue to hold on to key events after dispatch has finished so
they would break if the key event were recycled by the framework.

Deprecated KeyCharacterMap.BUILT_IN_KEYBOARD.

Change-Id: I4313725dd63f2be01c350c005a41c7fde9bc67e8
2010-11-30 18:50:17 -08:00
Dianne Hackborn
f9d0be917b Implement rotation animations.
This introduces a small new feature for ScaleAnimation allowing
the scaling factor to be expressed as a percentage of the object
(which is the same as the existing float interpretation), a
percentage of the container, or a fixed dimension.  Maybe not
useful for anything else, but I needed it for this.

Also fix a bug in how transformation matrices were propagated
from the Animation to Surface Flinger, so that rotate and skew
animations will actually work. :p

Change-Id: I301f4caa2147aa35564b5e511cb9c0b368d2425d
2010-11-28 18:28:57 -08:00
Brad Fitzpatrick
c1a968a8ed Option to enable StrictMode flashing on userdebug builds.
Change-Id: Ifc8e733ea0e0f6bda234a18ad84bcd230879e802
2010-11-24 13:41:48 -08:00
Dianne Hackborn
a111187a5b Change rotation freeze to all be implemented in window manager.
Lots of work for no visible change in behavior, but now we can
do some fancier stuff...

Also allow rotation in all 4 directions.

Change-Id: I7e5e9537c5e359f69b83c10f65cc1ce95f371461
2010-11-24 10:41:07 -08:00
Dianne Hackborn
1c24e957ad Fix issue #3222014: Dragging items around home screen is unresponsive
Also make the dim fade duration configurable, with a configured value
that more closely matches what UX wants.

Change-Id: Id32e2de14a2a2003d8fade6331377d8d723ac397
2010-11-23 00:40:52 -08:00
Brad Fitzpatrick
6804433b0a StrictMode visual notification support.
Change-Id: I64a5adb683060d9649f1132414547bb3c346a2a8
2010-11-22 19:39:52 -08:00
Joe Onorato
3fe7f2f2e3 fix warning
Change-Id: I243e9b81256af13b8296dd121b1204caed7a3996
2010-11-21 16:16:28 -08:00
Dianne Hackborn
8e11ef0d94 Some work on issue #3201795: Improve transition when keyboard comes up
Now try to slide dialogs if they end up moving due to the IME (or
other system things) showing/hiding.  Pretty hackish, but seems to
work.

Change-Id: Icd297e941cf847fa920c9605145c46be63043d52
2010-11-18 19:57:49 -08:00
Dianne Hackborn
7eec10e6c9 Get rid of the extended themes.
We now decide whether to use a bitmap background based on whether the
window's drawing is hardware accelerated.  To do this, there is a new
"state_accelerated" that state list drawables can be parameterized on,
and the standard window background uses this to select a solid color
or bitmap drawable as appropriate.

Introduces a little hackery to have wm preview windows pretend like
they are hardware accelerated even if they aren't, so the preview looks
closer to the actual app.

Also Add a DialogWhenLarge variation for the light theme.

Change-Id: I215a79d5df65ba3eed52ab363cade9d8218a6588
2010-11-14 14:23:42 -08:00
Dianne Hackborn
6c8e20f96a Implement new task transition animations.
Change-Id: I62c10e7b2afac4371b3739f1cd5948c655edc125
2010-11-09 19:04:49 -08:00
Jeff Brown
3915bb845b Tell system server whether the app handled input events.
Refactored ViewRoot, NativeActivity and related classes to tell the
dispatcher whether an input event was actually handled by the application.

This will be used to move more of the global default key processing
into the system server instead of the application.

Change-Id: If06b98b6f45c543e5ac5b1eae2b3baf9371fba28
2010-11-08 12:49:43 -08:00
Brad Fitzpatrick
3fe3851753 Window manager: cancel animations before losing references to them.
For possible future changes to android.view.animation.Animation to tie
into StrictMode's animation annotations on violations.

Change-Id: I3a23fa9bd5edb0500586bb0e341f83f998b28ae7
2010-11-08 11:22:01 -08:00
Brad Fitzpatrick
ec062f63a2 StrictMode: now in more system server threads.
Who knew there were so many Loopers in the system server?

This adds dropbox logging for the activity manager thread, policy
thread, and window manager thread.

The goal's to catch more stuttering.

Change-Id: I999a6ff4a955f0ef549b12a38796b843ade5fe66
2010-11-08 10:39:05 -08:00
Dianne Hackborn
ed7bfbf6c8 Fix issue #3163426: Screen corruption when using the watermark feature
Change-Id: I23f76f04fb52bb272eccbbcc55606c09404c6ca9
2010-11-05 13:45:10 -07:00
Chris Tate
7b362e431f Implement local-window-only drags
Change-Id: I19a9c4a045c532b99e3af9eb878797aed5cda1bf
2010-11-04 16:29:32 -07:00
Dianne Hackborn
373818eeac Revert "StrictMode: now in more system server threads."
This reverts commit 0721861d6111a8a03eb0d4aad14b7a90fd83cab6.
2010-11-04 15:37:47 -07:00
Daniel Sandler
b73617de46 Rotation lock.
IWindowManager now supports two new methods,
freezeRotation() and thawRotation(), that allow a caller to
temporarily stash the device's current rotation as the
default rotation (when no other constraints are present).

The system bar uses this to implement a user-accessible
rotation lock by calling freezeRotation() and then turning
off accelerometer-based display rotation; unless overridden
by an app, the display will continue to appear in the frozen
rotation until the rotation is unlocked by the user (either
via the rotation lock icon in the system bar or by checking
"rotate screen automatically" in Settings).

Bug: 2949639
Change-Id: Icd21c169d1053719590e72401f229424b254622f
2010-11-04 16:55:29 -04:00
Brad Fitzpatrick
0721861d61 StrictMode: now in more system server threads.
Who knew there were so many Loopers in the system server?

This adds dropbox logging for the activity manager thread, policy
thread, and window manager thread.

The goal's to catch more stuttering.

Change-Id: I3ce8518ce183b3c90426750a2992e67200fee5d5
2010-11-03 21:11:34 -07:00
Chris Tate
9d1ab88329 Fix drag enter/exit reporting
Now, each ViewGroup is tracking which of its child views [which might
themselves be ViewGroups] is currently under the drag point, and when the
drag leaves that child, a DRAG_EXITED is synthesized and dispatched all
the way down to the leaf view previously under the point.  ENTERED is
still *not* dispatched down like this; instead, it's calculated and
synthesized directly at each level based on the new LOCATION.

The ViewRoot still tracks the leaf drag target, but solely for the
purpose of reporting changes to the OS after full dispatch of a new
LOCATION -- the entered/exited messaging is no longer initiated at the
ViewRoot level.

Change-Id: I0089cc538b7e33a0440187543fcfd2f8b12e197d
2010-11-02 15:55:39 -07:00
Jeff Brown
4d396052de Fix policy issues when screen is off.
Rewrote interceptKeyBeforeQueueing to make the handling more systematic.
Behavior should be identical except:
- We never pass keys to applications when the screen is off and the keyguard
  is not showing (the proximity sensor turned off the screen).
  Previously we passed all non-wake keys through in this case which
  caused a bug on Crespo where the screen would come back on if a soft key
  was held at the time of power off because the resulting key up event
  would sneak in just before the keyguard was shown.  It would then be
  passed through to the dispatcher which would poke user activity and
  wake up the screen.
- We propagate the key flags when broadcasting media keys which
  ensures that recipients can tell when the key is canceled.
- We ignore endcall or power if canceled (shouldn't happen anyways).

Changed the input dispatcher to not poke user activity for canceled
events since they are synthetic and should not wake the device.

Changed the lock screen so that it does not poke the wake lock when the
grab handle is released.  This fixes a bug where the screen would come
back on immediately if the power went off while the user was holding
one of the grab handles because the sliding tab would receive an up
event after screen turned off and release the grab handles.

Fixed a couple of issues where media keys were being handled inconsistently
or not at all, particularly in the case of the new PAUSE, PLAY
and RECORD keys.

Bug: 3144874
Change-Id: Ie630f5fb6f128cfdf94845f9428067045f42892c
2010-11-01 15:00:25 -07:00
Dianne Hackborn
f834dfabbc ClipDescription no longer inherits from ClipData.
Change-Id: Ie4939f87c7e1628d9c19ecb5c0b3036d1f76ef29
2010-10-26 15:23:15 -07:00
Chris Tate
ef70a07753 Fix error recovery when a drag can't be started
Also make sure to properly dispose *both* ends of the drag input
channel when we're done.  That was being tidied up after, but was
also making the system work harder and was provoking a bit of
debug logging.

Change-Id: I1ff3100bc4c441f1609c57242864d5744ff1aaa2
2010-10-22 19:12:52 -07:00
Dianne Hackborn
1b36424419 am eb5aeae6: am fdbb2168: Merge "Adjust boundaries for screen sizes." into gingerbread
Merge commit 'eb5aeae676fb23b2ad748185867c085e3cd65314'

* commit 'eb5aeae676fb23b2ad748185867c085e3cd65314':
  Adjust boundaries for screen sizes.
2010-10-21 20:27:30 -07:00
Dianne Hackborn
eb5aeae676 am fdbb2168: Merge "Adjust boundaries for screen sizes." into gingerbread
Merge commit 'fdbb2168f7a9a202ee9406d65e7ef98a6745b488' into gingerbread-plus-aosp

* commit 'fdbb2168f7a9a202ee9406d65e7ef98a6745b488':
  Adjust boundaries for screen sizes.
2010-10-21 20:18:11 -07:00
Dianne Hackborn
b51dc0fe2a Adjust boundaries for screen sizes.
Part of issue #3116702: New manifest tags for supported screen sizes

Kind-of.

If you turn your head side-ways.

Change-Id: I446f1e2eadba1ce284c93ff9fb0197bb0e6b0fca
2010-10-21 15:34:47 -07:00
Chris Tate
d4533f1469 Report drag success/fail in the DRAG_ENDED message
DragEvent.getResult() returns 'true' if the drop was ultimately accepted;
false otherwise.  The validity of this datum is only guaranteed when the
DragEvent's action verb is ACTION_DRAG_ENDED.

Also fixes the drag-start timeout handling (though the offending app is
not yet officially declared ANR).

Implements bug 3097807

Change-Id: I6908ac628c72ff7d6193d87060d769a559a78d0e
2010-10-21 14:25:06 -07:00
Chris Tate
b478f4606e Drag/drop changes
* Increase the opacity of the drag thumbnail a bit
* Properly present window-local drag locations; this fixes drags into
  the status bar
* Pass the current drag touch point in DRAG_STARTED. This may
  be reconsidered, but might conceivably be useful to someone.

Change-Id: I77690e82e9831ed6be412990c1c9da92e700a501
2010-10-15 20:30:32 -07:00
Chris Tate
a32dcf7f72 Actually draw the drag thumbnail
Now sets the layer and thumbnail dimensions correctly.  Also removed the
leftover bits of the now-replaced thumbnail measurement/drawing mechanism.

Fixes bug 3077339

Change-Id: I02983648e0a7ce2ce5fee10825f744e20a3a5b8d
2010-10-14 14:41:07 -07:00