Merge pull request #292 from macvim-dev/fullscreen-fade-control

Implement fullscreen fade control.
This commit is contained in:
Kazuki Sakamoto
2016-06-09 19:22:24 -07:00
committed by GitHub
5 changed files with 50 additions and 35 deletions
+30 -29
View File
@@ -183,39 +183,40 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
kCFPreferencesCurrentApplication);
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], MMNoWindowKey,
[NSNumber numberWithInt:64], MMTabMinWidthKey,
[NSNumber numberWithInt:6*64], MMTabMaxWidthKey,
[NSNumber numberWithInt:132], MMTabOptimumWidthKey,
[NSNumber numberWithBool:YES], MMShowAddTabButtonKey,
[NSNumber numberWithInt:2], MMTextInsetLeftKey,
[NSNumber numberWithInt:1], MMTextInsetRightKey,
[NSNumber numberWithInt:1], MMTextInsetTopKey,
[NSNumber numberWithInt:1], MMTextInsetBottomKey,
@"MMTypesetter", MMTypesetterKey,
[NSNumber numberWithFloat:1], MMCellWidthMultiplierKey,
[NSNumber numberWithFloat:-1], MMBaselineOffsetKey,
[NSNumber numberWithBool:YES], MMTranslateCtrlClickKey,
[NSNumber numberWithInt:0], MMOpenInCurrentWindowKey,
[NSNumber numberWithBool:NO], MMNoFontSubstitutionKey,
[NSNumber numberWithBool:YES], MMLoginShellKey,
[NSNumber numberWithBool:NO], MMNoWindowKey,
[NSNumber numberWithInt:64], MMTabMinWidthKey,
[NSNumber numberWithInt:6*64], MMTabMaxWidthKey,
[NSNumber numberWithInt:132], MMTabOptimumWidthKey,
[NSNumber numberWithBool:YES], MMShowAddTabButtonKey,
[NSNumber numberWithInt:2], MMTextInsetLeftKey,
[NSNumber numberWithInt:1], MMTextInsetRightKey,
[NSNumber numberWithInt:1], MMTextInsetTopKey,
[NSNumber numberWithInt:1], MMTextInsetBottomKey,
@"MMTypesetter", MMTypesetterKey,
[NSNumber numberWithFloat:1], MMCellWidthMultiplierKey,
[NSNumber numberWithFloat:-1], MMBaselineOffsetKey,
[NSNumber numberWithBool:YES], MMTranslateCtrlClickKey,
[NSNumber numberWithInt:0], MMOpenInCurrentWindowKey,
[NSNumber numberWithBool:NO], MMNoFontSubstitutionKey,
[NSNumber numberWithBool:YES], MMLoginShellKey,
[NSNumber numberWithInt:MMRendererCoreText],
MMRendererKey,
MMRendererKey,
[NSNumber numberWithInt:MMUntitledWindowAlways],
MMUntitledWindowKey,
[NSNumber numberWithBool:NO], MMZoomBothKey,
@"", MMLoginShellCommandKey,
@"", MMLoginShellArgumentKey,
[NSNumber numberWithBool:YES], MMDialogsTrackPwdKey,
[NSNumber numberWithInt:3], MMOpenLayoutKey,
[NSNumber numberWithBool:NO], MMVerticalSplitKey,
[NSNumber numberWithInt:0], MMPreloadCacheSizeKey,
[NSNumber numberWithInt:0], MMLastWindowClosedBehaviorKey,
MMUntitledWindowKey,
[NSNumber numberWithBool:NO], MMZoomBothKey,
@"", MMLoginShellCommandKey,
@"", MMLoginShellArgumentKey,
[NSNumber numberWithBool:YES], MMDialogsTrackPwdKey,
[NSNumber numberWithInt:3], MMOpenLayoutKey,
[NSNumber numberWithBool:NO], MMVerticalSplitKey,
[NSNumber numberWithInt:0], MMPreloadCacheSizeKey,
[NSNumber numberWithInt:0], MMLastWindowClosedBehaviorKey,
#ifdef INCLUDE_OLD_IM_CODE
[NSNumber numberWithBool:YES], MMUseInlineImKey,
[NSNumber numberWithBool:YES], MMUseInlineImKey,
#endif // INCLUDE_OLD_IM_CODE
[NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey,
[NSNumber numberWithBool:YES], MMNativeFullScreenKey,
[NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey,
[NSNumber numberWithBool:YES], MMNativeFullScreenKey,
[NSNumber numberWithDouble:0.25], MMFullScreenFadeTimeKey,
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
+4
View File
@@ -30,6 +30,10 @@
// This stores the contents of fuoptions_flags at fu start time
int startFuFlags;
// Controls the speed of the fade in and out.
double fadeTime;
double fadeReservationTime;
}
- (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
+14 -6
View File
@@ -104,7 +104,15 @@ enum {
// NOTE: Vim needs to process mouse moved events, so enable them here.
[self setAcceptsMouseMovedEvents:YES];
fadeTime = [[NSUserDefaults standardUserDefaults] doubleForKey:MMFullScreenFadeTimeKey];
// Each fade goes in and then out, so the fade hardware must be reserved accordingly and the
// actual fade time can't exceed half the allowable reservation time... plus some slack to
// prevent visual artifacts caused by defaulting on the fade hardware lease.
fadeTime = MIN(fadeTime, 0.45 * kCGMaxDisplayReservationInterval);
fadeReservationTime = 2.0 * fadeTime + 0.1;
return self;
}
@@ -137,8 +145,8 @@ enum {
// fade to black
Boolean didBlend = NO;
CGDisplayFadeReservationToken token;
if (CGAcquireDisplayFadeReservation(.5, &token) == kCGErrorSuccess) {
CGDisplayFade(token, .25, kCGDisplayBlendNormal,
if (CGAcquireDisplayFadeReservation(fadeReservationTime, &token) == kCGErrorSuccess) {
CGDisplayFade(token, fadeTime, kCGDisplayBlendNormal,
kCGDisplayBlendSolidColor, .0, .0, .0, true);
didBlend = YES;
}
@@ -212,7 +220,7 @@ enum {
// fade back in
if (didBlend) {
CGDisplayFade(token, .25, kCGDisplayBlendSolidColor,
CGDisplayFade(token, fadeTime, kCGDisplayBlendSolidColor,
kCGDisplayBlendNormal, .0, .0, .0, false);
CGReleaseDisplayFadeReservation(token);
}
@@ -225,8 +233,8 @@ enum {
// fade to black
Boolean didBlend = NO;
CGDisplayFadeReservationToken token;
if (CGAcquireDisplayFadeReservation(.5, &token) == kCGErrorSuccess) {
CGDisplayFade(token, .25, kCGDisplayBlendNormal,
if (CGAcquireDisplayFadeReservation(fadeReservationTime, &token) == kCGErrorSuccess) {
CGDisplayFade(token, fadeTime, kCGDisplayBlendNormal,
kCGDisplayBlendSolidColor, .0, .0, .0, true);
didBlend = YES;
}
@@ -320,7 +328,7 @@ enum {
// fade back in
if (didBlend) {
CGDisplayFade(token, .25, kCGDisplayBlendSolidColor,
CGDisplayFade(token, fadeTime, kCGDisplayBlendSolidColor,
kCGDisplayBlendNormal, .0, .0, .0, false);
CGReleaseDisplayFadeReservation(token);
}
+1
View File
@@ -51,6 +51,7 @@ extern NSString *MMUseInlineImKey;
extern NSString *MMSuppressTerminationAlertKey;
extern NSString *MMNativeFullScreenKey;
extern NSString *MMUseMouseTimeKey;
extern NSString *MMFullScreenFadeTimeKey;
// Enum for MMUntitledWindowKey
+1
View File
@@ -47,6 +47,7 @@ NSString *MMUseInlineImKey = @"MMUseInlineIm";
NSString *MMSuppressTerminationAlertKey = @"MMSuppressTerminationAlert";
NSString *MMNativeFullScreenKey = @"MMNativeFullScreen";
NSString *MMUseMouseTimeKey = @"MMUseMouseTime";
NSString *MMFullScreenFadeTimeKey = @"MMFullScreenFadeTime";