Fixing issue with overview panel buttons.
Bug: 22699895
Change-Id: I8a2f05a6008343327e34cbd3169e4056729e0b75
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 8679ec7..8736b3a 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -46,7 +46,6 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
@@ -1268,7 +1267,7 @@
if (mState == State.WORKSPACE && !mWorkspace.isInOverviewMode() &&
!mWorkspace.isSwitchingState()) {
mOverviewPanel.requestFocus();
- showOverviewMode(true);
+ showOverviewMode(true, true /* requestButtonFocus */);
}
}
return true;
@@ -1370,55 +1369,8 @@
mHotseat.setOnLongClickListener(this);
}
- mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);
- // Long-clicking buttons in the overview panel does the same thing as clicking them.
- OnLongClickListener performClickOnLongClick = new OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- return v.performClick();
- }
- };
- mWidgetsButton = findViewById(R.id.widget_button);
- mWidgetsButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- if (!mWorkspace.isSwitchingState()) {
- onClickAddWidgetButton(view);
- }
- }
- });
- mWidgetsButton.setOnLongClickListener(performClickOnLongClick);
- mWidgetsButton.setOnTouchListener(getHapticFeedbackTouchListener());
-
- View wallpaperButton = findViewById(R.id.wallpaper_button);
- wallpaperButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- if (!mWorkspace.isSwitchingState()) {
- onClickWallpaperPicker(view);
- }
- }
- });
- wallpaperButton.setOnLongClickListener(performClickOnLongClick);
- wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());
-
- View settingsButton = findViewById(R.id.settings_button);
- if (hasSettings()) {
- settingsButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- if (!mWorkspace.isSwitchingState()) {
- onClickSettingsButton(view);
- }
- }
- });
- settingsButton.setOnLongClickListener(performClickOnLongClick);
- settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
- } else {
- settingsButton.setVisibility(View.GONE);
- }
-
- mOverviewPanel.setAlpha(0f);
+ // Setup the overview panel
+ setupOverviewPanel();
// Setup the workspace
mWorkspace.setHapticFeedbackEnabled(false);
@@ -1454,6 +1406,64 @@
}
}
+ private void setupOverviewPanel() {
+ mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);
+
+ // Long-clicking buttons in the overview panel does the same thing as clicking them.
+ OnLongClickListener performClickOnLongClick = new OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ return v.performClick();
+ }
+ };
+
+ // Bind wallpaper button actions
+ View wallpaperButton = findViewById(R.id.wallpaper_button);
+ wallpaperButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (!mWorkspace.isSwitchingState()) {
+ onClickWallpaperPicker(view);
+ }
+ }
+ });
+ wallpaperButton.setOnLongClickListener(performClickOnLongClick);
+ wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());
+
+ // Bind widget button actions
+ mWidgetsButton = findViewById(R.id.widget_button);
+ mWidgetsButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (!mWorkspace.isSwitchingState()) {
+ onClickAddWidgetButton(view);
+ }
+ }
+ });
+ mWidgetsButton.setOnLongClickListener(performClickOnLongClick);
+ mWidgetsButton.setOnTouchListener(getHapticFeedbackTouchListener());
+
+ // Bind settings actions
+ View settingsButton = findViewById(R.id.settings_button);
+ boolean hasSettings = hasSettings();
+ if (hasSettings) {
+ settingsButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (!mWorkspace.isSwitchingState()) {
+ onClickSettingsButton(view);
+ }
+ }
+ });
+ settingsButton.setOnLongClickListener(performClickOnLongClick);
+ settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
+ } else {
+ settingsButton.setVisibility(View.GONE);
+ }
+
+ mOverviewPanel.setAlpha(0f);
+ }
+
/**
* Sets the all apps button. This method is called from {@link Hotseat}.
*/
@@ -3352,12 +3362,35 @@
return changed;
}
+ /**
+ * Shows the overview button.
+ */
void showOverviewMode(boolean animated) {
+ showOverviewMode(animated, false);
+ }
+
+ /**
+ * Shows the overview button, and if {@param requestButtonFocus} is set, will force the focus
+ * onto one of the overview panel buttons.
+ */
+ void showOverviewMode(boolean animated, boolean requestButtonFocus) {
+ Runnable postAnimRunnable = null;
+ if (requestButtonFocus) {
+ postAnimRunnable = new Runnable() {
+ @Override
+ public void run() {
+ // Hitting the menu button when in touch mode does not trigger touch mode to
+ // be disabled, so if requested, force focus on one of the overview panel
+ // buttons.
+ mOverviewPanel.requestFocusFromTouch();
+ }
+ };
+ }
mWorkspace.setVisibility(View.VISIBLE);
mStateTransitionAnimation.startAnimationToWorkspace(mState, mWorkspace.getState(),
Workspace.State.OVERVIEW,
WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated,
- null /* onCompleteRunnable */);
+ postAnimRunnable);
mState = State.WORKSPACE;
}