OSDN Git Service

Make home send tap commands to live wallpaper.
authorMike Cleron <mcleron@google.com>
Fri, 23 Oct 2009 23:15:16 +0000 (16:15 -0700)
committerMike Cleron <mcleron@google.com>
Fri, 23 Oct 2009 23:15:16 +0000 (16:15 -0700)
(This only applies to taps on empty spaces)

src/com/android/launcher2/CellLayout.java
src/com/android/launcher2/Workspace.java

index 63e01bb..6dd18d3 100644 (file)
@@ -58,6 +58,8 @@ public class CellLayout extends ViewGroup {
     private RectF mDragRect = new RectF();
 
     private boolean mDirtyTag;
+    
+    private boolean mLastDownOnOccupiedCell = false;
 
     public CellLayout(Context context) {
         this(context, null);
@@ -176,6 +178,8 @@ public class CellLayout extends ViewGroup {
                     }
                 }
             }
+            
+            mLastDownOnOccupiedCell = found;
 
             if (!found) {
                 int cellXY[] = mCellXY;
@@ -1039,6 +1043,10 @@ out:            for (int i = x; i < x + spanX - 1 && x < xCount; i++) {
                     ", y=" + cellY + "]";
         }
     }
+
+    public boolean lastDownOnOccupiedCell() {
+        return mLastDownOnOccupiedCell;
+    }
 }
 
 
index b2f0a4d..d4a9d95 100644 (file)
@@ -77,7 +77,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
 
     private float mLastMotionX;
     private float mLastMotionY;
-
+    
     private final static int TOUCH_STATE_REST = 0;
     private final static int TOUCH_STATE_SCROLLING = 1;
 
@@ -735,10 +735,22 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
 
             case MotionEvent.ACTION_CANCEL:
             case MotionEvent.ACTION_UP:
+                
+                if (mTouchState != TOUCH_STATE_SCROLLING) {
+                    
+                    final CellLayout currentScreen = (CellLayout)getChildAt(mCurrentScreen);
+                    if (!currentScreen.lastDownOnOccupiedCell()) {
+                        // Send a tap to the wallpaper if the last down was on empty space
+                        mWallpaperManager.sendWallpaperCommand(getWindowToken(), 
+                                "android.wallpaper.tap", (int) ev.getX(), (int) ev.getY(), 0, null);
+                    }
+                }
+                
                 // Release the drag
                 clearChildrenCache();
                 mTouchState = TOUCH_STATE_REST;
                 mAllowLongPress = false;
+
                 break;
         }
 
@@ -768,7 +780,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
 
     @Override
     public boolean onTouchEvent(MotionEvent ev) {
-
+        
         if (mLauncher.isWorkspaceLocked()) {
             return false; // We don't want the events.  Let them fall through to the all apps view.
         }