From 263115a528c7b600a8d9ee3befb8a8fd8a0a0601 Mon Sep 17 00:00:00 2001 From: Yousef El-Zebdeh Date: Thu, 5 Jan 2017 02:40:56 +0000 Subject: [PATCH 1/2] 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"); From 1e3514c02eeb7a30c9e0e41c34d3c04748345f50 Mon Sep 17 00:00:00 2001 From: Yousef El-Zebdeh Date: Thu, 5 Jan 2017 06:24:09 +0000 Subject: [PATCH 2/2] Renamamed methods and inteface labels Stay On Bottom > Stay in Back Stay On Top > Stay in Front These fit closer to Apple's terminology as seen with iOS simulator. --- runtime/menu.vim | 8 ++++---- src/MacVim/Actions.plist | 4 ++-- src/MacVim/MMAppController.h | 4 ++-- src/MacVim/MMAppController.m | 18 +++++++++--------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/runtime/menu.vim b/runtime/menu.vim index fab4913c3e..94ae84f6c6 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -80,8 +80,8 @@ 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.380 Window.Stay\ in\ Front + an 9998.390 Window.Stay\ in\ Back an 9998.400 Window.Stay\ Level\ Normal endif @@ -1258,8 +1258,8 @@ 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\ in\ Front action=stayInFront: + macm Window.Stay\ in\ Back action=stayInBack: macm Window.Stay\ Level\ Normal action=stayLevelNormal: macm Help.MacVim\ Help key= diff --git a/src/MacVim/Actions.plist b/src/MacVim/Actions.plist index c6560fdf71..a28f89a2e3 100644 --- a/src/MacVim/Actions.plist +++ b/src/MacVim/Actions.plist @@ -72,9 +72,9 @@ zoomAll: - stayOnBottom: + stayInFront: - stayOnTop: + stayInBack: stayLevelNormal: diff --git a/src/MacVim/MMAppController.h b/src/MacVim/MMAppController.h index bc999640fd..566502fba0 100644 --- a/src/MacVim/MMAppController.h +++ b/src/MacVim/MMAppController.h @@ -53,8 +53,8 @@ - (IBAction)openWebsite:(id)sender; - (IBAction)showVimHelp:(id)sender; - (IBAction)zoomAll:(id)sender; -- (IBAction)stayOnBottom:(id)sender; -- (IBAction)stayOnTop:(id)sender; +- (IBAction)stayInFront:(id)sender; +- (IBAction)stayInBack:(id)sender; - (IBAction)stayLevelNormal:(id)sender; @end diff --git a/src/MacVim/MMAppController.m b/src/MacVim/MMAppController.m index a760f7eddc..50d0e3ddcd 100644 --- a/src/MacVim/MMAppController.m +++ b/src/MacVim/MMAppController.m @@ -1196,20 +1196,20 @@ fsEventCallback(ConstFSEventStreamRef streamRef, [NSApp makeWindowsPerform:@selector(performZoom:) inOrder:YES]; } -- (IBAction)stayOnBottom:(id)sender +- (IBAction)stayInFront:(id)sender { - ASLogDebug(@"Stay on bottom"); - NSWindow *keyWindow = [NSApp keyWindow]; - [keyWindow setLevel:kCGDesktopIconWindowLevel +1]; -} - -- (IBAction)stayOnTop:(id)sender -{ - ASLogDebug(@"Stay on top"); + ASLogDebug(@"Stay in Front"); NSWindow *keyWindow = [NSApp keyWindow]; [keyWindow setLevel:NSFloatingWindowLevel]; } +- (IBAction)stayInBack:(id)sender +{ + ASLogDebug(@"Stay in Back"); + NSWindow *keyWindow = [NSApp keyWindow]; + [keyWindow setLevel:kCGDesktopIconWindowLevel +1]; +} + - (IBAction)stayLevelNormal:(id)sender { ASLogDebug(@"Stay level normal");