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

Side by Side Diff: chrome/browser/ui/window_sizer/window_sizer_ash.cc

Issue 102773002: Open non browser window on the target display (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: exclude win7 Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/window_sizer/window_sizer.h" 5 #include "chrome/browser/ui/window_sizer/window_sizer.h"
6 6
7 #include "ash/shell.h"
7 #include "ash/wm/window_positioner.h" 8 #include "ash/wm/window_positioner.h"
8 #include "ash/wm/window_state.h" 9 #include "ash/wm/window_state.h"
9 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_window.h" 11 #include "chrome/browser/ui/browser_window.h"
11 #include "ui/aura/root_window.h" 12 #include "ui/aura/root_window.h"
12 #include "ui/aura/window.h" 13 #include "ui/aura/window.h"
13 #include "ui/gfx/screen.h" 14 #include "ui/gfx/screen.h"
14 15
15 void WindowSizer::GetTabbedBrowserBoundsAsh( 16 void WindowSizer::GetTabbedBrowserBoundsAsh(
16 gfx::Rect* bounds_in_screen, 17 gfx::Rect* bounds_in_screen,
17 ui::WindowShowState* show_state) const { 18 ui::WindowShowState* show_state) const {
18 DCHECK(show_state); 19 DCHECK(show_state);
19 DCHECK(bounds_in_screen); 20 DCHECK(bounds_in_screen);
20 DCHECK(browser_->is_type_tabbed()); 21 DCHECK(browser_->is_type_tabbed());
21 DCHECK(bounds_in_screen->IsEmpty()); 22 DCHECK(bounds_in_screen->IsEmpty());
22 23
23 ui::WindowShowState passed_show_state = *show_state; 24 ui::WindowShowState passed_show_state = *show_state;
24 25
25 bool is_saved_bounds = GetSavedWindowBounds(bounds_in_screen, show_state); 26 bool is_saved_bounds = GetSavedWindowBounds(bounds_in_screen, show_state);
26 // If there is no saved bounds (hence bounds_in_screen is empty), the 27 gfx::Display display;
27 // |display| will be the primary display. 28 if (is_saved_bounds) {
28 const gfx::Display& display = screen_->GetDisplayMatching(*bounds_in_screen); 29 display = screen_->GetDisplayMatching(*bounds_in_screen);
29 if (!is_saved_bounds) 30 } else {
31 // If there is no saved bounds (hence bounds_in_screen is empty), use the
32 // target display.
33 display = target_display_provider_->GetTargetDisplay(screen_,
34 *bounds_in_screen);
30 *bounds_in_screen = ash::WindowPositioner::GetDefaultWindowBounds(display); 35 *bounds_in_screen = ash::WindowPositioner::GetDefaultWindowBounds(display);
36 }
31 37
32 if (browser_->is_session_restore()) { 38 if (browser_->is_session_restore()) {
33 // This is a fall-through case when there is no bounds recorded 39 // This is a fall-through case when there is no bounds recorded
34 // for restored window, and should not be used except for the case 40 // for restored window, and should not be used except for the case
35 // above. The regular path is handled in 41 // above. The regular path is handled in
36 // |WindowSizer::DetermineWindowBoundsAndShowState|. 42 // |WindowSizer::DetermineWindowBoundsAndShowState|.
37 43
38 // Note: How restore bounds/show state data are passed. 44 // Note: How restore bounds/show state data are passed.
39 // The restore bounds is passed via |Browser::override_bounds()| in 45 // The restore bounds is passed via |Browser::override_bounds()| in
40 // |chrome::GetBrowserWindowBoundsAndShowState()|. 46 // |chrome::GetBrowserWindowBoundsAndShowState()|.
41 // The restore state is passed via |Browser::initial_state()| in 47 // The restore state is passed via |Browser::initial_state()| in
42 // |WindowSizer::GetWindowDefaultShowState|. 48 // |WindowSizer::GetWindowDefaultShowState|.
43 bounds_in_screen->AdjustToFit(display.work_area()); 49 bounds_in_screen->AdjustToFit(display.work_area());
44 return; 50 return;
45 } 51 }
46 52
47 // The |browser_window| is non NULL when this is called after 53 // The |browser_window| is non NULL when this is called after
48 // browser's aura window is created. 54 // browser's aura window is created.
49 aura::Window* browser_window = 55 aura::Window* browser_window =
50 browser_->window() ? browser_->window()->GetNativeWindow() : NULL; 56 browser_->window() ? browser_->window()->GetNativeWindow() : NULL;
51 57
52 ash::WindowPositioner::GetBoundsAndShowStateForNewWindow( 58 ash::WindowPositioner::GetBoundsAndShowStateForNewWindow(
53 screen_, 59 screen_,
54 browser_window, 60 browser_window,
55 is_saved_bounds, 61 is_saved_bounds,
56 passed_show_state, 62 passed_show_state,
57 bounds_in_screen, 63 bounds_in_screen,
58 show_state); 64 show_state);
59 } 65 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/window_sizer/window_sizer.cc ('k') | chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698