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

Side by Side Diff: ui/views/cocoa/bridged_content_view.mm

Issue 322893005: MacViews: Add WidgetEventGenerator to abstract platform-specific event generation for tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: -> event_generator_delegate_mac.mm, comment fixes Created 6 years, 5 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 #import "ui/views/cocoa/bridged_content_view.h" 5 #import "ui/views/cocoa/bridged_content_view.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
9 #include "grit/ui_strings.h" 9 #include "grit/ui_strings.h"
10 #include "ui/base/ime/text_input_client.h" 10 #include "ui/base/ime/text_input_client.h"
11 #include "ui/gfx/canvas_paint_mac.h" 11 #include "ui/gfx/canvas_paint_mac.h"
12 #include "ui/gfx/geometry/rect.h" 12 #include "ui/gfx/geometry/rect.h"
13 #include "ui/views/view.h" 13 #include "ui/views/view.h"
14 #include "ui/views/widget/widget.h"
14 15
15 @interface BridgedContentView () 16 @interface BridgedContentView ()
16 17
18 // Translates the location of |theEvent| to toolkit-views coordinates and passes
19 // the event to NativeWidgetMac for handling.
20 - (void)handleMouseEvent:(NSEvent*)theEvent;
21
17 // Execute a command on the currently focused TextInputClient. 22 // Execute a command on the currently focused TextInputClient.
18 // |commandId| should be a resource ID from ui_strings.grd. 23 // |commandId| should be a resource ID from ui_strings.grd.
19 - (void)doCommandByID:(int)commandId; 24 - (void)doCommandByID:(int)commandId;
20 25
21 @end 26 @end
22 27
23 @implementation BridgedContentView 28 @implementation BridgedContentView
24 29
25 @synthesize hostedView = hostedView_; 30 @synthesize hostedView = hostedView_;
26 @synthesize textInputClient = textInputClient_; 31 @synthesize textInputClient = textInputClient_;
(...skipping 10 matching lines...) Expand all
37 42
38 return self; 43 return self;
39 } 44 }
40 45
41 - (void)clearView { 46 - (void)clearView {
42 hostedView_ = NULL; 47 hostedView_ = NULL;
43 } 48 }
44 49
45 // BridgedContentView private implementation. 50 // BridgedContentView private implementation.
46 51
52 - (void)handleMouseEvent:(NSEvent*)theEvent {
53 if (!hostedView_)
54 return;
55
56 ui::MouseEvent event(theEvent);
57 hostedView_->GetWidget()->OnMouseEvent(&event);
58 }
59
47 - (void)doCommandByID:(int)commandId { 60 - (void)doCommandByID:(int)commandId {
48 if (textInputClient_ && textInputClient_->IsEditingCommandEnabled(commandId)) 61 if (textInputClient_ && textInputClient_->IsEditingCommandEnabled(commandId))
49 textInputClient_->ExecuteEditingCommand(commandId); 62 textInputClient_->ExecuteEditingCommand(commandId);
50 } 63 }
51 64
52 // NSView implementation. 65 // NSView implementation.
53 66
67 - (BOOL)acceptsFirstResponder {
68 return YES;
69 }
70
54 - (void)setFrameSize:(NSSize)newSize { 71 - (void)setFrameSize:(NSSize)newSize {
55 [super setFrameSize:newSize]; 72 [super setFrameSize:newSize];
56 if (!hostedView_) 73 if (!hostedView_)
57 return; 74 return;
58 75
59 hostedView_->SetSize(gfx::Size(newSize.width, newSize.height)); 76 hostedView_->SetSize(gfx::Size(newSize.width, newSize.height));
60 } 77 }
61 78
62 - (void)drawRect:(NSRect)dirtyRect { 79 - (void)drawRect:(NSRect)dirtyRect {
63 if (!hostedView_) 80 if (!hostedView_)
64 return; 81 return;
65 82
66 gfx::CanvasSkiaPaint canvas(dirtyRect, false /* opaque */); 83 gfx::CanvasSkiaPaint canvas(dirtyRect, false /* opaque */);
67 hostedView_->Paint(&canvas, views::CullSet()); 84 hostedView_->Paint(&canvas, views::CullSet());
68 } 85 }
69 86
87 // NSResponder implementation.
88
70 - (void)keyDown:(NSEvent*)theEvent { 89 - (void)keyDown:(NSEvent*)theEvent {
71 if (textInputClient_) 90 if (textInputClient_)
72 [self interpretKeyEvents:@[ theEvent ]]; 91 [self interpretKeyEvents:@[ theEvent ]];
73 else 92 else
74 [super keyDown:theEvent]; 93 [super keyDown:theEvent];
75 } 94 }
76 95
96 - (void)mouseDown:(NSEvent*)theEvent {
97 [self handleMouseEvent:theEvent];
98 }
99
100 - (void)rightMouseDown:(NSEvent*)theEvent {
101 [self handleMouseEvent:theEvent];
102 }
103
104 - (void)otherMouseDown:(NSEvent*)theEvent {
105 [self handleMouseEvent:theEvent];
106 }
107
108 - (void)mouseUp:(NSEvent*)theEvent {
109 [self handleMouseEvent:theEvent];
110 }
111
112 - (void)rightMouseUp:(NSEvent*)theEvent {
113 [self handleMouseEvent:theEvent];
114 }
115
116 - (void)otherMouseUp:(NSEvent*)theEvent {
117 [self handleMouseEvent:theEvent];
118 }
119
120 - (void)mouseDragged:(NSEvent*)theEvent {
121 [self handleMouseEvent:theEvent];
122 }
123
124 - (void)rightMouseDragged:(NSEvent*)theEvent {
125 [self handleMouseEvent:theEvent];
126 }
127
128 - (void)otherMouseDragged:(NSEvent*)theEvent {
129 [self handleMouseEvent:theEvent];
130 }
131
132 - (void)mouseMoved:(NSEvent*)theEvent {
133 // Note: mouseEntered: and mouseExited: are not handled separately.
134 // |hostedView_| is responsible for converting the move events into entered
135 // and exited events for the view heirarchy.
136 // TODO(tapted): Install/uninstall tracking areas when required so that the
137 // NSView will receive these events outside of tests.
138 [self handleMouseEvent:theEvent];
139 }
140
141 - (void)scrollWheel:(NSEvent*)theEvent {
142 [self handleMouseEvent:theEvent];
143 }
144
77 - (void)deleteBackward:(id)sender { 145 - (void)deleteBackward:(id)sender {
78 [self doCommandByID:IDS_DELETE_BACKWARD]; 146 [self doCommandByID:IDS_DELETE_BACKWARD];
79 } 147 }
80 148
81 - (void)deleteForward:(id)sender { 149 - (void)deleteForward:(id)sender {
82 [self doCommandByID:IDS_DELETE_FORWARD]; 150 [self doCommandByID:IDS_DELETE_FORWARD];
83 } 151 }
84 152
85 - (void)moveLeft:(id)sender { 153 - (void)moveLeft:(id)sender {
86 [self doCommandByID:IDS_MOVE_LEFT]; 154 [self doCommandByID:IDS_MOVE_LEFT];
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 - (void)unmarkText { 243 - (void)unmarkText {
176 if (textInputClient_) 244 if (textInputClient_)
177 textInputClient_->ConfirmCompositionText(); 245 textInputClient_->ConfirmCompositionText();
178 } 246 }
179 247
180 - (NSArray*)validAttributesForMarkedText { 248 - (NSArray*)validAttributesForMarkedText {
181 return @[]; 249 return @[];
182 } 250 }
183 251
184 @end 252 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698