From 1fb9c973feeb3d7a53eeaca0f5c06dfc6e1ab98c Mon Sep 17 00:00:00 2001 From: Ross Boucher Date: Thu, 8 Oct 2009 13:12:30 -0700 Subject: [PATCH] More sheets. --- AppKit/CPWindow/CPWindow.j | 67 ++++++------------ .../AttachedSheet/AppController.j | 0 Tests/{AppKit => }/AttachedSheet/Info.plist | 0 Tests/{AppKit => }/AttachedSheet/Rakefile | 0 .../AttachedSheet/Resources/spinner.gif | Bin .../AttachedSheet/index-debug.html | 0 Tests/{AppKit => }/AttachedSheet/index.html | 0 Tests/{AppKit => }/AttachedSheet/main.j | 0 8 files changed, 23 insertions(+), 44 deletions(-) rename Tests/{AppKit => }/AttachedSheet/AppController.j (100%) rename Tests/{AppKit => }/AttachedSheet/Info.plist (100%) rename Tests/{AppKit => }/AttachedSheet/Rakefile (100%) rename Tests/{AppKit => }/AttachedSheet/Resources/spinner.gif (100%) rename Tests/{AppKit => }/AttachedSheet/index-debug.html (100%) rename Tests/{AppKit => }/AttachedSheet/index.html (100%) rename Tests/{AppKit => }/AttachedSheet/main.j (100%) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 54b232203..b1c7b76d0 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -183,7 +183,6 @@ CPWindowShadowStyleStandard = 0; CPWindowShadowStyleMenu = 1; CPWindowShadowStylePanel = 2; - var SHADOW_MARGIN_LEFT = 20.0, SHADOW_MARGIN_RIGHT = 19.0, SHADOW_MARGIN_TOP = 10.0, @@ -1759,7 +1758,6 @@ CPTexturedBackgroundWindowMask { var sheetFrame = [aSheet frame]; -// setup contexts _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO}; [self _attachSheetWindow:aSheet]; @@ -1772,25 +1770,19 @@ CPTexturedBackgroundWindowMask frame = [self frame], sheetContent = [aSheet contentView]; -// Autoresizing [self _setUpMasksForView:sheetContent]; aSheet._isSheet = YES; aSheet._parentView = self; -// calculate start/end frames - var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width)/2); - var originy = frame.origin.y + [[self contentView] frame].origin.y; - var startFrame = CGRectMake(originx, originy, sheetFrame.size.width, 0); - var endFrame = CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); + var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width)/2), + originy = frame.origin.y + [[self contentView] frame].origin.y, + startFrame = CGRectMake(originx, originy, sheetFrame.size.width, 0), + endFrame = CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); -// Notify the world we will open the sheet [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowWillBeginSheetNotification object:self]; -// Start modal [CPApp runModalForWindow:aSheet]; -// Order front and animate the sheet -// aSheet._isAnimating = YES; [aSheet orderFront:self]; [aSheet setFrame:startFrame]; _sheetContext["opened"] = YES; @@ -1804,22 +1796,18 @@ CPTexturedBackgroundWindowMask /* @ignore */ - (void)_detachSheetWindow { - var sheet = [self attachedSheet]; - -// End frame for animation - var startFrame = [sheet frame]; - var endFrame = CGRectMakeCopy(startFrame); + var sheet = [self attachedSheet], + startFrame = [sheet frame], + endFrame = CGRectMakeCopy(startFrame); + endFrame.size.height = 0; -// Set the new frame in case the sheet have been resized _sheetContext["frame"] = startFrame; -// Autoresizing var sheetContent = [sheet contentView]; [self _setUpMasksForView:sheetContent]; _sheetContext["opened"] = NO; -// Start animation with delegate [sheet _setFrame:endFrame delegate:self duration:0.2 curve:CPAnimationLinear]; } @@ -1832,39 +1820,28 @@ CPTexturedBackgroundWindowMask var sheetContent = [sheet contentView]; -// If we are opened restore autoresizing return now if (_sheetContext["opened"] === YES) { [self _restoreMasksForView:sheetContent]; return; } -// Stop modal [CPApp stopModal]; - -// Notify the world we closed the sheet [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidEndSheetNotification object:self]; -// check first if front ? [sheet orderOut:self]; -// Set the sheet frame to its last open state. var lastFrame = _sheetContext["frame"]; [sheet setFrame:lastFrame]; [self _restoreMasksForView:sheetContent]; -// Send didEndSelector - var delegate = _sheetContext["modalDelegate"]; - var endSelector = _sheetContext["endSelector"]; + var delegate = _sheetContext["modalDelegate"], + endSelector = _sheetContext["endSelector"]; + if (delegate != nil && endSelector != nil) - objj_msgSend(delegate, - endSelector, - sheet, - _sheetContext["returnCode"], - _sheetContext["contextInfo"]); - -// reset contexts + objj_msgSend(delegate, endSelector, sheet, _sheetContext["returnCode"], _sheetContext["contextInfo"]); + _sheetContext = nil; sheet._parentView = nil; } @@ -1874,11 +1851,12 @@ CPTexturedBackgroundWindowMask var views = [CPArray arrayWithArray:[aView subviews]]; [views addObject:aView]; - for (var i = 0; i < [views count]; i++) + for (var i = 0, count = [views count]; i < count; i++) { - var view = [views objectAtIndex:i]; - var mask = [view autoresizingMask]; - var maskToAdd = (mask & CPViewMinYMargin) ? 128 : CPViewMinYMargin; + var view = [views objectAtIndex:i], + mask = [view autoresizingMask], + maskToAdd = (mask & CPViewMinYMargin) ? 128 : CPViewMinYMargin; + [view setAutoresizingMask:(mask | maskToAdd)]; } } @@ -1888,11 +1866,12 @@ CPTexturedBackgroundWindowMask var views = [CPArray arrayWithArray:[aView subviews]]; [views addObject:aView]; - for (var i = 0; i < [views count]; i++) + for (var i = 0, count = [views count]; i < count; i++) { - var view = [views objectAtIndex:i]; - var mask = [view autoresizingMask]; - var maskToRemove = (mask & 128) ? 128 : CPViewMinYMargin; + var view = [views objectAtIndex:i], + mask = [view autoresizingMask], + maskToRemove = (mask & 128) ? 128 : CPViewMinYMargin; + [view setAutoresizingMask:(mask & (~ maskToRemove))]; } } diff --git a/Tests/AppKit/AttachedSheet/AppController.j b/Tests/AttachedSheet/AppController.j similarity index 100% rename from Tests/AppKit/AttachedSheet/AppController.j rename to Tests/AttachedSheet/AppController.j diff --git a/Tests/AppKit/AttachedSheet/Info.plist b/Tests/AttachedSheet/Info.plist similarity index 100% rename from Tests/AppKit/AttachedSheet/Info.plist rename to Tests/AttachedSheet/Info.plist diff --git a/Tests/AppKit/AttachedSheet/Rakefile b/Tests/AttachedSheet/Rakefile similarity index 100% rename from Tests/AppKit/AttachedSheet/Rakefile rename to Tests/AttachedSheet/Rakefile diff --git a/Tests/AppKit/AttachedSheet/Resources/spinner.gif b/Tests/AttachedSheet/Resources/spinner.gif similarity index 100% rename from Tests/AppKit/AttachedSheet/Resources/spinner.gif rename to Tests/AttachedSheet/Resources/spinner.gif diff --git a/Tests/AppKit/AttachedSheet/index-debug.html b/Tests/AttachedSheet/index-debug.html similarity index 100% rename from Tests/AppKit/AttachedSheet/index-debug.html rename to Tests/AttachedSheet/index-debug.html diff --git a/Tests/AppKit/AttachedSheet/index.html b/Tests/AttachedSheet/index.html similarity index 100% rename from Tests/AppKit/AttachedSheet/index.html rename to Tests/AttachedSheet/index.html diff --git a/Tests/AppKit/AttachedSheet/main.j b/Tests/AttachedSheet/main.j similarity index 100% rename from Tests/AppKit/AttachedSheet/main.j rename to Tests/AttachedSheet/main.j