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

Side by Side Diff: ui/views/mus/native_widget_mus.cc

Issue 1416373010: Implement a MusBrowserFrame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@chrome
Patch Set: . Created 5 years, 1 month 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
« no previous file with comments | « ui/views/mus/native_widget_mus.h ('k') | ui/views/mus/window_manager_connection.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/mus/native_widget_mus.h" 5 #include "ui/views/mus/native_widget_mus.h"
6 6
7 #include "components/mus/public/cpp/property_type_converters.h" 7 #include "components/mus/public/cpp/property_type_converters.h"
8 #include "components/mus/public/cpp/window.h" 8 #include "components/mus/public/cpp/window.h"
9 #include "mojo/converters/geometry/geometry_type_converters.h" 9 #include "mojo/converters/geometry/geometry_type_converters.h"
10 #include "ui/aura/client/default_capture_client.h" 10 #include "ui/aura/client/default_capture_client.h"
11 #include "ui/aura/client/window_tree_client.h"
11 #include "ui/aura/layout_manager.h" 12 #include "ui/aura/layout_manager.h"
12 #include "ui/aura/window.h" 13 #include "ui/aura/window.h"
13 #include "ui/base/hit_test.h" 14 #include "ui/base/hit_test.h"
14 #include "ui/compositor/clip_transform_recorder.h" 15 #include "ui/compositor/clip_transform_recorder.h"
15 #include "ui/compositor/paint_recorder.h" 16 #include "ui/compositor/paint_recorder.h"
16 #include "ui/gfx/canvas.h" 17 #include "ui/gfx/canvas.h"
17 #include "ui/native_theme/native_theme_aura.h" 18 #include "ui/native_theme/native_theme_aura.h"
18 #include "ui/views/mus/window_manager_client_area_insets.h" 19 #include "ui/views/mus/window_manager_client_area_insets.h"
19 #include "ui/views/mus/window_tree_host_mus.h" 20 #include "ui/views/mus/window_tree_host_mus.h"
20 #include "ui/views/widget/widget_delegate.h" 21 #include "ui/views/widget/widget_delegate.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 const gfx::Rect& requested_bounds) override { 63 const gfx::Rect& requested_bounds) override {
63 SetChildBoundsDirect(child, requested_bounds); 64 SetChildBoundsDirect(child, requested_bounds);
64 } 65 }
65 66
66 aura::Window* outer_; 67 aura::Window* outer_;
67 aura::Window* inner_; 68 aura::Window* inner_;
68 69
69 DISALLOW_COPY_AND_ASSIGN(ContentWindowLayoutManager); 70 DISALLOW_COPY_AND_ASSIGN(ContentWindowLayoutManager);
70 }; 71 };
71 72
73 class NativeWidgetMusWindowTreeClient : public aura::client::WindowTreeClient {
74 public:
75 explicit NativeWidgetMusWindowTreeClient(aura::Window* root_window)
76 : root_window_(root_window) {
77 aura::client::SetWindowTreeClient(root_window_, this);
78 }
79 ~NativeWidgetMusWindowTreeClient() override {
80 aura::client::SetWindowTreeClient(root_window_, nullptr);
81 }
82
83 // Overridden from client::WindowTreeClient:
84 aura::Window* GetDefaultParent(aura::Window* context,
85 aura::Window* window,
86 const gfx::Rect& bounds) override {
87 return root_window_;
88 }
89
90 private:
91 aura::Window* root_window_;
92
93 DISALLOW_COPY_AND_ASSIGN(NativeWidgetMusWindowTreeClient);
94 };
95
72 // As the window manager renderers the non-client decorations this class does 96 // As the window manager renderers the non-client decorations this class does
73 // very little but honor the client area insets from the window manager. 97 // very little but honor the client area insets from the window manager.
74 class ClientSideNonClientFrameView : public NonClientFrameView { 98 class ClientSideNonClientFrameView : public NonClientFrameView {
75 public: 99 public:
76 explicit ClientSideNonClientFrameView(views::Widget* widget) 100 explicit ClientSideNonClientFrameView(views::Widget* widget)
77 : widget_(widget) {} 101 : widget_(widget) {}
78 ~ClientSideNonClientFrameView() override {} 102 ~ClientSideNonClientFrameView() override {}
79 103
80 private: 104 private:
81 // Returns the default values of client area insets from the window manager. 105 // Returns the default values of client area insets from the window manager.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 window_tree_host_.reset( 208 window_tree_host_.reset(
185 new WindowTreeHostMus(shell_, window_, surface_type_)); 209 new WindowTreeHostMus(shell_, window_, surface_type_));
186 window_tree_host_->InitHost(); 210 window_tree_host_->InitHost();
187 211
188 focus_client_.reset(new wm::FocusController(new FocusRulesImpl)); 212 focus_client_.reset(new wm::FocusController(new FocusRulesImpl));
189 213
190 aura::client::SetFocusClient(window_tree_host_->window(), 214 aura::client::SetFocusClient(window_tree_host_->window(),
191 focus_client_.get()); 215 focus_client_.get());
192 aura::client::SetActivationClient(window_tree_host_->window(), 216 aura::client::SetActivationClient(window_tree_host_->window(),
193 focus_client_.get()); 217 focus_client_.get());
218 window_tree_client_.reset(
219 new NativeWidgetMusWindowTreeClient(window_tree_host_->window()));
194 window_tree_host_->window()->AddPreTargetHandler(focus_client_.get()); 220 window_tree_host_->window()->AddPreTargetHandler(focus_client_.get());
195 window_tree_host_->window()->SetLayoutManager( 221 window_tree_host_->window()->SetLayoutManager(
196 new ContentWindowLayoutManager(window_tree_host_->window(), content_)); 222 new ContentWindowLayoutManager(window_tree_host_->window(), content_));
197 capture_client_.reset( 223 capture_client_.reset(
198 new aura::client::DefaultCaptureClient(window_tree_host_->window())); 224 new aura::client::DefaultCaptureClient(window_tree_host_->window()));
199 225
200 content_->SetType(ui::wm::WINDOW_TYPE_NORMAL); 226 content_->SetType(ui::wm::WINDOW_TYPE_NORMAL);
201 content_->Init(ui::LAYER_TEXTURED); 227 content_->Init(ui::LAYER_TEXTURED);
228 content_->Show();
202 content_->SetTransparent(true); 229 content_->SetTransparent(true);
203 content_->SetFillsBoundsCompletely(false); 230 content_->SetFillsBoundsCompletely(false);
204 231
205 window_tree_host_->window()->AddChild(content_); 232 window_tree_host_->window()->AddChild(content_);
206 // TODO(beng): much else, see [Desktop]NativeWidgetAura. 233 // TODO(beng): much else, see [Desktop]NativeWidgetAura.
207 } 234 }
208 235
209 bool NativeWidgetMus::ShouldUseNativeFrame() const { 236 bool NativeWidgetMus::ShouldUseNativeFrame() const {
210 // NOTIMPLEMENTED(); 237 // NOTIMPLEMENTED();
211 return false; 238 return false;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 const gfx::Rect& restored_bounds) { 403 const gfx::Rect& restored_bounds) {
377 // NOTIMPLEMENTED(); 404 // NOTIMPLEMENTED();
378 } 405 }
379 406
380 void NativeWidgetMus::ShowWithWindowState(ui::WindowShowState state) { 407 void NativeWidgetMus::ShowWithWindowState(ui::WindowShowState state) {
381 window_tree_host_->Show(); 408 window_tree_host_->Show();
382 GetNativeWindow()->Show(); 409 GetNativeWindow()->Show();
383 } 410 }
384 411
385 bool NativeWidgetMus::IsVisible() const { 412 bool NativeWidgetMus::IsVisible() const {
386 // NOTIMPLEMENTED(); 413 // TODO(beng): this should probably be wired thru PlatformWindow.
387 return true; 414 return window_tree_host_->mus_window()->visible();
388 } 415 }
389 416
390 void NativeWidgetMus::Activate() { 417 void NativeWidgetMus::Activate() {
391 // NOTIMPLEMENTED(); 418 // NOTIMPLEMENTED();
392 } 419 }
393 420
394 void NativeWidgetMus::Deactivate() { 421 void NativeWidgetMus::Deactivate() {
395 // NOTIMPLEMENTED(); 422 // NOTIMPLEMENTED();
396 } 423 }
397 424
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 return; 717 return;
691 718
692 const gfx::Rect client_area_rect(non_client_view->client_view()->bounds()); 719 const gfx::Rect client_area_rect(non_client_view->client_view()->bounds());
693 window_->SetClientArea(gfx::Insets( 720 window_->SetClientArea(gfx::Insets(
694 client_area_rect.y(), client_area_rect.x(), 721 client_area_rect.y(), client_area_rect.x(),
695 non_client_view->bounds().height() - client_area_rect.bottom(), 722 non_client_view->bounds().height() - client_area_rect.bottom(),
696 non_client_view->bounds().width() - client_area_rect.right())); 723 non_client_view->bounds().width() - client_area_rect.right()));
697 } 724 }
698 725
699 } // namespace views 726 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/mus/native_widget_mus.h ('k') | ui/views/mus/window_manager_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698