OSDN Git Service

Fix trackball selection on the desktop (not all apps, yet)
authorMike Cleron <mcleron@google.com>
Tue, 20 Oct 2009 00:03:36 +0000 (17:03 -0700)
committerMike Cleron <mcleron@google.com>
Tue, 20 Oct 2009 00:14:25 +0000 (17:14 -0700)
AllApps view is always visible (in the View sense), which was causing it
to take focus when it should not have. Changed Launcher to manually
turn on/off the focusability of AllApps as it appears/disappears.

src/com/android/launcher2/AllAppsView.java
src/com/android/launcher2/Launcher.java

index 7ee3026..305f404 100644 (file)
@@ -374,6 +374,7 @@ public class AllAppsView extends RSSurfaceView
         return mRollo.mMessageProc.mZoom > 0.001f;
     }
 
+    /*
     @Override
     public boolean onTrackballEvent(MotionEvent ev)
     {
@@ -386,6 +387,7 @@ public class AllAppsView extends RSSurfaceView
 
         return true;
     }
+    */
 
     public void setApps(ArrayList<ApplicationInfo> list) {
         mAllAppsList = list;
index bddc9ac..8516366 100644 (file)
@@ -529,6 +529,8 @@ public final class Launcher extends Activity
         mAllAppsGrid.setLauncher(this);
         mAllAppsGrid.setDragController(dragController);
         mAllAppsGrid.setWillNotDraw(false); // We don't want a hole punched in our window.
+        // Manage focusability manually since this thing is always visible
+        mAllAppsGrid.setFocusable(false); 
 
         mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);
         final Workspace workspace = mWorkspace;
@@ -1611,6 +1613,8 @@ public final class Launcher extends Activity
         mAllAppsGrid.zoom(1.0f);
         //mWorkspace.hide();
 
+        mAllAppsGrid.setFocusable(true);
+        
         // TODO: fade these two too
         mDeleteZone.setVisibility(View.GONE);
         //mHandleView.setVisibility(View.GONE);
@@ -1619,8 +1623,10 @@ public final class Launcher extends Activity
     void closeAllApps(boolean animated) {
         if (mAllAppsGrid.isVisible()) {
             mAllAppsGrid.zoom(0.0f);
+            mAllAppsGrid.setFocusable(false);
             mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
 
+
             // TODO: fade these two too
             /*
             mDeleteZone.setVisibility(View.VISIBLE);