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

Side by Side Diff: ui/views/widget/native_widget_aura.cc

Issue 11030017: Add context to gfx::Screen calls in support of simultaneous desktop+ash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix some new gfx::Screen additions Created 8 years, 2 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 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 "ui/views/widget/native_widget_aura.h" 5 #include "ui/views/widget/native_widget_aura.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "third_party/skia/include/core/SkRegion.h" 9 #include "third_party/skia/include/core/SkRegion.h"
10 #include "ui/aura/client/activation_change_observer.h" 10 #include "ui/aura/client/activation_change_observer.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 void SetRestoreBounds(aura::Window* window, const gfx::Rect& bounds) { 76 void SetRestoreBounds(aura::Window* window, const gfx::Rect& bounds) {
77 window->SetProperty(aura::client::kRestoreBoundsKey, new gfx::Rect(bounds)); 77 window->SetProperty(aura::client::kRestoreBoundsKey, new gfx::Rect(bounds));
78 } 78 }
79 79
80 } // namespace 80 } // namespace
81 81
82 //////////////////////////////////////////////////////////////////////////////// 82 ////////////////////////////////////////////////////////////////////////////////
83 // NativeWidgetAura, public: 83 // NativeWidgetAura, public:
84 84
85 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) 85 NativeWidgetAura::NativeWidgetAura(
86 internal::NativeWidgetDelegate* delegate, gfx::NativeView parent)
86 : delegate_(delegate), 87 : delegate_(delegate),
87 ALLOW_THIS_IN_INITIALIZER_LIST(desktop_helper_( 88 ALLOW_THIS_IN_INITIALIZER_LIST(desktop_helper_(
88 ViewsDelegate::views_delegate ? 89 ViewsDelegate::views_delegate ?
89 ViewsDelegate::views_delegate->CreateNativeWidgetHelper(this) : 90 ViewsDelegate::views_delegate->CreateNativeWidgetHelper(this, parent):
90 NULL)), 91 NULL)),
91 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))), 92 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))),
92 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), 93 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET),
93 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), 94 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)),
94 can_activate_(true), 95 can_activate_(true),
95 destroying_(false), 96 destroying_(false),
96 cursor_(gfx::kNullCursor), 97 cursor_(gfx::kNullCursor),
97 saved_window_state_(ui::SHOW_STATE_DEFAULT) { 98 saved_window_state_(ui::SHOW_STATE_DEFAULT) {
98 } 99 }
99 100
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 SetAlwaysOnTop(params.keep_on_top); 161 SetAlwaysOnTop(params.keep_on_top);
161 // If the parent is not specified, find the default parent for 162 // If the parent is not specified, find the default parent for
162 // the |window_| using the desired |window_bounds|. 163 // the |window_| using the desired |window_bounds|.
163 if (!parent) { 164 if (!parent) {
164 parent = aura::client::GetStackingClient()->GetDefaultParent( 165 parent = aura::client::GetStackingClient()->GetDefaultParent(
165 window_, window_bounds); 166 window_, window_bounds);
166 } else if (window_bounds == gfx::Rect()) { 167 } else if (window_bounds == gfx::Rect()) {
167 // If a parent is specified but no bounds are given, 168 // If a parent is specified but no bounds are given,
168 // use the origin of the parent's display so that the widget 169 // use the origin of the parent's display so that the widget
169 // will be added to the same display as the parent. 170 // will be added to the same display as the parent.
170 gfx::Rect bounds = gfx::Screen::GetDisplayNearestWindow(parent).bounds(); 171 gfx::Rect bounds = gfx::Screen::GetScreenFor(parent)->
172 GetDisplayNearestWindow(parent).bounds();
171 window_bounds.set_origin(bounds.origin()); 173 window_bounds.set_origin(bounds.origin());
172 } 174 }
173 window_->SetParent(parent); 175 window_->SetParent(parent);
174 } 176 }
175 177
176 // Wait to set the bounds until we have a parent. That way we can know our 178 // Wait to set the bounds until we have a parent. That way we can know our
177 // true state/bounds (the LayoutManager may enforce a particular 179 // true state/bounds (the LayoutManager may enforce a particular
178 // state/bounds). 180 // state/bounds).
179 if (IsMaximized()) 181 if (IsMaximized())
180 SetRestoreBounds(window_, window_bounds); 182 SetRestoreBounds(window_, window_bounds);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 310
309 internal::InputMethodDelegate* NativeWidgetAura::GetInputMethodDelegate() { 311 internal::InputMethodDelegate* NativeWidgetAura::GetInputMethodDelegate() {
310 return this; 312 return this;
311 } 313 }
312 314
313 void NativeWidgetAura::CenterWindow(const gfx::Size& size) { 315 void NativeWidgetAura::CenterWindow(const gfx::Size& size) {
314 gfx::Rect parent_bounds(window_->parent()->GetBoundsInRootWindow()); 316 gfx::Rect parent_bounds(window_->parent()->GetBoundsInRootWindow());
315 // When centering window, we take the intersection of the host and 317 // When centering window, we take the intersection of the host and
316 // the parent. We assume the root window represents the visible 318 // the parent. We assume the root window represents the visible
317 // rect of a single screen. 319 // rect of a single screen.
318 gfx::Rect work_area = 320 gfx::Rect work_area = gfx::Screen::GetScreenFor(window_)->
319 gfx::Screen::GetDisplayNearestWindow(window_).work_area(); 321 GetDisplayNearestWindow(window_).work_area();
320 322
321 aura::client::ScreenPositionClient* screen_position_client = 323 aura::client::ScreenPositionClient* screen_position_client =
322 aura::client::GetScreenPositionClient(window_->GetRootWindow()); 324 aura::client::GetScreenPositionClient(window_->GetRootWindow());
323 if (screen_position_client) { 325 if (screen_position_client) {
324 gfx::Point origin = work_area.origin(); 326 gfx::Point origin = work_area.origin();
325 screen_position_client->ConvertPointFromScreen(window_->GetRootWindow(), 327 screen_position_client->ConvertPointFromScreen(window_->GetRootWindow(),
326 &origin); 328 &origin);
327 work_area.set_origin(origin); 329 work_area.set_origin(origin);
328 } 330 }
329 331
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 } 418 }
417 return window_->GetBoundsInScreen(); 419 return window_->GetBoundsInScreen();
418 } 420 }
419 421
420 void NativeWidgetAura::SetBounds(const gfx::Rect& bounds) { 422 void NativeWidgetAura::SetBounds(const gfx::Rect& bounds) {
421 aura::RootWindow* root = window_->GetRootWindow(); 423 aura::RootWindow* root = window_->GetRootWindow();
422 if (root) { 424 if (root) {
423 aura::client::ScreenPositionClient* screen_position_client = 425 aura::client::ScreenPositionClient* screen_position_client =
424 aura::client::GetScreenPositionClient(root); 426 aura::client::GetScreenPositionClient(root);
425 if (screen_position_client) { 427 if (screen_position_client) {
426 gfx::Display dst_display = gfx::Screen::GetDisplayMatching(bounds); 428 gfx::Display dst_display =
429 gfx::Screen::GetScreenFor(window_)->GetDisplayMatching(bounds);
427 screen_position_client->SetBounds(window_, bounds, dst_display); 430 screen_position_client->SetBounds(window_, bounds, dst_display);
428 return; 431 return;
429 } 432 }
430 } 433 }
431 window_->SetBounds(bounds); 434 window_->SetBounds(bounds);
432 } 435 }
433 436
434 void NativeWidgetAura::SetSize(const gfx::Size& size) { 437 void NativeWidgetAura::SetSize(const gfx::Size& size) {
435 window_->SetBounds(gfx::Rect(window_->bounds().origin(), size)); 438 window_->SetBounds(gfx::Rect(window_->bounds().origin(), size));
436 } 439 }
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 cursor_client->SetCursor(cursor); 618 cursor_client->SetCursor(cursor);
616 } 619 }
617 620
618 void NativeWidgetAura::ClearNativeFocus() { 621 void NativeWidgetAura::ClearNativeFocus() {
619 if (window_ && window_->GetFocusManager() && 622 if (window_ && window_->GetFocusManager() &&
620 window_->Contains(window_->GetFocusManager()->GetFocusedWindow())) 623 window_->Contains(window_->GetFocusManager()->GetFocusedWindow()))
621 window_->GetFocusManager()->SetFocusedWindow(window_, NULL); 624 window_->GetFocusManager()->SetFocusedWindow(window_, NULL);
622 } 625 }
623 626
624 gfx::Rect NativeWidgetAura::GetWorkAreaBoundsInScreen() const { 627 gfx::Rect NativeWidgetAura::GetWorkAreaBoundsInScreen() const {
625 return gfx::Screen::GetDisplayNearestWindow(GetNativeView()).work_area(); 628 return gfx::Screen::GetScreenFor(GetNativeView())->
629 GetDisplayNearestWindow(GetNativeView()).work_area();
626 } 630 }
627 631
628 void NativeWidgetAura::SetInactiveRenderingDisabled(bool value) { 632 void NativeWidgetAura::SetInactiveRenderingDisabled(bool value) {
629 if (!value) { 633 if (!value) {
630 active_window_observer_.reset(); 634 active_window_observer_.reset();
631 } else { 635 } else {
632 active_window_observer_.reset( 636 active_window_observer_.reset(
633 new NativeWidgetAuraWindowObserver(window_, delegate_)); 637 new NativeWidgetAuraWindowObserver(window_, delegate_));
634 } 638 }
635 } 639 }
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 return false; 943 return false;
940 } 944 }
941 945
942 namespace internal { 946 namespace internal {
943 947
944 //////////////////////////////////////////////////////////////////////////////// 948 ////////////////////////////////////////////////////////////////////////////////
945 // internal::NativeWidgetPrivate, public: 949 // internal::NativeWidgetPrivate, public:
946 950
947 // static 951 // static
948 NativeWidgetPrivate* NativeWidgetPrivate::CreateNativeWidget( 952 NativeWidgetPrivate* NativeWidgetPrivate::CreateNativeWidget(
949 internal::NativeWidgetDelegate* delegate) { 953 internal::NativeWidgetDelegate* delegate,
950 return new NativeWidgetAura(delegate); 954 gfx::NativeView parent) {
955 return new NativeWidgetAura(delegate, parent);
951 } 956 }
952 957
953 // static 958 // static
954 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeView( 959 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeView(
955 gfx::NativeView native_view) { 960 gfx::NativeView native_view) {
956 return reinterpret_cast<NativeWidgetAura*>(native_view->user_data()); 961 return reinterpret_cast<NativeWidgetAura*>(native_view->user_data());
957 } 962 }
958 963
959 // static 964 // static
960 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeWindow( 965 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeWindow(
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 return aura::Env::GetInstance()->is_mouse_button_down(); 1040 return aura::Env::GetInstance()->is_mouse_button_down();
1036 } 1041 }
1037 1042
1038 // static 1043 // static
1039 bool NativeWidgetPrivate::IsTouchDown() { 1044 bool NativeWidgetPrivate::IsTouchDown() {
1040 return aura::Env::GetInstance()->is_touch_down(); 1045 return aura::Env::GetInstance()->is_touch_down();
1041 } 1046 }
1042 1047
1043 } // namespace internal 1048 } // namespace internal
1044 } // namespace views 1049 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698