summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/DragLayer.java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2011-06-17 13:26:23 -0700
committerAdam Cohen <adamcohen@google.com>2011-06-21 18:00:21 -0700
commit76fc085d28178a5d4fb3787ede956281a2cc3179 (patch)
tree98d95c5f3e069d36cea8fe699e569271a9d6750d /src/com/android/launcher2/DragLayer.java
parentb6c2a87511aeb5b7cc2c20417503dc52a283067c (diff)
downloadandroid_packages_apps_Trebuchet-76fc085d28178a5d4fb3787ede956281a2cc3179.tar.gz
android_packages_apps_Trebuchet-76fc085d28178a5d4fb3787ede956281a2cc3179.tar.bz2
android_packages_apps_Trebuchet-76fc085d28178a5d4fb3787ede956281a2cc3179.zip
New folder visualization, renaming, staggering reorder
Change-Id: I62963d225e6ea5d2ec9d8ebc8a6d73099f5d6c7f
Diffstat (limited to 'src/com/android/launcher2/DragLayer.java')
-rw-r--r--src/com/android/launcher2/DragLayer.java41
1 files changed, 29 insertions, 12 deletions
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index af47bea78..c4d75d6eb 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -25,6 +25,7 @@ import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewParent;
import android.widget.FrameLayout;
import android.widget.ImageView;
@@ -62,13 +63,13 @@ public class DragLayer extends FrameLayout {
mLauncher = launcher;
mDragController = controller;
}
-
+
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
return mDragController.dispatchKeyEvent(event) || super.dispatchKeyEvent(event);
}
- private boolean handleTouchDown(MotionEvent ev) {
+ private boolean handleTouchDown(MotionEvent ev, boolean intercept) {
Rect hitRect = new Rect();
int x = (int) ev.getX();
int y = (int) ev.getY();
@@ -85,17 +86,21 @@ public class DragLayer extends FrameLayout {
}
}
}
- if (mCurrentFolder != null) {
- mCurrentFolder.getHitRect(hitRect);
- int[] screenPos = new int[2];
- View parent = (View) mCurrentFolder.getParent();
- if (parent != null) {
- parent.getLocationOnScreen(screenPos);
- hitRect.offset(screenPos[0], screenPos[1]);
+
+ if (mCurrentFolder != null && intercept) {
+ if (mCurrentFolder.isEditingName()) {
+ getDescendantRectRelativeToSelf(mCurrentFolder.getEditTextRegion(), hitRect);
if (!hitRect.contains(x, y)) {
- mLauncher.closeFolder();
+ mCurrentFolder.dismissEditingName();
+ return true;
}
}
+
+ getDescendantRectRelativeToSelf(mCurrentFolder, hitRect);
+ if (!hitRect.contains(x, y)) {
+ mLauncher.closeFolder();
+ return true;
+ }
}
return false;
}
@@ -103,7 +108,7 @@ public class DragLayer extends FrameLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- if (handleTouchDown(ev)) {
+ if (handleTouchDown(ev, true)) {
return true;
}
}
@@ -121,7 +126,7 @@ public class DragLayer extends FrameLayout {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- if (handleTouchDown(ev)) {
+ if (handleTouchDown(ev, false)) {
return true;
}
}
@@ -143,6 +148,18 @@ public class DragLayer extends FrameLayout {
return mDragController.onTouchEvent(ev);
}
+ private void getDescendantRectRelativeToSelf(View descendant, Rect r) {
+ descendant.getHitRect(r);
+
+ ViewParent viewParent = descendant.getParent();
+ while (viewParent instanceof View && viewParent != this) {
+ final View view = (View)viewParent;
+ r.offset(view.getLeft() + (int) (view.getTranslationX() + 0.5f) - view.getScrollX(),
+ view.getTop() + (int) (view.getTranslationY() + 0.5f) - view.getScrollY());
+ viewParent = view.getParent();
+ }
+ }
+
@Override
public boolean dispatchUnhandledMove(View focused, int direction) {
return mDragController.dispatchUnhandledMove(focused, direction);