From e806def329c6a928f98923ddb021ffd8acfb0b65 Mon Sep 17 00:00:00 2001 From: Raj Yengisetty Date: Mon, 15 Jun 2015 23:15:00 -0700 Subject: Trebuchet: Fix popupMenu behavior and clean up old code. Repro: - Open Overview Menu - Select Scroll Effects - Click on the overflow menu - Press home - Observer popupMenu stays on screen Change-Id: I64e65d66758957552f2d64b0347a2f82d0818757 --- src/com/android/launcher3/Launcher.java | 64 +++++++++------------------------ 1 file changed, 17 insertions(+), 47 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 170aa5f1c..813d091df 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -151,7 +151,8 @@ import java.util.concurrent.atomic.AtomicInteger; */ public class Launcher extends Activity implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks, - View.OnTouchListener, PageSwitchListener, LauncherProviderChangeListener { + View.OnTouchListener, PageSwitchListener, LauncherProviderChangeListener, + PopupMenu.OnDismissListener { static final String TAG = "Launcher"; static final boolean LOGD = false; @@ -250,6 +251,11 @@ public class Launcher extends Activity public static final String USER_HAS_MIGRATED = "launcher.user_migrated_from_old_data"; + @Override + public void onDismiss(PopupMenu popupMenu) { + mPopupMenu = null; + } + /** The different states that Launcher can be in. */ private enum State { NONE, WORKSPACE, APPS_CUSTOMIZE, APPS_CUSTOMIZE_SPRING_LOADED }; private State mState = State.WORKSPACE; @@ -342,8 +348,6 @@ public class Launcher extends Activity private Bundle mSavedInstanceState; - private Dialog mTransitionEffectDialog; - protected LauncherModel mModel; private IconCache mIconCache; private boolean mUserPresent = true; @@ -431,6 +435,8 @@ public class Launcher extends Activity FocusIndicatorView mFocusHandler; + private PopupMenu mPopupMenu; + public Animator.AnimatorListener mAnimatorListener = new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator arg0) {} @@ -1289,43 +1295,6 @@ public class Launcher extends Activity return mDrawerType; } - public void onClickSortModeButton(View v) { - final PopupMenu popupMenu = new PopupMenu(this, v); - final Menu menu = popupMenu.getMenu(); - popupMenu.inflate(R.menu.apps_customize_sort_mode); - switch(mAppsCustomizeContent.getSortMode()) { - case Title: - menu.findItem(R.id.sort_mode_title).setChecked(true); - break; - case LaunchCount: - menu.findItem(R.id.sort_mode_launch_count).setChecked(true); - break; - case InstallTime: - menu.findItem(R.id.sort_mode_install_time).setChecked(true); - break; - } - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.sort_mode_title: - mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.Title); - break; - case R.id.sort_mode_install_time: - mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.InstallTime); - break; - case R.id.sort_mode_launch_count: - mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.LaunchCount); - break; - } - mOverviewSettingsPanel.notifyDataSetInvalidated(); - SettingsProvider.putInt(getBaseContext(), SettingsProvider.SETTINGS_UI_DRAWER_SORT_MODE, - mAppsCustomizeContent.getSortMode().getValue()); - return true; - } - }); - popupMenu.show(); - } - public void onClickDynamicGridSizeButton() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); @@ -1431,10 +1400,10 @@ public class Launcher extends Activity } public void onClickTransitionEffectOverflowMenuButton(View v, final boolean drawer) { - final PopupMenu popupMenu = new PopupMenu(this, v); + mPopupMenu = new PopupMenu(this, v); - final Menu menu = popupMenu.getMenu(); - popupMenu.inflate(R.menu.scrolling_settings); + final Menu menu = mPopupMenu.getMenu(); + mPopupMenu.inflate(R.menu.scrolling_settings); MenuItem pageOutlines = menu.findItem(R.id.scrolling_page_outlines); MenuItem fadeAdjacent = menu.findItem(R.id.scrolling_fade_adjacent); @@ -1455,7 +1424,7 @@ public class Launcher extends Activity final PagedView pagedView = !drawer ? mWorkspace : mAppsCustomizeContent; - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { @@ -1479,7 +1448,8 @@ public class Launcher extends Activity } }); - popupMenu.show(); + mPopupMenu.setOnDismissListener(this); + mPopupMenu.show(); } protected void startSettings() { @@ -2250,8 +2220,8 @@ public class Launcher extends Activity // also will cancel mWaitingForResult. closeSystemDialogs(); - if (mTransitionEffectDialog != null) { - mTransitionEffectDialog.cancel(); + if (mPopupMenu != null) { + mPopupMenu.dismiss(); } final boolean alreadyOnHome = mHasFocus && ((intent.getFlags() & -- cgit v1.2.3