summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher')
-rw-r--r--src/com/android/launcher/Launcher.java34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index 3fd141d5a..f1af0b135 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -200,6 +200,9 @@ public final class Launcher extends Activity implements View.OnClickListener, On
private boolean mWaitingForResult;
private boolean mLocaleChanged;
+ private boolean mHomeDown;
+ private boolean mBackDown;
+
private Bundle mSavedInstanceState;
private DesktopBinder mBinder;
@@ -1305,18 +1308,39 @@ public final class Launcher extends Activity implements View.OnClickListener, On
}
@Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+ if (!hasFocus) {
+ mBackDown = mHomeDown = false;
+ }
+ }
+
+ @Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
- mWorkspace.dispatchKeyEvent(event);
- if (mDrawer.isOpened()) {
- closeDrawer();
- } else {
- closeFolder();
+ mBackDown = true;
+ return true;
+ case KeyEvent.KEYCODE_HOME:
+ mHomeDown = true;
+ return true;
+ }
+ } else if (event.getAction() == KeyEvent.ACTION_UP) {
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_BACK:
+ if (!event.isCanceled()) {
+ mWorkspace.dispatchKeyEvent(event);
+ if (mDrawer.isOpened()) {
+ closeDrawer();
+ } else {
+ closeFolder();
+ }
}
+ mBackDown = false;
return true;
case KeyEvent.KEYCODE_HOME:
+ mHomeDown = false;
return true;
}
}