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

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

Issue 1265743003: [Extensions Mac UI] Fix more bugs in the action overflow container (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "chrome/browser/extensions/extension_message_bubble_controller.h" 10 #include "chrome/browser/extensions/extension_message_bubble_controller.h"
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 [self showChevronIfNecessaryInFrame:[containerView_ frame]]; 593 [self showChevronIfNecessaryInFrame:[containerView_ frame]];
594 NSUInteger minIndex = isOverflow_ ? 594 NSUInteger minIndex = isOverflow_ ?
595 [buttons_ count] - toolbarActionsBar_->GetIconCount() : 0; 595 [buttons_ count] - toolbarActionsBar_->GetIconCount() : 0;
596 NSUInteger maxIndex = isOverflow_ ? 596 NSUInteger maxIndex = isOverflow_ ?
597 [buttons_ count] : toolbarActionsBar_->GetIconCount(); 597 [buttons_ count] : toolbarActionsBar_->GetIconCount();
598 for (NSUInteger i = 0; i < [buttons_ count]; ++i) { 598 for (NSUInteger i = 0; i < [buttons_ count]; ++i) {
599 BrowserActionButton* button = [buttons_ objectAtIndex:i]; 599 BrowserActionButton* button = [buttons_ objectAtIndex:i];
600 if ([button isBeingDragged]) 600 if ([button isBeingDragged])
601 continue; 601 continue;
602 602
603 [self moveButton:[buttons_ objectAtIndex:i] toIndex:i - minIndex]; 603 [self moveButton:[buttons_ objectAtIndex:i] toIndex:i];
604 604
605 if (i >= minIndex && i < maxIndex) { 605 if (i >= minIndex && i < maxIndex) {
606 // Make sure the button is within the visible container. 606 // Make sure the button is within the visible container.
607 if ([button superview] != containerView_) { 607 if ([button superview] != containerView_) {
608 // We add the subview under the sibling views so that when it 608 // We add the subview under the sibling views so that when it
609 // "slides in", it does so under its neighbors. 609 // "slides in", it does so under its neighbors.
610 [containerView_ addSubview:button 610 [containerView_ addSubview:button
611 positioned:NSWindowBelow 611 positioned:NSWindowBelow
612 relativeTo:nil]; 612 relativeTo:nil];
613 } 613 }
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 } 858 }
859 859
860 - (void)actionButtonDragFinished:(NSNotification*)notification { 860 - (void)actionButtonDragFinished:(NSNotification*)notification {
861 suppressChevron_ = NO; 861 suppressChevron_ = NO;
862 [self redraw]; 862 [self redraw];
863 } 863 }
864 864
865 - (NSRect)frameForIndex:(NSUInteger)index { 865 - (NSRect)frameForIndex:(NSUInteger)index {
866 const ToolbarActionsBar::PlatformSettings& platformSettings = 866 const ToolbarActionsBar::PlatformSettings& platformSettings =
867 toolbarActionsBar_->platform_settings(); 867 toolbarActionsBar_->platform_settings();
868 int startIndex = isOverflow_ ?
869 [buttons_ count] - toolbarActionsBar_->GetIconCount() : 0;
870 int relativeIndex = index - startIndex;
871
872 int iconWidth = ToolbarActionsBar::IconWidth(false);
873 int iconHeight = ToolbarActionsBar::IconHeight();
874
875 // If the index is for an action that is before range we show (i.e., is for
876 // a button that's on the main bar, and this is the overflow), the frame is
877 // set outside the bounds of the view.
878 if (relativeIndex < 0)
879 return NSMakeRect(-iconWidth - 1, 0, iconWidth, iconHeight);
880
868 int icons_per_overflow_row = platformSettings.icons_per_overflow_menu_row; 881 int icons_per_overflow_row = platformSettings.icons_per_overflow_menu_row;
869 NSUInteger rowIndex = isOverflow_ ? index / icons_per_overflow_row : 0; 882 NSUInteger rowIndex = isOverflow_ ?
870 NSUInteger indexInRow = isOverflow_ ? index % icons_per_overflow_row : index; 883 relativeIndex / icons_per_overflow_row : 0;
884 NSUInteger indexInRow = isOverflow_ ?
885 relativeIndex % icons_per_overflow_row : relativeIndex;
871 886
872 CGFloat xOffset = platformSettings.left_padding + 887 CGFloat xOffset = platformSettings.left_padding +
873 (indexInRow * ToolbarActionsBar::IconWidth(true)); 888 (indexInRow * ToolbarActionsBar::IconWidth(true));
874 CGFloat yOffset = NSHeight([containerView_ frame]) - 889 CGFloat yOffset = NSHeight([containerView_ frame]) -
875 (ToolbarActionsBar::IconHeight() * (rowIndex + 1)); 890 (ToolbarActionsBar::IconHeight() * (rowIndex + 1));
876 891
877 return NSMakeRect(xOffset, 892 return NSMakeRect(xOffset,
878 yOffset, 893 yOffset,
879 ToolbarActionsBar::IconWidth(false), 894 ToolbarActionsBar::IconWidth(false),
880 ToolbarActionsBar::IconHeight()); 895 ToolbarActionsBar::IconHeight());
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 } 1066 }
1052 1067
1053 #pragma mark - 1068 #pragma mark -
1054 #pragma mark Testing Methods 1069 #pragma mark Testing Methods
1055 1070
1056 - (BrowserActionButton*)buttonWithIndex:(NSUInteger)index { 1071 - (BrowserActionButton*)buttonWithIndex:(NSUInteger)index {
1057 return index < [buttons_ count] ? [buttons_ objectAtIndex:index] : nil; 1072 return index < [buttons_ count] ? [buttons_ objectAtIndex:index] : nil;
1058 } 1073 }
1059 1074
1060 @end 1075 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698