| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/cocoa/autocomplete_text_field_editor.h" | 5 #import "chrome/browser/cocoa/autocomplete_text_field_editor.h" |
| 6 | 6 |
| 7 #include "app/l10n_util_mac.h" | 7 #include "app/l10n_util_mac.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "grit/generated_resources.h" | 9 #include "grit/generated_resources.h" |
| 10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
| 11 #include "chrome/app/chrome_dll_resource.h" // IDC_* | 11 #include "chrome/app/chrome_dll_resource.h" // IDC_* |
| 12 #include "chrome/browser/browser_list.h" | 12 #include "chrome/browser/browser_list.h" |
| 13 #import "chrome/browser/cocoa/autocomplete_text_field.h" | 13 #import "chrome/browser/cocoa/autocomplete_text_field.h" |
| 14 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h" | 14 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h" |
| 15 #import "chrome/browser/cocoa/browser_window_controller.h" | 15 #import "chrome/browser/cocoa/browser_window_controller.h" |
| 16 #import "chrome/browser/cocoa/extensions/extension_action_context_menu.h" | |
| 17 #import "chrome/browser/cocoa/toolbar_controller.h" | 16 #import "chrome/browser/cocoa/toolbar_controller.h" |
| 18 #include "chrome/browser/extensions/extensions_service.h" | 17 #include "chrome/browser/extensions/extensions_service.h" |
| 19 #include "chrome/common/extensions/extension_action.h" | 18 #include "chrome/common/extensions/extension_action.h" |
| 20 #include "chrome/browser/profile.h" | 19 #include "chrome/browser/profile.h" |
| 21 | 20 |
| 22 class Extension; | 21 class Extension; |
| 23 | 22 |
| 24 @interface AutocompleteTextFieldEditor(Private) | 23 @interface AutocompleteTextFieldEditor(Private) |
| 25 // Returns the default context menu to be displayed on a right mouse click. | 24 // Returns the default context menu to be displayed on a right mouse click. |
| 26 - (NSMenu*)defaultMenuForEvent:(NSEvent*)event; | 25 - (NSMenu*)defaultMenuForEvent:(NSEvent*)event; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // No ruler bar, so don't update any of that state, either. | 88 // No ruler bar, so don't update any of that state, either. |
| 90 - (void)updateRuler {} | 89 - (void)updateRuler {} |
| 91 | 90 |
| 92 - (NSMenu*)menuForEvent:(NSEvent*)event { | 91 - (NSMenu*)menuForEvent:(NSEvent*)event { |
| 93 NSPoint location = [self convertPoint:[event locationInWindow] fromView:nil]; | 92 NSPoint location = [self convertPoint:[event locationInWindow] fromView:nil]; |
| 94 | 93 |
| 95 // Was the right click within a Page Action? Show a different menu if so. | 94 // Was the right click within a Page Action? Show a different menu if so. |
| 96 AutocompleteTextField* field = (AutocompleteTextField*)[self delegate]; | 95 AutocompleteTextField* field = (AutocompleteTextField*)[self delegate]; |
| 97 NSRect bounds([field bounds]); | 96 NSRect bounds([field bounds]); |
| 98 AutocompleteTextFieldCell* cell = [field autocompleteTextFieldCell]; | 97 AutocompleteTextFieldCell* cell = [field autocompleteTextFieldCell]; |
| 99 const size_t pageActionCount = [cell pageActionCount]; | |
| 100 BOOL flipped = [self isFlipped]; | 98 BOOL flipped = [self isFlipped]; |
| 101 if (!profile_) | |
| 102 return [self defaultMenuForEvent:event]; | |
| 103 | 99 |
| 104 ExtensionsService* service = profile_->GetExtensionsService(); | 100 for (AutocompleteTextFieldIcon* icon in [cell layedOutIcons:bounds]) { |
| 105 if (!service) | 101 if (NSMouseInRect(location, [icon rect], flipped)) { |
| 106 return [self defaultMenuForEvent:event]; | 102 NSMenu* menu = [icon view]->GetMenu(); |
| 107 | 103 if (menu) |
| 108 for (size_t i = 0; i < pageActionCount; ++i) { | 104 return menu; |
| 109 NSRect pageActionFrame = [cell pageActionFrameForIndex:i inFrame:bounds]; | |
| 110 if (NSMouseInRect(location, pageActionFrame, flipped)) { | |
| 111 Extension* extension = service->GetExtensionById( | |
| 112 [cell pageActionForIndex:i]->extension_id(), false); | |
| 113 DCHECK(extension); | |
| 114 if (!extension) | |
| 115 break; | |
| 116 return [[[ExtensionActionContextMenu alloc] | |
| 117 initWithExtension:extension profile:profile_] autorelease]; | |
| 118 } | 105 } |
| 119 } | 106 } |
| 120 | 107 |
| 121 // Otherwise, simply return the default menu for this instance. | 108 // Otherwise, simply return the default menu for this instance. |
| 122 return [self defaultMenuForEvent:event]; | 109 return [self defaultMenuForEvent:event]; |
| 123 } | 110 } |
| 124 | 111 |
| 125 - (NSMenu*)defaultMenuForEvent:(NSEvent*)event { | 112 - (NSMenu*)defaultMenuForEvent:(NSEvent*)event { |
| 126 NSMenu* menu = [[[NSMenu alloc] initWithTitle:@"TITLE"] autorelease]; | 113 NSMenu* menu = [[[NSMenu alloc] initWithTitle:@"TITLE"] autorelease]; |
| 127 [menu addItemWithTitle:l10n_util::GetNSStringWithFixup(IDS_CUT) | 114 [menu addItemWithTitle:l10n_util::GetNSStringWithFixup(IDS_CUT) |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 - (void)draggingExited:(id<NSDraggingInfo>)sender { | 209 - (void)draggingExited:(id<NSDraggingInfo>)sender { |
| 223 return [dropHandler_ draggingExited:sender]; | 210 return [dropHandler_ draggingExited:sender]; |
| 224 } | 211 } |
| 225 | 212 |
| 226 // (URLDropTarget protocol) | 213 // (URLDropTarget protocol) |
| 227 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { | 214 - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { |
| 228 return [dropHandler_ performDragOperation:sender]; | 215 return [dropHandler_ performDragOperation:sender]; |
| 229 } | 216 } |
| 230 | 217 |
| 231 @end | 218 @end |
| OLD | NEW |