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

Side by Side Diff: chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc

Issue 550313002: Pop extensions out of the action overflow menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: name change + latest master for CQ Created 6 years, 3 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
« no previous file with comments | « no previous file | chrome/browser/ui/views/toolbar/browser_actions_container.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/browser_action_overflow_menu_contro ller.h" 5 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro ller.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/extensions/extension_action.h" 9 #include "chrome/browser/extensions/extension_action.h"
10 #include "chrome/browser/extensions/extension_context_menu_model.h" 10 #include "chrome/browser/extensions/extension_context_menu_model.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 return ui::DragDropTypes::DRAG_NONE; 220 return ui::DragDropTypes::DRAG_NONE;
221 221
222 size_t drop_index = IndexForId(menu->GetCommand()); 222 size_t drop_index = IndexForId(menu->GetCommand());
223 223
224 // When not dragging within the overflow menu (dragging an icon into the menu) 224 // When not dragging within the overflow menu (dragging an icon into the menu)
225 // subtract one to get the right index. 225 // subtract one to get the right index.
226 if (position == DROP_BEFORE && 226 if (position == DROP_BEFORE &&
227 drop_data.index() < owner_->VisibleBrowserActions()) 227 drop_data.index() < owner_->VisibleBrowserActions())
228 --drop_index; 228 --drop_index;
229 229
230 // Move the extension in the model.
230 const extensions::Extension* extension = 231 const extensions::Extension* extension =
231 extensions::ExtensionRegistry::Get(browser_->profile())-> 232 extensions::ExtensionRegistry::Get(browser_->profile())->
232 enabled_extensions().GetByID(drop_data.id()); 233 enabled_extensions().GetByID(drop_data.id());
233 extensions::ExtensionToolbarModel::Get(browser_->profile())-> 234 extensions::ExtensionToolbarModel* toolbar_model =
234 MoveExtensionIcon(extension, drop_index); 235 extensions::ExtensionToolbarModel::Get(browser_->profile());
236 if (browser_->profile()->IsOffTheRecord())
237 drop_index = toolbar_model->IncognitoIndexToOriginal(drop_index);
238 toolbar_model->MoveExtensionIcon(extension, drop_index);
239
240 // If the extension was moved to the overflow menu from the main bar, notify
241 // the owner.
242 if (drop_index >= owner_->VisibleBrowserActions())
243 owner_->NotifyActionMovedToOverflow();
235 244
236 if (for_drop_) 245 if (for_drop_)
237 delete this; 246 delete this;
238 return ui::DragDropTypes::DRAG_MOVE; 247 return ui::DragDropTypes::DRAG_MOVE;
239 } 248 }
240 249
241 bool BrowserActionOverflowMenuController::CanDrag(views::MenuItemView* menu) { 250 bool BrowserActionOverflowMenuController::CanDrag(views::MenuItemView* menu) {
242 return true; 251 return true;
243 } 252 }
244 253
245 void BrowserActionOverflowMenuController::WriteDragData( 254 void BrowserActionOverflowMenuController::WriteDragData(
246 views::MenuItemView* sender, OSExchangeData* data) { 255 views::MenuItemView* sender, OSExchangeData* data) {
247 size_t drag_index = IndexForId(sender->GetCommand()); 256 size_t drag_index = IndexForId(sender->GetCommand());
248 const extensions::Extension* extension = views_[drag_index]->extension(); 257 const extensions::Extension* extension = views_[drag_index]->extension();
249 BrowserActionDragData drag_data(extension->id(), drag_index); 258 BrowserActionDragData drag_data(extension->id(), drag_index);
250 drag_data.Write(owner_->profile(), data); 259 drag_data.Write(owner_->profile(), data);
251 } 260 }
252 261
253 int BrowserActionOverflowMenuController::GetDragOperations( 262 int BrowserActionOverflowMenuController::GetDragOperations(
254 views::MenuItemView* sender) { 263 views::MenuItemView* sender) {
255 return ui::DragDropTypes::DRAG_MOVE; 264 return ui::DragDropTypes::DRAG_MOVE;
256 } 265 }
257 266
258 size_t BrowserActionOverflowMenuController::IndexForId(int id) const { 267 size_t BrowserActionOverflowMenuController::IndexForId(int id) const {
259 // The index of the view being dragged (GetCommand gives a 1-based index into 268 // The index of the view being dragged (GetCommand gives a 1-based index into
260 // the overflow menu). 269 // the overflow menu).
261 DCHECK_GT(owner_->VisibleBrowserActions() + id, 0u); 270 DCHECK_GT(owner_->VisibleBrowserActions() + id, 0u);
262 return owner_->VisibleBrowserActions() + id - 1; 271 return owner_->VisibleBrowserActions() + id - 1;
263 } 272 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/toolbar/browser_actions_container.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698