diff --git a/src/MacVim/Actions.plist b/src/MacVim/Actions.plist
index 6db599bc62..84952599d2 100644
--- a/src/MacVim/Actions.plist
+++ b/src/MacVim/Actions.plist
@@ -50,6 +50,8 @@
performMiniaturize:
+ performMaximize:
+
performZoom:
recentFilesDummy:
diff --git a/src/MacVim/MMWindowController.h b/src/MacVim/MMWindowController.h
index 7256fef830..dfbcd061f8 100644
--- a/src/MacVim/MMWindowController.h
+++ b/src/MacVim/MMWindowController.h
@@ -109,5 +109,6 @@
- (IBAction)fontSizeDown:(id)sender;
- (IBAction)findAndReplace:(id)sender;
- (IBAction)zoom:(id)sender;
+- (IBAction)performMaximize:(id)sender;
@end
diff --git a/src/MacVim/MMWindowController.m b/src/MacVim/MMWindowController.m
index 7d2b6fe276..e0dff93589 100644
--- a/src/MacVim/MMWindowController.m
+++ b/src/MacVim/MMWindowController.m
@@ -1191,6 +1191,22 @@ - (IBAction)zoom:(id)sender
[vimController sendMessage:ZoomMsgID data:data];
}
+- (IBAction)performMaximize:(id)sender
+{
+ NSWindow *win = [self window];
+ NSRect maxFrame = [[win screen] frame];
+ int maxRows, maxColumns;
+ NSData *data;
+
+ [vimView constrainRows:&maxRows columns:&maxColumns toSize:maxFrame.size];
+ data = [NSData dataWithBytes:(int [2]){maxRows, maxColumns} length:(2 * sizeof(int))];
+ [[self vimController] sendMessage:SetTextDimensionsMsgID data:data];
+ [[vimView textView] setMaxRows:maxRows columns:maxColumns];
+
+ [win setFrameOrigin:maxFrame.origin];
+ [win setIsZoomed:YES];
+}
+
// -- Services menu delegate -------------------------------------------------