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

Unified Diff: chrome/browser/cocoa/wrench_menu_controller.mm

Issue 3177001: Merge 54804 - [Mac] Enable click-drag-release behavior in the Wrench menu's c... (Closed) Base URL: svn://svn.chromium.org/chrome/branches/472/src/
Patch Set: Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/wrench_menu_controller.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/wrench_menu_controller.mm
===================================================================
--- chrome/browser/cocoa/wrench_menu_controller.mm (revision 55631)
+++ chrome/browser/cocoa/wrench_menu_controller.mm (working copy)
@@ -10,6 +10,7 @@
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_window.h"
+#import "chrome/browser/cocoa/menu_tracked_root_view.h"
#import "chrome/browser/cocoa/toolbar_controller.h"
#include "chrome/browser/wrench_menu_model.h"
#include "grit/chromium_strings.h"
@@ -51,10 +52,12 @@
case IDC_EDIT_MENU:
DCHECK(editItem_);
[customItem setView:editItem_];
+ [editItem_ setMenuItem:customItem];
break;
case IDC_ZOOM_MENU:
DCHECK(zoomItem_);
[customItem setView:zoomItem_];
+ [zoomItem_ setMenuItem:customItem];
break;
default:
NOTREACHED();
@@ -76,10 +79,10 @@
NSString* title = base::SysUTF16ToNSString(
[self wrenchMenuModel]->GetLabelForCommandId(IDC_ZOOM_PERCENT_DISPLAY));
[[zoomItem_ viewWithTag:IDC_ZOOM_PERCENT_DISPLAY] setTitle:title];
+
bool plusEnabled = [self wrenchMenuModel]->IsCommandIdEnabled(IDC_ZOOM_PLUS);
bool minusEnabled = [self wrenchMenuModel]->IsCommandIdEnabled(
IDC_ZOOM_MINUS);
-
[zoomPlus_ setEnabled:plusEnabled];
[zoomMinus_ setEnabled:minusEnabled];
@@ -95,12 +98,6 @@
// NSCarbonMenuWindow; this screws up the typical |-commandDispatch:| system.
- (IBAction)dispatchWrenchMenuCommand:(id)sender {
NSInteger tag = [sender tag];
-
- // NSSegmentedControls (used for the Edit item) need a little help to get the
- // command_id of the pressed item.
- if ([sender isKindOfClass:[NSSegmentedControl class]])
- tag = [[sender cell] tagForSegment:[sender selectedSegment]];
-
// The custom views within the Wrench menu are abnormal and keep the menu open
// after a target-action. Close the menu manually.
// TODO(rsesek): It'd be great if the zoom buttons didn't have to close the
@@ -146,28 +143,44 @@
// Fit the localized strings into the Cut/Copy/Paste control, then resize the
// whole menu item accordingly.
- (void)adjustPositioning {
- NSRect itemFrame = [editItem_ frame];
- NSRect controlFrame = [editControl_ frame];
+ const CGFloat kButtonPadding = 12;
+ CGFloat delta = 0;
- CGFloat originalControlWidth = NSWidth(controlFrame);
- // Maintain the carefully pixel-pushed gap between the edge of the menu and
- // the rightmost control.
- CGFloat edge = NSWidth(itemFrame) -
- (controlFrame.origin.x + originalControlWidth);
+ // Go through the three buttons from right-to-left, adjusting the size to fit
+ // the localized strings while keeping them all aligned on their horizontal
+ // edges.
+ const size_t kAdjustViewCount = 3;
+ NSButton* views[kAdjustViewCount] = { editPaste_, editCopy_, editCut_ };
+ for (size_t i = 0; i < kAdjustViewCount; ++i) {
+ NSButton* button = views[i];
+ CGFloat originalWidth = NSWidth([button frame]);
- // Resize the edit segmented control to fit the localized strings.
- [editControl_ sizeToFit];
- controlFrame = [editControl_ frame];
- CGFloat resizeAmount = NSWidth(controlFrame) - originalControlWidth;
+ // Do not let |-sizeToFit| change the height of the button.
+ NSSize size = [button frame].size;
+ [button sizeToFit];
+ size.width = [button frame].size.width + kButtonPadding;
+ [button setFrameSize:size];
- // Adjust the size of the entire menu item to account for changes in the size
- // of the segmented control.
- itemFrame.size.width += resizeAmount;
+ CGFloat newWidth = size.width;
+ delta += newWidth - originalWidth;
+
+ NSRect frame = [button frame];
+ frame.origin.x -= delta;
+ [button setFrame:frame];
+ }
+
+ // Resize the menu item by the total amound the buttons changed so that the
+ // spacing between the buttons and the title remains the same.
+ NSRect itemFrame = [editItem_ frame];
+ itemFrame.size.width += delta;
[editItem_ setFrame:itemFrame];
- // Keep the spacing between the right edges of the menu and the control.
- controlFrame.origin.x = NSWidth(itemFrame) - edge - NSWidth(controlFrame);
- [editControl_ setFrame:controlFrame];
+ // Also resize the superview of the buttons, which is an NSView used to slide
+ // when the item title is too big and GTM resizes it.
+ NSRect parentFrame = [[editCut_ superview] frame];
+ parentFrame.size.width += delta;
+ parentFrame.origin.x -= delta;
+ [[editCut_ superview] setFrame:parentFrame];
}
@end // @implementation WrenchMenuController
« no previous file with comments | « chrome/browser/cocoa/wrench_menu_controller.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698