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

Side by Side Diff: chrome/browser/render_view_context_menu.cc

Issue 16510: Fixes bug 1925 (context menus for text selections in... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 11 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 #include "chrome/browser/render_view_context_menu.h" 5 #include "chrome/browser/render_view_context_menu.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/app/chrome_dll_resource.h" 8 #include "chrome/app/chrome_dll_resource.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/profile.h" 10 #include "chrome/browser/profile.h"
11 #include "chrome/browser/search_engines/template_url_model.h" 11 #include "chrome/browser/search_engines/template_url_model.h"
12 #include "chrome/browser/spellchecker.h" 12 #include "chrome/browser/spellchecker.h"
13 #include "chrome/common/l10n_util.h" 13 #include "chrome/common/l10n_util.h"
14 #include "webkit/glue/context_node_types.h" 14 #include "webkit/glue/context_node_types.h"
15 15
16 #include "generated_resources.h" 16 #include "generated_resources.h"
17 17
18 RenderViewContextMenu::RenderViewContextMenu( 18 RenderViewContextMenu::RenderViewContextMenu(
19 Menu::Delegate* delegate, 19 Menu::Delegate* delegate,
20 HWND owner, 20 HWND owner,
21 ContextNode::Type type, 21 ContextNode node,
22 const std::wstring& misspelled_word, 22 const std::wstring& misspelled_word,
23 const std::vector<std::wstring>& misspelled_word_suggestions, 23 const std::vector<std::wstring>& misspelled_word_suggestions,
24 Profile* profile) 24 Profile* profile)
25 : Menu(delegate, Menu::TOPLEFT, owner), 25 : Menu(delegate, Menu::TOPLEFT, owner),
26 misspelled_word_(misspelled_word), 26 misspelled_word_(misspelled_word),
27 misspelled_word_suggestions_(misspelled_word_suggestions), 27 misspelled_word_suggestions_(misspelled_word_suggestions),
28 profile_(profile) { 28 profile_(profile) {
29 InitMenu(type); 29 InitMenu(node);
30 } 30 }
31 31
32 RenderViewContextMenu::~RenderViewContextMenu() { 32 RenderViewContextMenu::~RenderViewContextMenu() {
33 } 33 }
34 34
35 void RenderViewContextMenu::InitMenu(ContextNode::Type type) { 35 void RenderViewContextMenu::InitMenu(ContextNode node) {
36 switch (type) { 36 if (node.type & ContextNode::PAGE)
37 case ContextNode::PAGE:
38 AppendPageItems(); 37 AppendPageItems();
39 break; 38 if (node.type & ContextNode::FRAME)
40 case ContextNode::FRAME:
41 AppendFrameItems(); 39 AppendFrameItems();
42 break; 40 if (node.type & ContextNode::LINK)
43 case ContextNode::LINK:
44 AppendLinkItems(); 41 AppendLinkItems();
45 break; 42
46 case ContextNode::IMAGE: 43 if (node.type & ContextNode::IMAGE) {
44 if (node.type & ContextNode::LINK)
45 AppendSeparator();
47 AppendImageItems(); 46 AppendImageItems();
48 break; 47 }
49 case ContextNode::IMAGE_LINK: 48
50 AppendLinkItems(); 49 if (node.type & ContextNode::EDITABLE)
51 AppendSeparator();
52 AppendImageItems();
53 break;
54 case ContextNode::SELECTION:
55 AppendSelectionItems();
56 break;
57 case ContextNode::EDITABLE:
58 AppendEditableItems(); 50 AppendEditableItems();
59 break; 51 else if (node.type & ContextNode::SELECTION ||
60 default: 52 node.type & ContextNode::LINK)
61 NOTREACHED() << "Unknown ContextNode::Type"; 53 AppendCopyItem();
62 } 54
55 if (node.type & ContextNode::SELECTION)
56 AppendSearchProvider();
63 AppendSeparator(); 57 AppendSeparator();
64 AppendDeveloperItems(); 58 AppendDeveloperItems();
65 } 59 }
66 60
67 void RenderViewContextMenu::AppendDeveloperItems() { 61 void RenderViewContextMenu::AppendDeveloperItems() {
68 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_INSPECTELEMENT); 62 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_INSPECTELEMENT);
69 } 63 }
70 64
71 void RenderViewContextMenu::AppendLinkItems() { 65 void RenderViewContextMenu::AppendLinkItems() {
72 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWTAB); 66 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWTAB);
73 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW); 67 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW);
74 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD); 68 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD);
75 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVELINKAS); 69 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVELINKAS);
76 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYLINKLOCATION); 70 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYLINKLOCATION);
77 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY);
78 } 71 }
79 72
80 void RenderViewContextMenu::AppendImageItems() { 73 void RenderViewContextMenu::AppendImageItems() {
81 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEIMAGEAS); 74 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEIMAGEAS);
82 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); 75 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGELOCATION);
83 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGE); 76 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPYIMAGE);
84 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); 77 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB);
85 } 78 }
86 79
87 void RenderViewContextMenu::AppendPageItems() { 80 void RenderViewContextMenu::AppendPageItems() {
(...skipping 14 matching lines...) Expand all
102 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWTAB); 95 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWTAB);
103 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWWINDOW); 96 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMENEWWINDOW);
104 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD); 97 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD);
105 AppendSeparator(); 98 AppendSeparator();
106 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEFRAMEAS); 99 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SAVEFRAMEAS);
107 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_PRINTFRAME); 100 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_PRINTFRAME);
108 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE); 101 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE);
109 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMEINFO); 102 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_VIEWFRAMEINFO);
110 } 103 }
111 104
112 void RenderViewContextMenu::AppendSelectionItems() { 105 void RenderViewContextMenu::AppendCopyItem() {
113 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY); 106 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_COPY);
107 }
108
109 void RenderViewContextMenu::AppendSearchProvider() {
114 DCHECK(profile_); 110 DCHECK(profile_);
115 if (profile_->GetTemplateURLModel()->GetDefaultSearchProvider() != NULL) 111 if (profile_->GetTemplateURLModel()->GetDefaultSearchProvider() != NULL)
116 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR); 112 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SEARCHWEBFOR);
117 } 113 }
118 114
119 void RenderViewContextMenu::AppendEditableItems() { 115 void RenderViewContextMenu::AppendEditableItems() {
120 // Append Dictionary spell check suggestions. 116 // Append Dictionary spell check suggestions.
121 for (size_t i = 0; i < misspelled_word_suggestions_.size() && 117 for (size_t i = 0; i < misspelled_word_suggestions_.size() &&
122 IDC_SPELLCHECK_SUGGESTION_0 + i <= IDC_SPELLCHECK_SUGGESTION_LAST; 118 IDC_SPELLCHECK_SUGGESTION_0 + i <= IDC_SPELLCHECK_SUGGESTION_LAST;
123 i ++) { 119 i ++) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 167
172 // Add 'Check the spelling of this field' item in the sub menu. 168 // Add 'Check the spelling of this field' item in the sub menu.
173 spellchecker_sub_menu_->AppendMenuItem( 169 spellchecker_sub_menu_->AppendMenuItem(
174 IDC_CHECK_SPELLING_OF_THIS_FIELD, 170 IDC_CHECK_SPELLING_OF_THIS_FIELD,
175 l10n_util::GetString(IDS_CONTENT_CONTEXT_CHECK_SPELLING_OF_THIS_FIELD), 171 l10n_util::GetString(IDS_CONTENT_CONTEXT_CHECK_SPELLING_OF_THIS_FIELD),
176 CHECKBOX); 172 CHECKBOX);
177 173
178 AppendSeparator(); 174 AppendSeparator();
179 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SELECTALL); 175 AppendDelegateMenuItem(IDS_CONTENT_CONTEXT_SELECTALL);
180 } 176 }
OLDNEW
« no previous file with comments | « chrome/browser/render_view_context_menu.h ('k') | chrome/browser/tab_contents/web_contents_view_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698