From 55f9d57f56bbbbb2c589201246a29858c6cf4e56 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Wed, 3 Dec 2003 11:34:32 +0000 Subject: [PATCH] Positioning Fixes. The window might still do some weirdness if you change its position when its appearing or vanishing, but the weirdness isn't as weird, and the window will recover and perform correctly on its next entrance or exit. --- ITPivotWindowEffect.m | 95 ++++++++++++++++++------------- ITSlideHorizontallyWindowEffect.m | 4 ++ ITSlideVerticallyWindowEffect.m | 2 + ITTransientStatusWindow.m | 1 - 4 files changed, 62 insertions(+), 40 deletions(-) diff --git a/ITPivotWindowEffect.m b/ITPivotWindowEffect.m index 05dc3ac..373c5f3 100755 --- a/ITPivotWindowEffect.m +++ b/ITPivotWindowEffect.m @@ -201,53 +201,70 @@ - (void)setPivot:(float)angle { - float degAngle; - CGAffineTransform transform; - NSRect windowFrame = [_window frame]; - NSRect screenFrame = [[_window screen] frame]; int hPos = [_window horizontalPosition]; int vPos = [_window verticalPosition]; - float translateX; - float translateY; + + if ( (hPos == ITWindowPositionCenter) || (vPos == ITWindowPositionMiddle) ) { - if ( vPos == ITWindowPositionBottom ) { - if ( hPos == ITWindowPositionLeft ) { - angle = angle; - } else if ( hPos == ITWindowPositionRight ) { - angle = ( 45 - -(315 - angle) ); + CGAffineTransform transform; + NSPoint translation; + + translation.x = ( -([_window frame].origin.x) ) ; + translation.y = -( [[_window screen] frame].size.height - [_window frame].origin.y - [_window frame].size.height ); + + transform = CGAffineTransformMakeTranslation( translation.x, translation.y ); + + CGSSetWindowTransform([NSApp contextID], + (CGSWindowID)[_window windowNumber], + transform); + } else { + + float degAngle; + NSRect windowFrame = [_window frame]; + NSRect screenFrame = [[_window screen] frame]; + float translateX; + float translateY; + CGAffineTransform transform; + + if ( vPos == ITWindowPositionBottom ) { + if ( hPos == ITWindowPositionLeft ) { + angle = angle; + } else if ( hPos == ITWindowPositionRight ) { + angle = ( 45 - -(315 - angle) ); + } + } else if ( vPos == ITWindowPositionTop ) { + if ( hPos == ITWindowPositionLeft ) { + angle = ( 45 - -(315 - angle) ); + } else if ( hPos == ITWindowPositionRight ) { + angle = angle; + } + } + + degAngle = (angle * (pi / 180)); + transform = CGAffineTransformMakeRotation(degAngle); + + if ( vPos == ITWindowPositionBottom ) { + transform.ty = ( windowFrame.size.height + windowFrame.origin.y); + translateY = -(screenFrame.size.height); + } else if ( vPos == ITWindowPositionTop ) { + transform.ty = -( screenFrame.size.height - windowFrame.origin.y - windowFrame.size.height ); + translateY = 0; } - } else if ( vPos == ITWindowPositionTop ) { + if ( hPos == ITWindowPositionLeft ) { - angle = ( 45 - -(315 - angle) ); + transform.tx = -( windowFrame.origin.x ); + translateX = 0; } else if ( hPos == ITWindowPositionRight ) { - angle = angle; + transform.tx = ( screenFrame.size.width - windowFrame.origin.x ); + translateX = -(screenFrame.size.width); } + + CGSSetWindowTransform([NSApp contextID], + (CGSWindowID)[_window windowNumber], + CGAffineTransformTranslate( transform, + translateX, + translateY ) ); } - - degAngle = (angle * (pi / 180)); - transform = CGAffineTransformMakeRotation(degAngle); - - if ( vPos == ITWindowPositionBottom ) { - transform.ty = ( windowFrame.size.height + windowFrame.origin.y); - translateY = -(screenFrame.size.height); - } else if ( vPos == ITWindowPositionTop ) { - transform.ty = -( screenFrame.size.height - windowFrame.origin.y - windowFrame.size.height ); - translateY = 0; - } - - if ( hPos == ITWindowPositionLeft ) { - transform.tx = -( windowFrame.origin.x ); - translateX = 0; - } else if ( hPos == ITWindowPositionRight ) { - transform.tx = ( screenFrame.size.width - windowFrame.origin.x ); - translateX = -(screenFrame.size.width); - } - - CGSSetWindowTransform([NSApp contextID], - (CGSWindowID)[_window windowNumber], - CGAffineTransformTranslate( transform, - translateX, - translateY ) ); } diff --git a/ITSlideHorizontallyWindowEffect.m b/ITSlideHorizontallyWindowEffect.m index f0e5d78..1a26d1f 100755 --- a/ITSlideHorizontallyWindowEffect.m +++ b/ITSlideHorizontallyWindowEffect.m @@ -192,6 +192,8 @@ translation.x = ( -([_window frame].origin.x) + distance ) ; } else if ( [_window horizontalPosition] == ITWindowPositionRight ) { translation.x = ( -([_window frame].origin.x) - distance ) ; + } else { + translation.x = ( -([_window frame].origin.x) ) ; } translation.y = -( [[_window screen] frame].size.height - [_window frame].origin.y - [_window frame].size.height ); @@ -202,4 +204,6 @@ (CGSWindowID)[_window windowNumber], transform); } + + @end diff --git a/ITSlideVerticallyWindowEffect.m b/ITSlideVerticallyWindowEffect.m index a8825ab..7237620 100755 --- a/ITSlideVerticallyWindowEffect.m +++ b/ITSlideVerticallyWindowEffect.m @@ -194,6 +194,8 @@ translation.y = ( (([_window frame].size.height * 2) - ([[_window screen] frame].size.height - [_window frame].origin.y)) - distance); } else if ( [_window verticalPosition] == ITWindowPositionBottom ) { translation.y = -( [[_window screen] frame].size.height - [_window frame].origin.y - distance ); + } else { + translation.y = -( [[_window screen] frame].size.height - [_window frame].origin.y - [_window frame].size.height ); } transform = CGAffineTransformMakeTranslation( translation.x, translation.y ); diff --git a/ITTransientStatusWindow.m b/ITTransientStatusWindow.m index c47f9af..4f03f53 100755 --- a/ITTransientStatusWindow.m +++ b/ITTransientStatusWindow.m @@ -126,7 +126,6 @@ static ITTransientStatusWindow *staticWindow = nil; _reallyIgnoresEvents = flag; } - /* - (id)contentView -- 2.20.1