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

Side by Side Diff: chrome/browser/ui/views/toolbar/browser_action_view.cc

Issue 324393002: Extension Toolbar redesign, part 1 (overflow) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Missing gypi change 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/ui/views/toolbar/browser_action_view.h" 5 #include "chrome/browser/ui/views/toolbar/browser_action_view.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/chrome_notification_types.h" 8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/extensions/api/commands/command_service.h" 9 #include "chrome/browser/extensions/api/commands/command_service.h"
10 #include "chrome/browser/extensions/extension_action.h" 10 #include "chrome/browser/extensions/extension_action.h"
11 #include "chrome/browser/extensions/extension_action_manager.h" 11 #include "chrome/browser/extensions/extension_action_manager.h"
12 #include "chrome/browser/extensions/extension_context_menu_model.h" 12 #include "chrome/browser/extensions/extension_context_menu_model.h"
13 #include "chrome/browser/extensions/extension_service.h" 13 #include "chrome/browser/extensions/extension_service.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/themes/theme_service.h" 15 #include "chrome/browser/themes/theme_service.h"
16 #include "chrome/browser/themes/theme_service_factory.h" 16 #include "chrome/browser/themes/theme_service_factory.h"
17 #include "chrome/browser/ui/browser.h" 17 #include "chrome/browser/ui/browser.h"
18 #include "chrome/browser/ui/view_ids.h" 18 #include "chrome/browser/ui/view_ids.h"
19 #include "chrome/browser/ui/views/frame/browser_view.h"
19 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" 20 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
20 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 21 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
21 #include "extensions/common/extension.h" 22 #include "extensions/common/extension.h"
22 #include "extensions/common/manifest_constants.h" 23 #include "extensions/common/manifest_constants.h"
23 #include "grit/generated_resources.h" 24 #include "grit/generated_resources.h"
24 #include "grit/theme_resources.h" 25 #include "grit/theme_resources.h"
25 #include "ui/accessibility/ax_view_state.h" 26 #include "ui/accessibility/ax_view_state.h"
26 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
27 #include "ui/base/resource/resource_bundle.h" 28 #include "ui/base/resource/resource_bundle.h"
28 #include "ui/events/event.h" 29 #include "ui/events/event.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 65
65 BrowserActionView::~BrowserActionView() { 66 BrowserActionView::~BrowserActionView() {
66 button_->Destroy(); 67 button_->Destroy();
67 } 68 }
68 69
69 gfx::ImageSkia BrowserActionView::GetIconWithBadge() { 70 gfx::ImageSkia BrowserActionView::GetIconWithBadge() {
70 return button_->GetIconWithBadge(); 71 return button_->GetIconWithBadge();
71 } 72 }
72 73
73 void BrowserActionView::Layout() { 74 void BrowserActionView::Layout() {
74 button_->SetBounds(0, y(), width(), height()); 75 button_->SetBounds(0, 0, width(), height());
75 } 76 }
76 77
77 void BrowserActionView::GetAccessibleState(ui::AXViewState* state) { 78 void BrowserActionView::GetAccessibleState(ui::AXViewState* state) {
78 state->name = l10n_util::GetStringUTF16( 79 state->name = l10n_util::GetStringUTF16(
79 IDS_ACCNAME_EXTENSIONS_BROWSER_ACTION); 80 IDS_ACCNAME_EXTENSIONS_BROWSER_ACTION);
80 state->role = ui::AX_ROLE_GROUP; 81 state->role = ui::AX_ROLE_GROUP;
81 } 82 }
82 83
83 gfx::Size BrowserActionView::GetPreferredSize() const { 84 gfx::Size BrowserActionView::GetPreferredSize() const {
84 return gfx::Size(BrowserActionsContainer::IconWidth(false), 85 return gfx::Size(BrowserActionsContainer::IconWidth(false),
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 void BrowserActionButton::ShowContextMenuForView( 178 void BrowserActionButton::ShowContextMenuForView(
178 View* source, 179 View* source,
179 const gfx::Point& point, 180 const gfx::Point& point,
180 ui::MenuSourceType source_type) { 181 ui::MenuSourceType source_type) {
181 if (!extension()->ShowConfigureContextMenus()) 182 if (!extension()->ShowConfigureContextMenus())
182 return; 183 return;
183 184
184 SetButtonPushed(); 185 SetButtonPushed();
185 186
186 // Reconstructs the menu every time because the menu's contents are dynamic. 187 // Reconstructs the menu every time because the menu's contents are dynamic.
187 scoped_refptr<ExtensionContextMenuModel> context_menu_contents_( 188 scoped_refptr<ExtensionContextMenuModel> context_menu_contents(
188 new ExtensionContextMenuModel(extension(), browser_, delegate_)); 189 new ExtensionContextMenuModel(extension(), browser_, delegate_));
189 menu_runner_.reset(new views::MenuRunner(context_menu_contents_.get())); 190 menu_runner_.reset(new views::MenuRunner(context_menu_contents.get()));
190 191
191 context_menu_ = menu_runner_->GetMenu(); 192 context_menu_ = menu_runner_->GetMenu();
192 gfx::Point screen_loc; 193 gfx::Point screen_loc;
193 views::View::ConvertPointToScreen(this, &screen_loc); 194 views::View::ConvertPointToScreen(this, &screen_loc);
194 if (menu_runner_->RunMenuAt( 195
195 GetWidget(), 196 views::Widget* parent = NULL;
196 NULL, 197 int run_types = views::MenuRunner::HAS_MNEMONICS |
197 gfx::Rect(screen_loc, size()), 198 views::MenuRunner::CONTEXT_MENU;
198 views::MENU_ANCHOR_TOPLEFT, 199 if (delegate_->ShownInsideMenu()) {
199 source_type, 200 run_types |= views::MenuRunner::IS_NESTED;
200 views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == 201 // RunMenuAt expects a nested menu to be parented by the same widget as the
202 // already visible menu, in this case the Chrome menu.
203 parent = BrowserView::GetBrowserViewForBrowser(browser_)->toolbar()
204 ->app_menu()
205 ->GetWidget();
206 } else {
207 parent = GetWidget();
208 }
209
210 if (menu_runner_->RunMenuAt(parent,
211 NULL,
212 gfx::Rect(screen_loc, size()),
213 views::MENU_ANCHOR_TOPLEFT,
214 source_type,
215 run_types) ==
201 views::MenuRunner::MENU_DELETED) { 216 views::MenuRunner::MENU_DELETED) {
202 return; 217 return;
203 } 218 }
204 219
205 menu_runner_.reset(); 220 menu_runner_.reset();
206 SetButtonNotPushed(); 221 SetButtonNotPushed();
207 context_menu_ = NULL; 222 context_menu_ = NULL;
208 } 223 }
209 224
210 void BrowserActionButton::UpdateState() { 225 void BrowserActionButton::UpdateState() {
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 extensions::Command browser_action_command; 438 extensions::Command browser_action_command;
424 if (!only_if_active || !command_service->GetBrowserActionCommand( 439 if (!only_if_active || !command_service->GetBrowserActionCommand(
425 extension_->id(), 440 extension_->id(),
426 extensions::CommandService::ACTIVE_ONLY, 441 extensions::CommandService::ACTIVE_ONLY,
427 &browser_action_command, 442 &browser_action_command,
428 NULL)) { 443 NULL)) {
429 GetFocusManager()->UnregisterAccelerator(*keybinding_.get(), this); 444 GetFocusManager()->UnregisterAccelerator(*keybinding_.get(), this);
430 keybinding_.reset(NULL); 445 keybinding_.reset(NULL);
431 } 446 }
432 } 447 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/browser_action_view.h ('k') | chrome/browser/ui/views/toolbar/browser_actions_container.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698