From 263115a528c7b600a8d9ee3befb8a8fd8a0a0601 Mon Sep 17 00:00:00 2001 From: Yousef El-Zebdeh Date: Thu, 5 Jan 2017 02:40:56 +0000 Subject: [PATCH] Three window level actions Added three window level functions to MMAppController. These allow the window to float on top, stay on bottom or revert back to normal status. I have also added the commands to the Actions.plist. The commands were added using the menu.vim file. --- runtime/menu.vim | 6 ++++++ src/MacVim/Actions.plist | 6 ++++++ src/MacVim/MMAppController.h | 3 +++ src/MacVim/MMAppController.m | 21 +++++++++++++++++++++ 4 files changed, 36 insertions(+) diff --git a/runtime/menu.vim b/runtime/menu.vim index cd870a7697..fab4913c3e 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -80,6 +80,9 @@ if has("gui_macvim") an 9998.350 Window.Select\ Previous\ Tab :tabprevious an 9998.360 Window.-SEP2- an 9998.370 Window.Bring\ All\ To\ Front + an 9998.380 Window.Stay\ On\ Bottom + an 9998.390 Window.Stay\ On\ Top + an 9998.400 Window.Stay\ Level\ Normal endif " Help menu @@ -1255,6 +1258,9 @@ if has("gui_macvim") macm Window.Select\ Next\ Tab key= macm Window.Select\ Previous\ Tab key= macm Window.Bring\ All\ To\ Front action=arrangeInFront: + macm Window.Stay\ On\ Bottom action=stayOnBottom: + macm Window.Stay\ On\ Top action=stayOnTop: + macm Window.Stay\ Level\ Normal action=stayLevelNormal: macm Help.MacVim\ Help key= macm Help.MacVim\ Website action=openWebsite: diff --git a/src/MacVim/Actions.plist b/src/MacVim/Actions.plist index 83aa78c124..c6560fdf71 100644 --- a/src/MacVim/Actions.plist +++ b/src/MacVim/Actions.plist @@ -72,5 +72,11 @@ zoomAll: + stayOnBottom: + + stayOnTop: + + stayLevelNormal: + diff --git a/src/MacVim/MMAppController.h b/src/MacVim/MMAppController.h index 15edf5cf97..bc999640fd 100644 --- a/src/MacVim/MMAppController.h +++ b/src/MacVim/MMAppController.h @@ -53,5 +53,8 @@ - (IBAction)openWebsite:(id)sender; - (IBAction)showVimHelp:(id)sender; - (IBAction)zoomAll:(id)sender; +- (IBAction)stayOnBottom:(id)sender; +- (IBAction)stayOnTop:(id)sender; +- (IBAction)stayLevelNormal:(id)sender; @end diff --git a/src/MacVim/MMAppController.m b/src/MacVim/MMAppController.m index 7162187a23..a760f7eddc 100644 --- a/src/MacVim/MMAppController.m +++ b/src/MacVim/MMAppController.m @@ -1196,6 +1196,27 @@ fsEventCallback(ConstFSEventStreamRef streamRef, [NSApp makeWindowsPerform:@selector(performZoom:) inOrder:YES]; } +- (IBAction)stayOnBottom:(id)sender +{ + ASLogDebug(@"Stay on bottom"); + NSWindow *keyWindow = [NSApp keyWindow]; + [keyWindow setLevel:kCGDesktopIconWindowLevel +1]; +} + +- (IBAction)stayOnTop:(id)sender +{ + ASLogDebug(@"Stay on top"); + NSWindow *keyWindow = [NSApp keyWindow]; + [keyWindow setLevel:NSFloatingWindowLevel]; +} + +- (IBAction)stayLevelNormal:(id)sender +{ + ASLogDebug(@"Stay level normal"); + NSWindow *keyWindow = [NSApp keyWindow]; + [keyWindow setLevel:NSNormalWindowLevel]; +} + - (IBAction)coreTextButtonClicked:(id)sender { ASLogDebug(@"Toggle CoreText renderer");