Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Unified Diff: ui/file_manager/file_manager/foreground/js/ui/navigation_list.js

Issue 303503004: Change directory if the active list item on navigation list is changed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Divide browser tests into smaller parts and disable them on debug build. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/file_manager/file_manager/foreground/js/ui/navigation_list.js
diff --git a/ui/file_manager/file_manager/foreground/js/ui/navigation_list.js b/ui/file_manager/file_manager/foreground/js/ui/navigation_list.js
index 4368c9bef67dde49ab94587971f2ae3dc2874e9e..22bad9adcf500c7bdf57a20755cc07cbde6d8b25 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/navigation_list.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/navigation_list.js
@@ -201,6 +201,9 @@ NavigationList.prototype.decorate = function(volumeManager, directoryModel) {
this.scrollBar_ = new ScrollBar();
this.scrollBar_.initialize(this.parentNode, this);
+ // Keeps track of selected model item to detect if it is changed actually.
+ this.currentModelItem_ = null;
+
// Overriding default role 'list' set by cr.ui.List.decorate() to 'listbox'
// role for better accessibility on ChromeOS.
this.setAttribute('role', 'listbox');
@@ -287,6 +290,7 @@ NavigationList.prototype.selectByIndex = function(index) {
if (index < 0 || index > this.dataModel.length - 1)
return false;
+ this.selectionModel.selectedIndex = index;
this.activateModelItem_(this.dataModel.item(index));
return true;
};
@@ -299,16 +303,11 @@ NavigationList.prototype.selectByIndex = function(index) {
*/
NavigationList.prototype.activateModelItem_ = function(modelItem) {
var onEntryResolved = function(entry) {
- // If the root item of active directory was same as newly activated
- // root item, keep the active directory as it was.
- var currentDir = this.directoryModel_.getCurrentDirEntry();
- if (util.isSameEntry(entry, currentDir) ||
- util.isDescendantEntry(entry, currentDir)) {
- return;
+ // Change directory to the model item's root directory if needed.
yoshiki 2014/06/05 15:11:23 nit: Changes
fukino 2014/06/06 02:15:24 Done.
+ if (!util.isSameEntry(this.directoryModel_.getCurrentDirEntry(), entry)) {
+ metrics.recordUserAction('FolderShortcut.Navigate');
+ this.directoryModel_.changeDirectoryEntry(entry);
}
-
- metrics.recordUserAction('FolderShortcut.Navigate');
- this.directoryModel_.changeDirectoryEntry(entry);
}.bind(this);
if (modelItem.isVolume) {
@@ -350,12 +349,25 @@ NavigationList.prototype.onBeforeSelectionChange_ = function(event) {
* @private
*/
NavigationList.prototype.onSelectionChange_ = function(event) {
+ var index = this.selectionModel.selectedIndex;
+ if (index < 0 || index > this.dataModel.length - 1)
+ return;
+
+ // If the selected model item is not changed actually, we don't change the
+ // current directory even if the selected index is changed.
+ var modelItem = this.dataModel.item(index);
+ if (modelItem === this.currentModelItem_)
+ return;
+
+ // Remember the selected model item.
yoshiki 2014/06/05 15:11:23 nit: remembers
fukino 2014/06/06 02:15:25 Done.
+ this.currentModelItem_ = modelItem;
+
// This handler is invoked even when the navigation list itself changes the
// selection. In such case, we shouldn't handle the event.
if (this.dontHandleSelectionEvent_)
return;
- this.selectByIndex(this.selectionModel.selectedIndex);
+ this.activateModelItem_(modelItem);
};
/**

Powered by Google App Engine
This is Rietveld 408576698