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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm

Issue 10533086: Action box menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Action box menu Created 8 years, 4 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) 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 #import "browser_actions_controller.h" 5 #import "browser_actions_controller.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <string> 8 #include <string>
9 9
10 #include "base/sys_string_conversions.h" 10 #include "base/sys_string_conversions.h"
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 } 436 }
437 437
438 #pragma mark - 438 #pragma mark -
439 #pragma mark Private Methods 439 #pragma mark Private Methods
440 440
441 - (void)createButtons { 441 - (void)createButtons {
442 if (!toolbarModel_) 442 if (!toolbarModel_)
443 return; 443 return;
444 444
445 NSUInteger i = 0; 445 NSUInteger i = 0;
446 for (ExtensionList::iterator iter = toolbarModel_->begin(); 446 for (ExtensionList::const_iterator iter =
447 iter != toolbarModel_->end(); ++iter) { 447 toolbarModel_->toolbar_items().begin();
448 iter != toolbarModel_->toolbar_items().end(); ++iter) {
448 if (![self shouldDisplayBrowserAction:*iter]) 449 if (![self shouldDisplayBrowserAction:*iter])
449 continue; 450 continue;
450 451
451 [self createActionButtonForExtension:*iter withIndex:i++]; 452 [self createActionButtonForExtension:*iter withIndex:i++];
452 } 453 }
453 454
454 CGFloat width = [self savedWidth]; 455 CGFloat width = [self savedWidth];
455 [containerView_ resizeToWidth:width animate:NO]; 456 [containerView_ resizeToWidth:width animate:NO];
456 } 457 }
457 458
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 } else { 527 } else {
527 [self positionActionButtonsAndAnimate:NO]; 528 [self positionActionButtonsAndAnimate:NO];
528 } 529 }
529 [containerView_ setMaxWidth: 530 [containerView_ setMaxWidth:
530 [self containerWidthWithButtonCount:[self buttonCount]]]; 531 [self containerWidthWithButtonCount:[self buttonCount]]];
531 [containerView_ setNeedsDisplay:YES]; 532 [containerView_ setNeedsDisplay:YES];
532 } 533 }
533 534
534 - (void)positionActionButtonsAndAnimate:(BOOL)animate { 535 - (void)positionActionButtonsAndAnimate:(BOOL)animate {
535 NSUInteger i = 0; 536 NSUInteger i = 0;
536 for (ExtensionList::iterator iter = toolbarModel_->begin(); 537 for (ExtensionList::const_iterator iter =
537 iter != toolbarModel_->end(); ++iter) { 538 toolbarModel_->toolbar_items().begin();
539 iter != toolbarModel_->toolbar_items().end(); ++iter) {
538 if (![self shouldDisplayBrowserAction:*iter]) 540 if (![self shouldDisplayBrowserAction:*iter])
539 continue; 541 continue;
540 BrowserActionButton* button = [self buttonForExtension:(*iter)]; 542 BrowserActionButton* button = [self buttonForExtension:(*iter)];
541 if (!button) 543 if (!button)
542 continue; 544 continue;
543 if (![button isBeingDragged]) 545 if (![button isBeingDragged])
544 [self moveButton:button toIndex:i animate:animate]; 546 [self moveButton:button toIndex:i animate:animate];
545 ++i; 547 ++i;
546 } 548 }
547 } 549 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 } 619 }
618 } 620 }
619 621
620 - (void)containerDragging:(NSNotification*)notification { 622 - (void)containerDragging:(NSNotification*)notification {
621 [[NSNotificationCenter defaultCenter] 623 [[NSNotificationCenter defaultCenter]
622 postNotificationName:kBrowserActionGrippyDraggingNotification 624 postNotificationName:kBrowserActionGrippyDraggingNotification
623 object:self]; 625 object:self];
624 } 626 }
625 627
626 - (void)containerDragFinished:(NSNotification*)notification { 628 - (void)containerDragFinished:(NSNotification*)notification {
627 for (ExtensionList::iterator iter = toolbarModel_->begin(); 629 for (ExtensionList::const_iterator iter =
628 iter != toolbarModel_->end(); ++iter) { 630 toolbarModel_->toolbar_items().begin();
631 iter != toolbarModel_->toolbar_items().end(); ++iter) {
629 BrowserActionButton* button = [self buttonForExtension:(*iter)]; 632 BrowserActionButton* button = [self buttonForExtension:(*iter)];
630 NSRect buttonFrame = [button frame]; 633 NSRect buttonFrame = [button frame];
631 if (NSContainsRect([containerView_ bounds], buttonFrame)) 634 if (NSContainsRect([containerView_ bounds], buttonFrame))
632 continue; 635 continue;
633 636
634 CGFloat intersectionWidth = 637 CGFloat intersectionWidth =
635 NSWidth(NSIntersectionRect([containerView_ bounds], buttonFrame)); 638 NSWidth(NSIntersectionRect([containerView_ bounds], buttonFrame));
636 // Pad the threshold by 5 pixels in order to have the buttons hide more 639 // Pad the threshold by 5 pixels in order to have the buttons hide more
637 // easily. 640 // easily.
638 if (([containerView_ grippyPinned] && intersectionWidth > 0) || 641 if (([containerView_ grippyPinned] && intersectionWidth > 0) ||
(...skipping 17 matching lines...) Expand all
656 if (![self chevronIsHidden]) 659 if (![self chevronIsHidden])
657 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES]; 660 [self setChevronHidden:YES inFrame:[containerView_ frame] animate:YES];
658 661
659 // Determine what index the dragged button should lie in, alter the model and 662 // Determine what index the dragged button should lie in, alter the model and
660 // reposition the buttons. 663 // reposition the buttons.
661 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2); 664 CGFloat dragThreshold = std::floor(kBrowserActionWidth / 2);
662 BrowserActionButton* draggedButton = [notification object]; 665 BrowserActionButton* draggedButton = [notification object];
663 NSRect draggedButtonFrame = [draggedButton frame]; 666 NSRect draggedButtonFrame = [draggedButton frame];
664 667
665 NSUInteger index = 0; 668 NSUInteger index = 0;
666 for (ExtensionList::iterator iter = toolbarModel_->begin(); 669 for (ExtensionList::const_iterator iter =
667 iter != toolbarModel_->end(); ++iter) { 670 toolbarModel_->toolbar_items().begin();
671 iter != toolbarModel_->toolbar_items().end(); ++iter) {
668 BrowserActionButton* button = [self buttonForExtension:(*iter)]; 672 BrowserActionButton* button = [self buttonForExtension:(*iter)];
669 CGFloat intersectionWidth = 673 CGFloat intersectionWidth =
670 NSWidth(NSIntersectionRect(draggedButtonFrame, [button frame])); 674 NSWidth(NSIntersectionRect(draggedButtonFrame, [button frame]));
671 675
672 if (intersectionWidth > dragThreshold && button != draggedButton && 676 if (intersectionWidth > dragThreshold && button != draggedButton &&
673 ![button isAnimating] && index < [self visibleButtonCount]) { 677 ![button isAnimating] && index < [self visibleButtonCount]) {
674 toolbarModel_->MoveBrowserAction([draggedButton extension], index); 678 toolbarModel_->MoveBrowserAction([draggedButton extension], index);
675 [self positionActionButtonsAndAnimate:YES]; 679 [self positionActionButtonsAndAnimate:YES];
676 return; 680 return;
677 } 681 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 823
820 return selected_tab->restore_tab_helper()->session_id().id(); 824 return selected_tab->restore_tab_helper()->session_id().id();
821 } 825 }
822 826
823 #pragma mark - 827 #pragma mark -
824 #pragma mark Testing Methods 828 #pragma mark Testing Methods
825 829
826 - (NSButton*)buttonWithIndex:(NSUInteger)index { 830 - (NSButton*)buttonWithIndex:(NSUInteger)index {
827 if (profile_->IsOffTheRecord()) 831 if (profile_->IsOffTheRecord())
828 index = toolbarModel_->IncognitoIndexToOriginal(index); 832 index = toolbarModel_->IncognitoIndexToOriginal(index);
829 if (index < toolbarModel_->size()) { 833 const extensions::ExtensionList& toolbar_items =
830 const Extension* extension = toolbarModel_->GetExtensionByIndex(index); 834 toolbarModel_->toolbar_items();
835 if (index < toolbar_items.size()) {
836 const Extension* extension = toolbar_items[index];
831 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; 837 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())];
832 } 838 }
833 return nil; 839 return nil;
834 } 840 }
835 841
836 @end 842 @end
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_toolbar_model_browsertest.cc ('k') | chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698