OSDN Git Service

Fix Navigation back from Search
authorherriojr <jherriott@cyngn.com>
Tue, 18 Aug 2015 00:37:15 +0000 (17:37 -0700)
committerherriojr <jherriott@cyngn.com>
Tue, 18 Aug 2015 18:34:57 +0000 (11:34 -0700)
When entering a search result and then backing out all the way, a
history item wasn't being added for the directory the search was
happening in. This fixes it.

Change-Id: I28d5b290a18076f1156f699426420ca78fb3eee6
Cherry-Pick: b4fc75077143de0ff9e26d8d2644d879ccdc0e84

src/com/cyanogenmod/filemanager/activities/NavigationActivity.java
src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java

index 716f917..358549b 100755 (executable)
@@ -642,7 +642,6 @@ public class NavigationActivity extends Activity
         if (curDir != null) {
             VirtualMountPointConsole vc = VirtualMountPointConsole.getVirtualConsoleForPath(
                     mNavigationViews[mCurrentNavigationView].getCurrentDir());
-            getCurrentNavigationView().refresh(true);
             if (vc != null && !vc.isMounted()) {
                 onRequestBookmarksRefresh();
                 removeUnmountedHistory();
@@ -652,11 +651,6 @@ public class NavigationActivity extends Activity
             if (mDisplayingSearchResults) {
                 mDisplayingSearchResults = false;
                 closeSearch();
-            } else {
-                getCurrentNavigationView().refresh(true);
-                Intent intent = new Intent();
-                intent.putExtra(EXTRA_ADD_TO_HISTORY, false);
-                initNavigation(NavigationActivity.this.mCurrentNavigationView, false, intent);
             }
             getCurrentNavigationView().refresh(true);
         }
index ac8f166..a081246 100755 (executable)
@@ -245,10 +245,9 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe
             // is created)
             mNewDirChecked = checkChRootedNavigation(params[0]);
 
-            //Check that it is really necessary change the directory
-            mHasChanged = !(NavigationView.this.mCurrentDir != null &&
-                    NavigationView.this.mCurrentDir.compareTo(mNewDirChecked) == 0);
-            mIsNewHistory = (NavigationView.this.mCurrentDir != null);
+            mHasChanged = !(NavigationView.this.mPreviousDir != null &&
+                    NavigationView.this.mPreviousDir.compareTo(mNewDirChecked) == 0);
+            mIsNewHistory = (NavigationView.this.mPreviousDir != null);
 
             try {
                 //Reset the custom title view and returns to breadcrumb
@@ -814,13 +813,25 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe
             return;
         }
 
+        boolean addToHistory = false;
+        boolean reload = true;
+        boolean useCurrent = false;
+        SearchInfoParcelable searchInfo = null;
+
+        String newDir = this.mCurrentDir;
         if (this.mNavigationTask != null) {
+            addToHistory = this.mNavigationTask.mAddToHistory;
+            reload = this.mNavigationTask.mReload;
+            useCurrent = this.mNavigationTask.mUseCurrent;
+            searchInfo = this.mNavigationTask.mSearchInfo;
             this.mNavigationTask.cancel(true);
             this.mNavigationTask = null;
+            this.mCurrentDir = this.mPreviousDir;
+            this.mPreviousDir = null;
         }
 
         //Reload data
-        changeCurrentDir(this.mCurrentDir, false, true, false, null, scrollTo);
+        changeCurrentDir(newDir, addToHistory, reload, useCurrent, searchInfo, scrollTo);
     }
 
     /**
@@ -1029,7 +1040,7 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe
         this.mCurrentDir = newDir;
         mNavigationTask = new NavigationTask(useCurrent, addToHistory, reload,
                 searchInfo, scrollTo, mRestrictions, mChRooted);
-        mNavigationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, newDir);
+        mNavigationTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, newDir);
     }
 
     /**