From 0e91e1ab6778b30166b09f445eae15e954d0778a Mon Sep 17 00:00:00 2001 From: "hirono@chromium.org" Date: Thu, 6 Feb 2014 11:52:36 +0000 Subject: Files.app: Open the span windows in the active desktop. This CL lets Files.app handles the active desktop in open-window command. BUG=337778, 340950 TEST=manually Review URL: https://codereview.chromium.org/153553004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249371 0039d316-1c4b-4281-b951-d872f2087c98 --- .../file_manager/background/js/background.js | 39 +++++++++++++++++++--- .../foreground/js/file_manager_commands.js | 11 ++++-- 2 files changed, 42 insertions(+), 8 deletions(-) (limited to 'chrome/browser') diff --git a/chrome/browser/resources/file_manager/background/js/background.js b/chrome/browser/resources/file_manager/background/js/background.js index adbac0a..5022000 100644 --- a/chrome/browser/resources/file_manager/background/js/background.js +++ b/chrome/browser/resources/file_manager/background/js/background.js @@ -242,13 +242,37 @@ function AppWindowWrapper(url, id, options) { } /** + * Focuses the window on the specified desktop. + * @param {AppWindow} appWindow Application window. + * @param {string=} opt_profileId The profiled ID of the target window. If it is + * dropped, the window is focused on the current window. + */ +AppWindowWrapper.focusOnDesktop = function(appWindow, opt_profileId) { + new Promise(function(onFullfilled, onRejected) { + if (opt_profileId) { + onFullfilled(opt_profileId); + } else { + chrome.fileBrowserPrivate.getProfiles(function(profiles, + currentId, + displayedId) { + onFullfilled(currentId); + }); + } + }).then(function(profileId) { + appWindow.contentWindow.chrome.fileBrowserPrivate.visitDesktop( + profileId, function() { + appWindow.focus(); + }); + }); +}; + +/** * Shift distance to avoid overlapping windows. * @type {number} * @const */ AppWindowWrapper.SHIFT_DISTANCE = 40; - /** * Opens the window. * @@ -447,7 +471,7 @@ SingletonAppWindowWrapper.prototype.launch = function(appState, opt_callback) { this.queue.run(function(nextStep) { this.window_.contentWindow.appState = appState; this.window_.contentWindow.reload(); - this.window_.focus(); + AppWindowWrapper.focusOnDesktop(this.window_, appState.displayedId); if (opt_callback) opt_callback(); nextStep(); @@ -544,7 +568,8 @@ function launchFileManager(opt_appState, opt_id, opt_type, opt_callback) { continue; } - background.appWindows[key].focus(); + AppWindowWrapper.focusOnDesktop( + background.appWindows[key], opt_appState.displayedId); if (opt_callback) opt_callback(key); onTaskCompleted(); @@ -579,7 +604,8 @@ function launchFileManager(opt_appState, opt_id, opt_type, opt_callback) { continue; if (!background.appWindows[key].isMinimized()) { - background.appWindows[key].focus(); + AppWindowWrapper.focusOnDesktop( + background.appWindows[key], (opt_appState || {}).displayedId); if (opt_callback) opt_callback(key); onTaskCompleted(); @@ -591,7 +617,8 @@ function launchFileManager(opt_appState, opt_id, opt_type, opt_callback) { if (!key.match(FILES_ID_PATTERN)) continue; - background.appWindows[key].focus(); + AppWindowWrapper.focusOnDesktop( + background.appWindows[key], (opt_appState || {}).displayedId); if (opt_callback) opt_callback(key); onTaskCompleted(); @@ -611,6 +638,8 @@ function launchFileManager(opt_appState, opt_id, opt_type, opt_callback) { appId, FILE_MANAGER_WINDOW_CREATE_OPTIONS); appWindow.launch(opt_appState || {}, function() { + AppWindowWrapper.focusOnDesktop( + appWindow.window_, (opt_appState || {}).displayedId); if (opt_callback) opt_callback(appId); onTaskCompleted(); diff --git a/chrome/browser/resources/file_manager/foreground/js/file_manager_commands.js b/chrome/browser/resources/file_manager/foreground/js/file_manager_commands.js index da7a367..c965308 100644 --- a/chrome/browser/resources/file_manager/foreground/js/file_manager_commands.js +++ b/chrome/browser/resources/file_manager/foreground/js/file_manager_commands.js @@ -425,9 +425,14 @@ CommandHandler.COMMANDS_['new-folder'] = { */ CommandHandler.COMMANDS_['new-window'] = { execute: function(event, fileManager) { - fileManager.backgroundPage.launchFileManager({ - currentDirectoryURL: fileManager.getCurrentDirectoryEntry() && - fileManager.getCurrentDirectoryEntry().toURL() + chrome.fileBrowserPrivate.getProfiles(function(profiles, + currentId, + displayedId) { + fileManager.backgroundPage.launchFileManager({ + currentDirectoryURL: fileManager.getCurrentDirectoryEntry() && + fileManager.getCurrentDirectoryEntry().toURL(), + displayedId: currentId !== displayedId ? displayedId : undefined + }); }); }, canExecute: function(event, fileManager) { -- cgit v1.1