From 112f86ba330f8ef472ecef4783bd574fedcedf82 Mon Sep 17 00:00:00 2001 From: Bjorn Winckler Date: Tue, 29 Jan 2008 20:05:21 +0100 Subject: [PATCH] File->Close sends performClose: This fixes a bug where would close not close the about dialog box, but instead would close a (partially) obscured window. --- src/MacVim/MMFullscreenWindow.m | 12 +++++++++--- src/MacVim/MMWindow.m | 9 +++++++++ src/MacVim/MMWindowController.h | 1 + src/MacVim/MMWindowController.m | 8 ++++++++ src/MacVim/gvimrc | 2 +- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/MacVim/MMFullscreenWindow.m b/src/MacVim/MMFullscreenWindow.m index 5b4cda52f6..e1caa370b4 100644 --- a/src/MacVim/MMFullscreenWindow.m +++ b/src/MacVim/MMFullscreenWindow.m @@ -214,14 +214,20 @@ static int numFullscreenWindows = 0; [view setFrameOrigin:origin]; } - -#pragma mark Proxy/Decorator/whatever stuff - - (void)scrollWheel:(NSEvent *)theEvent { [[view textView] scrollWheel:theEvent]; } +- (void)performClose:(id)sender +{ + id wc = [self windowController]; + if ([wc respondsToSelector:@selector(performClose:)]) + [wc performClose:sender]; + else + [super performClose:sender]; +} + @end // MMFullscreenWindow diff --git a/src/MacVim/MMWindow.m b/src/MacVim/MMWindow.m index 2a5968f586..70a9fd2ef7 100644 --- a/src/MacVim/MMWindow.m +++ b/src/MacVim/MMWindow.m @@ -117,4 +117,13 @@ [super setContentSize:size]; } +- (void)performClose:(id)sender +{ + id wc = [self windowController]; + if ([wc respondsToSelector:@selector(performClose:)]) + [wc performClose:sender]; + else + [super performClose:sender]; +} + @end // MMWindow diff --git a/src/MacVim/MMWindowController.h b/src/MacVim/MMWindowController.h index a2fd82e7d2..f42fde41ef 100644 --- a/src/MacVim/MMWindowController.h +++ b/src/MacVim/MMWindowController.h @@ -65,5 +65,6 @@ - (IBAction)addNewTab:(id)sender; - (IBAction)toggleToolbar:(id)sender; +- (IBAction)performClose:(id)sender; @end diff --git a/src/MacVim/MMWindowController.m b/src/MacVim/MMWindowController.m index 048741f8d2..9f6fe0fd09 100644 --- a/src/MacVim/MMWindowController.m +++ b/src/MacVim/MMWindowController.m @@ -606,6 +606,14 @@ [vimController sendMessage:ToggleToolbarMsgID data:nil]; } +- (IBAction)performClose:(id)sender +{ + // NOTE: File->Close is bound to this action message instead binding it + // directly to the below vim input so that File->Close also works for + // auxiliary windows such as the About dialog. (If we were to bind the + // below, then will not close e.g. the About dialog.) + [vimController addVimInput:@":conf q"]; +} // -- NSWindow delegate ------------------------------------------------------ diff --git a/src/MacVim/gvimrc b/src/MacVim/gvimrc index dcbe5db984..433fb90ccc 100644 --- a/src/MacVim/gvimrc +++ b/src/MacVim/gvimrc @@ -47,7 +47,7 @@ an 10.295 File.New\ Tab :tabnew an 10.310 File.&Open\.\.\. :maca fileOpen: an 10.328 File.-SEP0- an 10.330 File.Close\ Window:qa :confirm qa -an 10.331 File.Close:q :confirm q +an 10.331 File.Close :maca performClose: "an 10.331 File.Close\ Tab :tabclose an 20.460 Edit.-SEP4-