diff options
| author | Jeff Brown <jeffbrown@google.com> | 2012-02-15 19:18:31 -0800 |
|---|---|---|
| committer | Jeff Brown <jeffbrown@google.com> | 2012-02-15 19:32:16 -0800 |
| commit | a175a5b7ea3682cb58cca7f9726d0b8171cd549d (patch) | |
| tree | a0747492e739adc22a9415fe37a19a71a4a1e010 /core/java/android/widget | |
| parent | 1654d0b8d9ba477a0134338838b6e5921f1aabb8 (diff) | |
| download | frameworks_base-a175a5b7ea3682cb58cca7f9726d0b8171cd549d.zip frameworks_base-a175a5b7ea3682cb58cca7f9726d0b8171cd549d.tar.gz frameworks_base-a175a5b7ea3682cb58cca7f9726d0b8171cd549d.tar.bz2 | |
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
Diffstat (limited to 'core/java/android/widget')
| -rw-r--r-- | core/java/android/widget/TextView.java | 12 | ||||
| -rw-r--r-- | core/java/android/widget/ZoomButtonsController.java | 16 |
2 files changed, 7 insertions, 21 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 7db8a1e..ffe54e9 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -3807,21 +3807,21 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } - Handler h = getHandler(); - if (h != null) { + ViewRootImpl viewRootImpl = getViewRootImpl(); + if (viewRootImpl != null) { long eventTime = SystemClock.uptimeMillis(); - h.sendMessage(h.obtainMessage(ViewRootImpl.DISPATCH_KEY_FROM_IME, + viewRootImpl.dispatchKeyFromIme( new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE - | KeyEvent.FLAG_EDITOR_ACTION))); - h.sendMessage(h.obtainMessage(ViewRootImpl.DISPATCH_KEY_FROM_IME, + | KeyEvent.FLAG_EDITOR_ACTION)); + viewRootImpl.dispatchKeyFromIme( new KeyEvent(SystemClock.uptimeMillis(), eventTime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE - | KeyEvent.FLAG_EDITOR_ACTION))); + | KeyEvent.FLAG_EDITOR_ACTION)); } } diff --git a/core/java/android/widget/ZoomButtonsController.java b/core/java/android/widget/ZoomButtonsController.java index f3d891d..02dc27b 100644 --- a/core/java/android/widget/ZoomButtonsController.java +++ b/core/java/android/widget/ZoomButtonsController.java @@ -501,7 +501,7 @@ public class ZoomButtonsController implements View.OnTouchListener { } else { - ViewRootImpl viewRoot = getOwnerViewRootImpl(); + ViewRootImpl viewRoot = mOwnerView.getViewRootImpl(); if (viewRoot != null) { viewRoot.dispatchKey(event); } @@ -526,20 +526,6 @@ public class ZoomButtonsController implements View.OnTouchListener { } } - private ViewRootImpl getOwnerViewRootImpl() { - View rootViewOfOwner = mOwnerView.getRootView(); - if (rootViewOfOwner == null) { - return null; - } - - ViewParent parentOfRootView = rootViewOfOwner.getParent(); - if (parentOfRootView instanceof ViewRootImpl) { - return (ViewRootImpl) parentOfRootView; - } else { - return null; - } - } - /** * @hide The ZoomButtonsController implements the OnTouchListener, but this * does not need to be shown in its public API. |
