Merge change Ida4d6ab0 into eclair-mr2

* changes:
  Allows users to scroll while in select mode.
This commit is contained in:
Android (Google) Code Review
2009-12-11 06:22:12 -08:00
2 changed files with 23 additions and 5 deletions

View File

@@ -254,6 +254,12 @@ implements MovementMethod
buffer.setSpan(LAST_TAP_DOWN, offset, offset,
Spannable.SPAN_POINT_POINT);
// Disallow intercepting of the touch events, so that
// users can scroll and select at the same time.
// without this, users would get booted out of select
// mode once the view detected it needed to scroll.
widget.getParent().requestDisallowInterceptTouchEvent(true);
}
} else if (event.getAction() == MotionEvent.ACTION_MOVE ) {
boolean cap = (MetaKeyKeyListener.getMetaState(buffer,
@@ -277,7 +283,7 @@ implements MovementMethod
int spanstart;
int spanend;
if (offset >= lastDownOffset) {
// expand to from word start of the original tap to new word
// Expand from word start of the original tap to new word
// end, since we are selecting "forwards"
spanstart = findWordStart(buffer, lastDownOffset);
spanend = findWordEnd(buffer, offset);

View File

@@ -24,6 +24,7 @@ import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.widget.TextView;
import android.view.KeyEvent;
public class Touch {
private Touch() { }
@@ -139,10 +140,21 @@ public class Touch {
if (ds[0].mFarEnough) {
ds[0].mUsed = true;
float dx = ds[0].mX - event.getX();
float dy = ds[0].mY - event.getY();
boolean cap = (MetaKeyKeyListener.getMetaState(buffer,
KeyEvent.META_SHIFT_ON) == 1) ||
(MetaKeyKeyListener.getMetaState(buffer,
MetaKeyKeyListener.META_SELECTING) != 0);
float dx;
float dy;
if (cap) {
// if we're selecting, we want the scroll to go in
// the direction of the drag
dx = event.getX() - ds[0].mX;
dy = event.getY() - ds[0].mY;
} else {
dx = ds[0].mX - event.getX();
dy = ds[0].mY - event.getY();
}
ds[0].mX = event.getX();
ds[0].mY = event.getY();