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

Side by Side Diff: chrome/browser/tab_contents/tab_contents_view_mac.mm

Issue 235039: Fix conflicts between accelerator keys and HTML DOM accesskeys.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <Carbon/Carbon.h> 5 #import <Carbon/Carbon.h>
6 6
7 #include "chrome/browser/tab_contents/tab_contents_view_mac.h" 7 #include "chrome/browser/tab_contents/tab_contents_view_mac.h"
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 28 matching lines...) Expand all
39 COMPILE_ASSERT_MATCHING_ENUM(DragOperationCopy); 39 COMPILE_ASSERT_MATCHING_ENUM(DragOperationCopy);
40 COMPILE_ASSERT_MATCHING_ENUM(DragOperationLink); 40 COMPILE_ASSERT_MATCHING_ENUM(DragOperationLink);
41 COMPILE_ASSERT_MATCHING_ENUM(DragOperationGeneric); 41 COMPILE_ASSERT_MATCHING_ENUM(DragOperationGeneric);
42 COMPILE_ASSERT_MATCHING_ENUM(DragOperationPrivate); 42 COMPILE_ASSERT_MATCHING_ENUM(DragOperationPrivate);
43 COMPILE_ASSERT_MATCHING_ENUM(DragOperationMove); 43 COMPILE_ASSERT_MATCHING_ENUM(DragOperationMove);
44 COMPILE_ASSERT_MATCHING_ENUM(DragOperationDelete); 44 COMPILE_ASSERT_MATCHING_ENUM(DragOperationDelete);
45 COMPILE_ASSERT_MATCHING_ENUM(DragOperationEvery); 45 COMPILE_ASSERT_MATCHING_ENUM(DragOperationEvery);
46 46
47 @interface TabContentsViewCocoa (Private) 47 @interface TabContentsViewCocoa (Private)
48 - (id)initWithTabContentsViewMac:(TabContentsViewMac*)w; 48 - (id)initWithTabContentsViewMac:(TabContentsViewMac*)w;
49 - (void)processKeyboardEvent:(NativeWebKeyboardEvent*)event; 49 - (BOOL)processKeyboardEvent:(NativeWebKeyboardEvent*)event;
50 - (void)registerDragTypes; 50 - (void)registerDragTypes;
51 - (void)setCurrentDragOperation:(NSDragOperation)operation; 51 - (void)setCurrentDragOperation:(NSDragOperation)operation;
52 - (void)startDragWithDropData:(const WebDropData&)dropData 52 - (void)startDragWithDropData:(const WebDropData&)dropData
53 dragOperationMask:(NSDragOperation)operationMask; 53 dragOperationMask:(NSDragOperation)operationMask;
54 @end 54 @end
55 55
56 // static 56 // static
57 TabContentsView* TabContentsView::Create(TabContents* tab_contents) { 57 TabContentsView* TabContentsView::Create(TabContents* tab_contents) {
58 return new TabContentsViewMac(tab_contents); 58 return new TabContentsViewMac(tab_contents);
59 } 59 }
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // This is called when we the renderer asks us to take focus back (i.e., it has 205 // This is called when we the renderer asks us to take focus back (i.e., it has
206 // iterated past the last focusable element on the page). 206 // iterated past the last focusable element on the page).
207 void TabContentsViewMac::TakeFocus(bool reverse) { 207 void TabContentsViewMac::TakeFocus(bool reverse) {
208 if (reverse) { 208 if (reverse) {
209 [[cocoa_view_ window] selectPreviousKeyView:cocoa_view_.get()]; 209 [[cocoa_view_ window] selectPreviousKeyView:cocoa_view_.get()];
210 } else { 210 } else {
211 [[cocoa_view_ window] selectNextKeyView:cocoa_view_.get()]; 211 [[cocoa_view_ window] selectNextKeyView:cocoa_view_.get()];
212 } 212 }
213 } 213 }
214 214
215 void TabContentsViewMac::HandleKeyboardEvent( 215 bool TabContentsViewMac::HandleKeyboardEvent(
216 const NativeWebKeyboardEvent& event) { 216 const NativeWebKeyboardEvent& event) {
217 [cocoa_view_.get() processKeyboardEvent: 217 return [cocoa_view_.get() processKeyboardEvent:
218 const_cast<NativeWebKeyboardEvent*>(&event)]; 218 const_cast<NativeWebKeyboardEvent*>(&event)] == YES;
219 } 219 }
220 220
221 void TabContentsViewMac::ShowContextMenu(const ContextMenuParams& params) { 221 void TabContentsViewMac::ShowContextMenu(const ContextMenuParams& params) {
222 RenderViewContextMenuMac menu(tab_contents(), 222 RenderViewContextMenuMac menu(tab_contents(),
223 params, 223 params,
224 GetNativeView()); 224 GetNativeView());
225 menu.Init(); 225 menu.Init();
226 } 226 }
227 227
228 RenderWidgetHostView* TabContentsViewMac::CreateNewWidgetInternal( 228 RenderWidgetHostView* TabContentsViewMac::CreateNewWidgetInternal(
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 } 303 }
304 304
305 - (void)setCurrentDragOperation:(NSDragOperation)operation { 305 - (void)setCurrentDragOperation:(NSDragOperation)operation {
306 [dropTarget_ setCurrentOperation:operation]; 306 [dropTarget_ setCurrentOperation:operation];
307 } 307 }
308 308
309 - (TabContents*)tabContents { 309 - (TabContents*)tabContents {
310 return tabContentsView_->tab_contents(); 310 return tabContentsView_->tab_contents();
311 } 311 }
312 312
313 - (void)processKeyboardEvent:(NativeWebKeyboardEvent*)wkEvent { 313 - (BOOL)processKeyboardEvent:(NativeWebKeyboardEvent*)wkEvent {
314 if (wkEvent->skip_in_browser) 314 if (wkEvent->skip_in_browser)
315 return; 315 return NO;
316 316
317 NSEvent* event = wkEvent->os_event; 317 NSEvent* event = wkEvent->os_event;
318 318
319 if (!event) { 319 if (!event) {
320 // Char events are synthesized and do not contain a real event. We are not 320 // Char events are synthesized and do not contain a real event. We are not
321 // interested in them anyway. 321 // interested in them anyway.
322 DCHECK(wkEvent->type == WebKit::WebInputEvent::Char); 322 DCHECK(wkEvent->type == WebKit::WebInputEvent::Char);
323 return; 323 return NO;
324 } 324 }
325 325
326 // If this tab is no longer active, its window will be |nil|. In that case, 326 // If this tab is no longer active, its window will be |nil|. In that case,
327 // best ignore the event. 327 // best ignore the event.
328 if (![self window]) 328 if (![self window])
329 return; 329 return NO;
330 ChromeEventProcessingWindow* window = 330 ChromeEventProcessingWindow* window =
331 (ChromeEventProcessingWindow*)[self window]; 331 (ChromeEventProcessingWindow*)[self window];
332 DCHECK([window isKindOfClass:[ChromeEventProcessingWindow class]]); 332 DCHECK([window isKindOfClass:[ChromeEventProcessingWindow class]]);
333 333
334 // Do not fire shortcuts on key up. 334 // Do not fire shortcuts on key up.
335 if ([event type] == NSKeyDown) { 335 if ([event type] == NSKeyDown) {
336 if ([window handleExtraBrowserKeyboardShortcut:event]) 336 if ([window handleExtraBrowserKeyboardShortcut:event])
337 return; 337 return YES;
338 if ([window handleExtraWindowKeyboardShortcut:event]) 338 if ([window handleExtraWindowKeyboardShortcut:event])
339 return; 339 return YES;
340 } 340 }
341 341
342 // We need to re-dispatch the event, so that it is sent to the menu or other 342 // We need to re-dispatch the event, so that it is sent to the menu or other
343 // cocoa mechanisms (such as the cmd-` handler). 343 // cocoa mechanisms (such as the cmd-` handler).
344 RenderWidgetHostViewCocoa* rwhv = static_cast<RenderWidgetHostViewCocoa*>( 344 RenderWidgetHostViewCocoa* rwhv = static_cast<RenderWidgetHostViewCocoa*>(
345 tabContentsView_->GetContentNativeView()); 345 tabContentsView_->GetContentNativeView());
346 DCHECK([rwhv isKindOfClass:[RenderWidgetHostViewCocoa class]]); 346 DCHECK([rwhv isKindOfClass:[RenderWidgetHostViewCocoa class]]);
347 [rwhv setIgnoreKeyEvents:YES]; 347 [rwhv setIgnoreKeyEvents:YES];
348 [window redispatchEvent:event]; 348 BOOL eventHandled = [window redispatchEvent:event];
349 [rwhv setIgnoreKeyEvents:NO]; 349 [rwhv setIgnoreKeyEvents:NO];
350 return eventHandled;
350 } 351 }
351 352
352 - (void)mouseEvent:(NSEvent *)theEvent { 353 - (void)mouseEvent:(NSEvent *)theEvent {
353 TabContents* tabContents = [self tabContents]; 354 TabContents* tabContents = [self tabContents];
354 if (tabContents->delegate()) { 355 if (tabContents->delegate()) {
355 if ([theEvent type] == NSMouseMoved) 356 if ([theEvent type] == NSMouseMoved)
356 tabContents->delegate()->ContentsMouseEvent(tabContents, true); 357 tabContents->delegate()->ContentsMouseEvent(tabContents, true);
357 if ([theEvent type] == NSMouseExited) 358 if ([theEvent type] == NSMouseExited)
358 tabContents->delegate()->ContentsMouseEvent(tabContents, false); 359 tabContents->delegate()->ContentsMouseEvent(tabContents, false);
359 } 360 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 } 455 }
455 456
456 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { 457 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
457 return [dropTarget_ performDragOperation:sender view:self]; 458 return [dropTarget_ performDragOperation:sender view:self];
458 } 459 }
459 460
460 // Tons of stuff goes here, where we grab events going on in Cocoaland and send 461 // Tons of stuff goes here, where we grab events going on in Cocoaland and send
461 // them into the C++ system. TODO(avi): all that jazz 462 // them into the C++ system. TODO(avi): all that jazz
462 463
463 @end 464 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698