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

Side by Side Diff: ui/views/widget/native_widget_mac.mm

Issue 309483009: Remaining bits to get views_examples_with_content_exe to work on Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to master@r275900 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_mac.h" 5 #include "ui/views/widget/native_widget_mac.h"
6 6
7 #include <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 8
9 #include "base/mac/scoped_nsobject.h"
9 #include "ui/gfx/font_list.h" 10 #include "ui/gfx/font_list.h"
11 #include "ui/gfx/canvas_paint_mac.h"
12 #include "ui/gfx/mac/point_utils.h"
13 #include "ui/native_theme/native_theme.h"
14 #import "ui/views/cocoa/bridged_content_view.h"
15 #import "ui/views/cocoa/bridged_native_widget.h"
16
17 #include "ui/views/ime/input_method_base.h"
18 #include "ui/base/ime/text_input_mode.h"
10 19
11 namespace views { 20 namespace views {
12 21
22 namespace {
23
24 class StubInputMethod : public views::InputMethodBase {
25 virtual void OnFocus() OVERRIDE {}
26 virtual void OnBlur() OVERRIDE {}
27
28 virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event,
29 NativeEventResult* result) OVERRIDE {
30 return false;
31 }
32 virtual void DispatchKeyEvent(const ui::KeyEvent& event) OVERRIDE {}
33 virtual void OnCaretBoundsChanged(views::View* view) OVERRIDE {}
34 virtual void CancelComposition(views::View* view) OVERRIDE {}
35 virtual void OnInputLocaleChanged() OVERRIDE {}
36 virtual std::string GetInputLocale() OVERRIDE { return ""; }
37 virtual bool IsActive() OVERRIDE { return false; }
38 virtual bool IsCandidatePopupOpen() const OVERRIDE { return false; }
39 virtual void ShowImeIfNeeded() OVERRIDE {}
40 };
41
42 }
43
44
13 //////////////////////////////////////////////////////////////////////////////// 45 ////////////////////////////////////////////////////////////////////////////////
14 // NativeWidgetMac, public: 46 // NativeWidgetMac, public:
15 47
16 NativeWidgetMac::NativeWidgetMac(internal::NativeWidgetDelegate* delegate) 48 NativeWidgetMac::NativeWidgetMac(internal::NativeWidgetDelegate* delegate)
17 : delegate_(delegate), window_(nil) { 49 : delegate_(delegate),
50 bridge_(new BridgedNativeWidget),
51 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) {
18 } 52 }
19 53
20 NativeWidgetMac::~NativeWidgetMac() { 54 NativeWidgetMac::~NativeWidgetMac() {
21 } 55 }
22 56
23 //////////////////////////////////////////////////////////////////////////////// 57 ////////////////////////////////////////////////////////////////////////////////
24 // NativeWidgetMac, internal::NativeWidgetPrivate implementation: 58 // NativeWidgetMac, internal::NativeWidgetPrivate implementation:
25 59
26 void NativeWidgetMac::InitNativeWidget(const Widget::InitParams& params) { 60 void NativeWidgetMac::InitNativeWidget(const Widget::InitParams& params) {
61 ownership_ = params.ownership;
62
27 // TODO(tapted): Convert position into Cocoa's flipped coordinate space. 63 // TODO(tapted): Convert position into Cocoa's flipped coordinate space.
28 NSRect content_rect = 64 NSRect content_rect =
29 NSMakeRect(0, 0, params.bounds.width(), params.bounds.height()); 65 NSMakeRect(0, 0, params.bounds.width(), params.bounds.height());
30 // TODO(tapted): Determine a good initial style mask from |params|. 66 // TODO(tapted): Determine a good initial style mask from |params|.
31 NSInteger style_mask = NSTitledWindowMask | NSClosableWindowMask | 67 NSInteger style_mask = NSTitledWindowMask | NSClosableWindowMask |
32 NSMiniaturizableWindowMask | NSResizableWindowMask; 68 NSMiniaturizableWindowMask | NSResizableWindowMask;
33 window_.reset([[NSWindow alloc] initWithContentRect:content_rect 69 base::scoped_nsobject<NSWindow> window(
34 styleMask:style_mask 70 [[NSWindow alloc] initWithContentRect:content_rect
35 backing:NSBackingStoreBuffered 71 styleMask:style_mask
36 defer:NO]); 72 backing:NSBackingStoreBuffered
73 defer:NO]);
74 bridge_->Init(window);
75 delegate_->OnNativeWidgetCreated(true);
37 } 76 }
38 77
39 NonClientFrameView* NativeWidgetMac::CreateNonClientFrameView() { 78 NonClientFrameView* NativeWidgetMac::CreateNonClientFrameView() {
40 return NULL; 79 return NULL;
41 } 80 }
42 81
43 bool NativeWidgetMac::ShouldUseNativeFrame() const { 82 bool NativeWidgetMac::ShouldUseNativeFrame() const {
44 return false; 83 return false;
45 } 84 }
46 85
47 bool NativeWidgetMac::ShouldWindowContentsBeTransparent() const { 86 bool NativeWidgetMac::ShouldWindowContentsBeTransparent() const {
48 NOTIMPLEMENTED(); 87 NOTIMPLEMENTED();
49 return false; 88 return false;
50 } 89 }
51 90
52 void NativeWidgetMac::FrameTypeChanged() { 91 void NativeWidgetMac::FrameTypeChanged() {
53 NOTIMPLEMENTED(); 92 NOTIMPLEMENTED();
54 } 93 }
55 94
56 Widget* NativeWidgetMac::GetWidget() { 95 Widget* NativeWidgetMac::GetWidget() {
57 return delegate_->AsWidget(); 96 return delegate_->AsWidget();
58 } 97 }
59 98
60 const Widget* NativeWidgetMac::GetWidget() const { 99 const Widget* NativeWidgetMac::GetWidget() const {
61 return delegate_->AsWidget(); 100 return delegate_->AsWidget();
62 } 101 }
63 102
64 gfx::NativeView NativeWidgetMac::GetNativeView() const { 103 gfx::NativeView NativeWidgetMac::GetNativeView() const {
65 return [window_ contentView]; 104 return bridge_->ns_view();
66 } 105 }
67 106
68 gfx::NativeWindow NativeWidgetMac::GetNativeWindow() const { 107 gfx::NativeWindow NativeWidgetMac::GetNativeWindow() const {
69 return window_; 108 return bridge_->ns_window();
70 } 109 }
71 110
72 Widget* NativeWidgetMac::GetTopLevelWidget() { 111 Widget* NativeWidgetMac::GetTopLevelWidget() {
73 NOTIMPLEMENTED(); 112 NOTIMPLEMENTED();
74 return GetWidget(); 113 return GetWidget();
75 } 114 }
76 115
77 const ui::Compositor* NativeWidgetMac::GetCompositor() const { 116 const ui::Compositor* NativeWidgetMac::GetCompositor() const {
78 NOTIMPLEMENTED(); 117 NOTIMPLEMENTED();
79 return NULL; 118 return NULL;
80 } 119 }
81 120
82 ui::Compositor* NativeWidgetMac::GetCompositor() { 121 ui::Compositor* NativeWidgetMac::GetCompositor() {
83 NOTIMPLEMENTED(); 122 NOTIMPLEMENTED();
84 return NULL; 123 return NULL;
85 } 124 }
86 125
87 ui::Layer* NativeWidgetMac::GetLayer() { 126 ui::Layer* NativeWidgetMac::GetLayer() {
88 NOTIMPLEMENTED(); 127 NOTIMPLEMENTED();
89 return NULL; 128 return NULL;
90 } 129 }
91 130
92 void NativeWidgetMac::ReorderNativeViews() { 131 void NativeWidgetMac::ReorderNativeViews() {
93 NOTIMPLEMENTED(); 132 bridge_->SetRootView(GetWidget()->GetRootView());
94 } 133 }
95 134
96 void NativeWidgetMac::ViewRemoved(View* view) { 135 void NativeWidgetMac::ViewRemoved(View* view) {
97 NOTIMPLEMENTED(); 136 NOTIMPLEMENTED();
98 } 137 }
99 138
100 void NativeWidgetMac::SetNativeWindowProperty(const char* name, void* value) { 139 void NativeWidgetMac::SetNativeWindowProperty(const char* name, void* value) {
101 NOTIMPLEMENTED(); 140 NOTIMPLEMENTED();
102 } 141 }
103 142
(...skipping 10 matching lines...) Expand all
114 void NativeWidgetMac::SetCapture() { 153 void NativeWidgetMac::SetCapture() {
115 NOTIMPLEMENTED(); 154 NOTIMPLEMENTED();
116 } 155 }
117 156
118 void NativeWidgetMac::ReleaseCapture() { 157 void NativeWidgetMac::ReleaseCapture() {
119 NOTIMPLEMENTED(); 158 NOTIMPLEMENTED();
120 } 159 }
121 160
122 bool NativeWidgetMac::HasCapture() const { 161 bool NativeWidgetMac::HasCapture() const {
123 NOTIMPLEMENTED(); 162 NOTIMPLEMENTED();
124 return false; 163 return true;
125 } 164 }
126 165
127 InputMethod* NativeWidgetMac::CreateInputMethod() { 166 InputMethod* NativeWidgetMac::CreateInputMethod() {
167 return new StubInputMethod(); // FIXME
128 NOTIMPLEMENTED(); 168 NOTIMPLEMENTED();
129 return NULL; 169 return NULL;
130 } 170 }
131 171
132 InputMethodDelegate* NativeWidgetMac::GetInputMethodDelegate() { 172 InputMethodDelegate* NativeWidgetMac::GetInputMethodDelegate() {
133 NOTIMPLEMENTED(); 173 NOTIMPLEMENTED();
134 return NULL; 174 return NULL;
135 } 175 }
136 176
137 ui::InputMethod* NativeWidgetMac::GetHostInputMethod() { 177 ui::InputMethod* NativeWidgetMac::GetHostInputMethod() {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 NOTIMPLEMENTED(); 211 NOTIMPLEMENTED();
172 return gfx::Rect(); 212 return gfx::Rect();
173 } 213 }
174 214
175 gfx::Rect NativeWidgetMac::GetRestoredBounds() const { 215 gfx::Rect NativeWidgetMac::GetRestoredBounds() const {
176 NOTIMPLEMENTED(); 216 NOTIMPLEMENTED();
177 return gfx::Rect(); 217 return gfx::Rect();
178 } 218 }
179 219
180 void NativeWidgetMac::SetBounds(const gfx::Rect& bounds) { 220 void NativeWidgetMac::SetBounds(const gfx::Rect& bounds) {
181 NOTIMPLEMENTED(); 221 NSRect frame_rect = [bridge_->ns_window()
222 frameRectForContentRect:gfx::ScreenRectToNSRect(bounds)];
223 [bridge_->ns_window() setFrame:frame_rect display:YES animate:NO];
182 } 224 }
183 225
184 void NativeWidgetMac::SetSize(const gfx::Size& size) { 226 void NativeWidgetMac::SetSize(const gfx::Size& size) {
185 [window_ setContentSize:NSMakeSize(size.width(), size.height())]; 227 [bridge_->ns_window() setContentSize:NSMakeSize(size.width(), size.height())];
186 } 228 }
187 229
188 void NativeWidgetMac::StackAbove(gfx::NativeView native_view) { 230 void NativeWidgetMac::StackAbove(gfx::NativeView native_view) {
189 NOTIMPLEMENTED(); 231 NOTIMPLEMENTED();
190 } 232 }
191 233
192 void NativeWidgetMac::StackAtTop() { 234 void NativeWidgetMac::StackAtTop() {
193 NOTIMPLEMENTED(); 235 NOTIMPLEMENTED();
194 } 236 }
195 237
(...skipping 21 matching lines...) Expand all
217 NOTIMPLEMENTED(); 259 NOTIMPLEMENTED();
218 } 260 }
219 261
220 void NativeWidgetMac::ShowMaximizedWithBounds( 262 void NativeWidgetMac::ShowMaximizedWithBounds(
221 const gfx::Rect& restored_bounds) { 263 const gfx::Rect& restored_bounds) {
222 NOTIMPLEMENTED(); 264 NOTIMPLEMENTED();
223 } 265 }
224 266
225 void NativeWidgetMac::ShowWithWindowState(ui::WindowShowState state) { 267 void NativeWidgetMac::ShowWithWindowState(ui::WindowShowState state) {
226 NOTIMPLEMENTED(); 268 NOTIMPLEMENTED();
269 Activate();
227 } 270 }
228 271
229 bool NativeWidgetMac::IsVisible() const { 272 bool NativeWidgetMac::IsVisible() const {
230 NOTIMPLEMENTED(); 273 NOTIMPLEMENTED();
231 return true; 274 return true;
232 } 275 }
233 276
234 void NativeWidgetMac::Activate() { 277 void NativeWidgetMac::Activate() {
235 NOTIMPLEMENTED(); 278 [bridge_->ns_window() makeKeyAndOrderFront:nil];
279 [NSApp activateIgnoringOtherApps:YES];
236 } 280 }
237 281
238 void NativeWidgetMac::Deactivate() { 282 void NativeWidgetMac::Deactivate() {
239 NOTIMPLEMENTED(); 283 NOTIMPLEMENTED();
240 } 284 }
241 285
242 bool NativeWidgetMac::IsActive() const { 286 bool NativeWidgetMac::IsActive() const {
243 NOTIMPLEMENTED(); 287 NOTIMPLEMENTED();
244 return true; 288 return true;
245 } 289 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 346
303 void NativeWidgetMac::RunShellDrag(View* view, 347 void NativeWidgetMac::RunShellDrag(View* view,
304 const ui::OSExchangeData& data, 348 const ui::OSExchangeData& data,
305 const gfx::Point& location, 349 const gfx::Point& location,
306 int operation, 350 int operation,
307 ui::DragDropTypes::DragEventSource source) { 351 ui::DragDropTypes::DragEventSource source) {
308 NOTIMPLEMENTED(); 352 NOTIMPLEMENTED();
309 } 353 }
310 354
311 void NativeWidgetMac::SchedulePaintInRect(const gfx::Rect& rect) { 355 void NativeWidgetMac::SchedulePaintInRect(const gfx::Rect& rect) {
312 NOTIMPLEMENTED(); 356 [bridge_->ns_view() setNeedsDisplay:YES];
313 } 357 }
314 358
315 void NativeWidgetMac::SetCursor(gfx::NativeCursor cursor) { 359 void NativeWidgetMac::SetCursor(gfx::NativeCursor cursor) {
316 NOTIMPLEMENTED(); 360 NOTIMPLEMENTED();
317 } 361 }
318 362
319 bool NativeWidgetMac::IsMouseEventsEnabled() const { 363 bool NativeWidgetMac::IsMouseEventsEnabled() const {
320 NOTIMPLEMENTED(); 364 NOTIMPLEMENTED();
321 return true; 365 return true;
322 } 366 }
(...skipping 17 matching lines...) Expand all
340 384
341 void NativeWidgetMac::EndMoveLoop() { 385 void NativeWidgetMac::EndMoveLoop() {
342 NOTIMPLEMENTED(); 386 NOTIMPLEMENTED();
343 } 387 }
344 388
345 void NativeWidgetMac::SetVisibilityChangedAnimationsEnabled(bool value) { 389 void NativeWidgetMac::SetVisibilityChangedAnimationsEnabled(bool value) {
346 NOTIMPLEMENTED(); 390 NOTIMPLEMENTED();
347 } 391 }
348 392
349 ui::NativeTheme* NativeWidgetMac::GetNativeTheme() const { 393 ui::NativeTheme* NativeWidgetMac::GetNativeTheme() const {
350 NOTIMPLEMENTED(); 394 return ui::NativeTheme::instance();
351 return NULL;
352 } 395 }
353 396
354 void NativeWidgetMac::OnRootViewLayout() const { 397 void NativeWidgetMac::OnRootViewLayout() const {
355 NOTIMPLEMENTED(); 398 NOTIMPLEMENTED();
356 } 399 }
357 400
358 void NativeWidgetMac::RepostNativeEvent(gfx::NativeEvent native_event) { 401 void NativeWidgetMac::RepostNativeEvent(gfx::NativeEvent native_event) {
359 NOTIMPLEMENTED(); 402 NOTIMPLEMENTED();
360 } 403 }
361 404
362 //////////////////////////////////////////////////////////////////////////////// 405 ////////////////////////////////////////////////////////////////////////////////
363 // Widget, public: 406 // Widget, public:
364 407
365 bool Widget::ConvertRect(const Widget* source, 408 bool Widget::ConvertRect(const Widget* source,
366 const Widget* target, 409 const Widget* target,
367 gfx::Rect* rect) { 410 gfx::Rect* rect) {
368 return false; 411 return false;
369 } 412 }
370 413
371 namespace internal { 414 namespace internal {
372 415
373 //////////////////////////////////////////////////////////////////////////////// 416 ////////////////////////////////////////////////////////////////////////////////
374 // internal::NativeWidgetPrivate, public: 417 // internal::NativeWidgetPrivate, public:
375 418
376 // static 419 // static
377 NativeWidgetPrivate* NativeWidgetPrivate::CreateNativeWidget( 420 NativeWidgetPrivate* NativeWidgetPrivate::CreateNativeWidget(
378 internal::NativeWidgetDelegate* delegate) { 421 internal::NativeWidgetDelegate* delegate) {
379 NOTIMPLEMENTED(); 422 // Called e.g. via CreateBubbleWidget().
380 return NULL; 423 return new NativeWidgetMac(delegate);
381 } 424 }
382 425
383 // static 426 // static
384 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeView( 427 NativeWidgetPrivate* NativeWidgetPrivate::GetNativeWidgetForNativeView(
385 gfx::NativeView native_view) { 428 gfx::NativeView native_view) {
386 NOTIMPLEMENTED(); 429 NOTIMPLEMENTED();
387 return NULL; 430 return NULL;
388 } 431 }
389 432
390 // static 433 // static
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 } 475 }
433 476
434 // static 477 // static
435 gfx::FontList NativeWidgetPrivate::GetWindowTitleFontList() { 478 gfx::FontList NativeWidgetPrivate::GetWindowTitleFontList() {
436 NOTIMPLEMENTED(); 479 NOTIMPLEMENTED();
437 return gfx::FontList(); 480 return gfx::FontList();
438 } 481 }
439 482
440 } // namespace internal 483 } // namespace internal
441 } // namespace views 484 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698