29 @global _CPPlatformWindowWillCloseNotification
31 @
typedef _CPWindowFullPlatformWindowSession
37 - (BOOL)windowShouldClose:(
CPWindow)aWindow;
38 - (CGSize)windowWillResize:(
CPWindow)sender toSize:(CGSize)aSize;
51 - (void)windowWillClose:(
CPWindow)aWindow;
73 CPLeftArrowFunctionKey,
74 CPRightArrowFunctionKey,
76 CPDownArrowFunctionKey,
78 CPPageDownFunctionKey,
148 BOOL _hasBeenOrderedIn;
149 BOOL _isMiniaturized;
152 BOOL _isMovableByWindowBackground;
154 BOOL _constrainsToUsableScreen;
155 unsigned _shadowStyle;
156 BOOL _showsResizeIndicator;
158 int _positioningMask;
159 CGRect _positioningScreenRect;
161 BOOL _isDocumentEdited;
162 BOOL _isDocumentSaving;
170 BOOL _handlingTrackingAreaEvent;
171 BOOL _restartHandlingTrackingAreaEvent;
172 CPArray _previousMouseEnteredStack;
173 CPArray _previousCursorUpdateStack;
174 CPArray _mouseEnteredStack;
175 CPArray _cursorUpdateStack;
176 CPArray _queuedEvents;
177 CPArray _trackingAreaViews;
178 id _activeCursorTrackingArea;
179 CPArray _queuedTrackingEvents;
180 CPView _leftMouseDownView;
181 CPView _rightMouseDownView;
186 BOOL _hasBecomeKeyWindow;
187 id <CPWindowDelegate> _delegate;
188 unsigned _implementedDelegateMethods;
192 BOOL _acceptsMouseMovedEvents;
193 BOOL _ignoresMouseEvents;
201 CPURL _representedURL;
203 CPSet _registeredDraggedTypes;
204 CPArray _registeredDraggedTypesArray;
208 BOOL _defaultButtonEnabled;
210 BOOL _autorecalculatesKeyViewLoop;
211 BOOL _keyViewLoopIsDirty;
213 BOOL _sharesChromeWithPlatformWindow;
217 DOMElement _DOMElement;
220 unsigned _autoresizingMask;
222 BOOL _isFullPlatformWindow;
223 _CPWindowFullPlatformWindowSession _fullPlatformWindowSession;
226 CPArray _childWindows;
227 CPWindowOrderingMode _childOrdering;
232 _CPWindowFrameAnimation _frameAnimation;
235 + (Class)_binderClassForBinding:(
CPString)aBinding
240 return [
super _binderClassForBinding:aBinding];
263 - (id)initWithContentRect:(CGRect)aContentRect styleMask:(
unsigned)aStyleMask
269 var windowViewClass = [[
self class] _windowViewClassForStyleMask:aStyleMask];
271 _frame = [windowViewClass frameRectForContentRect:aContentRect];
272 _constrainsToUsableScreen = YES;
284 _frame.size.height = MIN(768.0, visibleFrame.size.height);
285 _frame.size.width = MIN(1024.0, visibleFrame.size.width);
286 _frame.origin.x = (visibleFrame.size.width - _frame.size.width) / 2;
287 _frame.origin.y = (visibleFrame.size.height - _frame.size.height) / 2;
294 _isFullPlatformWindow = NO;
295 _registeredDraggedTypes = [CPSet set];
296 _registeredDraggedTypesArray = [];
297 _acceptsMouseMovedEvents = YES;
299 _hasBeenOrderedIn = NO;
310 _windowNumber = [CPApp._windows count];
311 CPApp._windows[_windowNumber] =
self;
313 _styleMask = aStyleMask;
315 [
self setLevel:CPNormalWindowLevel];
317 _handlingTrackingAreaEvent = NO;
318 _restartHandlingTrackingAreaEvent = NO;
319 _trackingAreaViews = [];
320 _previousMouseEnteredStack = [];
321 _previousCursorUpdateStack = [];
322 _mouseEnteredStack = [];
323 _cursorUpdateStack = [];
325 _queuedTrackingEvents = [];
326 _activeCursorTrackingArea = nil;
329 _windowView = [[windowViewClass alloc] initWithFrame:CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)) styleMask:aStyleMask];
331 [_windowView _setWindow:self];
332 [_windowView setNextResponder:self];
335 _minSize = [
self _calculateMinSizeForProposedSize:CGSizeMake(0.0, 0.0)];
336 _maxSize = CGSizeMake(1000000.0, 1000000.0);
343 _firstResponder =
self;
346 _DOMElement = document.createElement(
"div");
348 _DOMElement.style.position =
"absolute";
349 _DOMElement.style.visibility =
"visible";
350 _DOMElement.style.zIndex = 0;
352 if (![
self _sharesChromeWithPlatformWindow])
354 CPDOMDisplayServerSetStyleLeftTop(_DOMElement, NULL, CGRectGetMinX(_frame), CGRectGetMinY(_frame));
357 CPDOMDisplayServerSetStyleSize(_DOMElement, 1, 1);
358 CPDOMDisplayServerAppendChild(_DOMElement, _windowView._DOMElement);
363 [
self setHasShadow:aStyleMask !== CPBorderlessWindowMask];
368 _autorecalculatesKeyViewLoop = NO;
369 _defaultButtonEnabled = YES;
370 _keyViewLoopIsDirty = NO;
371 _hasBecomeKeyWindow = NO;
377 name:CPWindowResizeStyleGlobalChangeNotification
386 return _platformWindow;
402 _platformWindow = aPlatformWindow;
403 [_platformWindow _setTitle:_title window:self];
413 + (Class)_windowViewClassForStyleMask:(
unsigned)aStyleMask
416 return _CPHUDWindowView;
419 return _CPBorderlessWindowView;
422 return _CPDocModalWindowView;
424 else if (aStyleMask & _CPModalWindowMask)
425 return _CPModalWindowView;
427 return _CPStandardWindowView;
430 + (Class)_windowViewClassForFullPlatformWindowStyleMask:(
unsigned)aStyleMask
432 return _CPBorderlessBridgeWindowView;
439 if (_positioningScreenRect)
443 origin =
frame.origin;
445 if (actualScreenRect)
450 origin.x *= (actualScreenRect.size.width / _positioningScreenRect.size.width);
452 else if (_positioningMask & CPWindowPositionFlexibleLeft)
455 origin.x += actualScreenRect.size.width - _positioningScreenRect.size.width;
465 origin.y *= (actualScreenRect.size.height / _positioningScreenRect.size.height);
467 else if (_positioningMask & CPWindowPositionFlexibleTop)
470 origin.y += actualScreenRect.size.height - _positioningScreenRect.size.height;
484 if ([
self _hasKeyViewLoop:[_contentView subviews]])
486 var views = [
self _viewsSortedByPosition],
487 count = [views count];
491 for (var i = 1; i < count; ++i)
495 if ([view nextKeyView])
497 [_contentView setNextKeyView:view];
506 [
self _doRecalculateKeyViewLoop];
510 - (void)_setWindowView:(
CPView)aWindowView
512 if (_windowView === aWindowView)
515 var oldWindowView = _windowView;
517 _windowView = aWindowView;
521 [oldWindowView _setWindow:nil];
522 [oldWindowView noteToolbarChanged];
525 CPDOMDisplayServerRemoveChild(_DOMElement, oldWindowView._DOMElement);
532 CPDOMDisplayServerAppendChild(_DOMElement, _windowView._DOMElement);
535 var contentRect = [_contentView convertRect:[_contentView bounds] toView:nil];
539 [_windowView _setWindow:self];
540 [_windowView setNextResponder:self];
541 [_windowView addSubview:_contentView];
542 [_windowView setTitle:_title];
543 [_windowView noteToolbarChanged];
561 - (void)setFullPlatformWindow:(BOOL)shouldBeFullPlatformWindow
563 if (![_platformWindow supportsFullPlatformWindows])
566 shouldBeFullPlatformWindow = !!shouldBeFullPlatformWindow;
568 if (_isFullPlatformWindow === shouldBeFullPlatformWindow)
571 _isFullPlatformWindow = shouldBeFullPlatformWindow;
573 if (_isFullPlatformWindow)
575 _fullPlatformWindowSession = _CPWindowFullPlatformWindowSessionMake(_windowView, [
self contentRectForFrameRect:[
self frame]], [
self hasShadow], [
self level]);
577 var fullPlatformWindowViewClass = [[
self class] _windowViewClassForFullPlatformWindowStyleMask:_styleMask],
578 windowView = [[fullPlatformWindowViewClass alloc] initWithFrame:CGRectMakeZero() styleMask:_styleMask];
580 if (_platformWindow != [
CPPlatformWindow primaryPlatformWindow] && [_platformWindow _hasInitializeInstanceWithWindow])
581 [_platformWindow setContentRect:[
self frame]];
583 [
self _setWindowView:windowView];
585 [
self setLevel:CPBackgroundWindowLevel];
588 [
self setFrame:[_platformWindow visibleFrame]];
592 var windowView = _fullPlatformWindowSession.windowView;
594 [
self _setWindowView:windowView];
596 [
self setLevel:_fullPlatformWindowSession.level];
597 [
self setHasShadow:_fullPlatformWindowSession.hasShadow];
600 [
self setFrame:[windowView frameRectForContentRect:_fullPlatformWindowSession.contentRect]];
609 return _isFullPlatformWindow;
638 + (CGRect)frameRectForContentRect:(CGRect)aContentRect styleMask:(
unsigned)aStyleMask
640 return [[[
self class] _windowViewClassForStyleMask:aStyleMask] frameRectForContentRect:aContentRect];
647 - (CGRect)contentRectForFrameRect:(CGRect)aFrame
649 return [_windowView contentRectForFrameRect:aFrame];
657 - (CGRect)frameRectForContentRect:(CGRect)aContentRect
659 return [_windowView frameRectForContentRect:aContentRect];
667 return CGRectMakeCopy(_frame);
677 - (void)setFrame:(CGRect)aFrame display:(BOOL)shouldDisplay animate:(BOOL)shouldAnimate
679 [
self _setFrame:aFrame display:shouldDisplay animate:shouldAnimate constrainWidth:NO constrainHeight:YES];
682 - (void)_setFrame:(CGRect)aFrame
display:(BOOL)shouldDisplay animate:(BOOL)shouldAnimate constrainWidth:(BOOL)shouldConstrainWidth constrainHeight:(BOOL)shouldConstrainHeight
684 var
frame = CGRectMakeCopy(aFrame),
685 value = frame.origin.x,
686 delta = value - FLOOR(value);
689 frame.origin.x = value > 0.879 ? CEIL(value) : FLOOR(value);
691 value = frame.origin.y;
692 delta = value - FLOOR(value);
695 frame.origin.y = value > 0.879 ? CEIL(value) : FLOOR(value);
697 value = frame.size.width;
698 delta = value - FLOOR(value);
701 frame.size.width = value > 0.15 ? CEIL(value) : FLOOR(value);
703 value = frame.size.height;
704 delta = value - FLOOR(value);
707 frame.size.height = value > 0.15 ? CEIL(value) : FLOOR(value);
709 frame = [
self _constrainFrame:frame toUsableScreenWidth:shouldConstrainWidth andHeight:shouldConstrainHeight];
713 [_frameAnimation stopAnimation];
714 _frameAnimation = [[_CPWindowFrameAnimation alloc] initWithWindow:self targetFrame:frame];
716 [_frameAnimation startAnimation];
720 var origin = _frame.origin,
721 newOrigin = frame.origin,
722 originMoved = !CGPointEqualToPoint(origin, newOrigin);
726 delta = CGPointMake(newOrigin.x - origin.x, newOrigin.y - origin.y);
727 origin.x = newOrigin.x;
728 origin.y = newOrigin.y;
731 if (![
self _sharesChromeWithPlatformWindow])
733 CPDOMDisplayServerSetStyleLeftTop(_DOMElement, NULL, origin.x, origin.y);
739 [
self _setAttachedSheetFrameOrigin];
744 var size = _frame.size,
745 newSize = frame.size;
747 if (!CGSizeEqualToSize(size, newSize))
749 size.width = newSize.width;
750 size.height = newSize.height;
753 size = [
self _sendDelegateWindowWillResizeToSize:size];
755 [_windowView setFrameSize:size];
758 [_shadowView setNeedsLayout];
764 if ([
self _sharesChromeWithPlatformWindow])
765 [_platformWindow setContentRect:_frame];
768 [
self _moveChildWindows:delta];
771 if ([_platformWindow _canUpdateContentRect] && _isFullPlatformWindow && _platformWindow != [
CPPlatformWindow primaryPlatformWindow])
772 [_platformWindow setContentRect:aFrame];
779 - (CGRect)_constrainFrame:(CGRect)aFrame toUsableScreenWidth:(BOOL)constrainWidth andHeight:(BOOL)constrainHeight
781 var
frame = CGRectMakeCopy(aFrame);
783 if (!_constrainsToUsableScreen || !_isVisible)
786 var usableRect = [_platformWindow usableContentFrame];
791 frame.origin.x = MAX(frame.origin.x, usableRect.origin.x);
794 var maxX = MIN(CGRectGetMaxX(frame), CGRectGetMaxX(usableRect));
795 frame.origin.x = maxX - frame.size.width;
798 var usableWidth = CGRectGetWidth(usableRect);
800 if (CGRectGetWidth(frame) > usableWidth)
802 frame.origin.x = CGRectGetMinX(usableRect);
803 frame.size.width = MAX(usableWidth, _minSize.width);
810 frame.origin.y = MAX(frame.origin.y, usableRect.origin.y);
813 var maxY = MIN(CGRectGetMaxY(frame), CGRectGetMaxY(usableRect));
814 frame.origin.y = maxY - frame.size.height;
817 var usableHeight = CGRectGetHeight(usableRect);
819 if (CGRectGetHeight(frame) > usableHeight)
821 frame.origin.y = CGRectGetMinY(usableRect);
822 frame.size.height = MAX(usableHeight, _minSize.height);
836 - (CGRect)_constrainOriginOfFrame:(CGRect)aFrame
838 var
frame = CGRectMakeCopy(aFrame);
840 if (!_constrainsToUsableScreen || !_isVisible)
843 var usableRect = [_platformWindow usableContentFrame],
844 minimumSize = [_windowView _minimumResizeSize];
847 frame.origin.x = MAX(frame.origin.x, CGRectGetMinX(usableRect) + minimumSize.width - CGRectGetWidth(frame));
850 frame.origin.x = MIN(frame.origin.x, CGRectGetMaxX(usableRect) - minimumSize.width);
853 frame.origin.y = MAX(frame.origin.y, CGRectGetMinY(usableRect));
861 - (void)_moveChildWindows:(CGPoint)delta
863 [_childWindows enumerateObjectsUsingBlock:function(childWindow)
865 var origin = [childWindow frame].origin;
867 [childWindow setFrameOrigin:CGPointMake(origin.x + delta.x, origin.y + delta.y)];
877 - (void)setFrame:(CGRect)aFrame display:(BOOL)shouldDisplay
886 - (void)setFrame:(CGRect)aFrame
895 - (void)setFrameOrigin:(CGPoint)anOrigin
897 var
frame = [
self _constrainOriginOfFrame:CGRectMake(anOrigin.x, anOrigin.y, _frame.size.width, _frame.size.height)];
898 [
self _setFrame:frame display:YES animate:NO constrainWidth:NO constrainHeight:NO];
905 - (void)setFrameSize:(CGSize)aSize
907 [
self setFrame:CGRectMake(CGRectGetMinX(_frame), CGRectGetMinY(_frame), aSize.width, aSize.height)
display:YES
animate:NO];
914 - (void)orderFront:(
id)aSender
925 [_platformWindow _setShouldUpdateContentRect:NO];
929 [_parentView orderFront:self];
932 var wasVisible = _isVisible;
934 [_platformWindow orderFront:self];
935 [_platformWindow order:CPWindowAbove window:self relativeTo:nil];
939 [
self _setFrame:_frame display:YES animate:NO constrainWidth:YES constrainHeight:YES];
942 if (!
CPApp._keyWindow)
945 if ([
self isKeyWindow] && (_firstResponder ===
self || !_firstResponder))
946 [
self makeFirstResponder:_initialFirstResponder];
948 if (!
CPApp._mainWindow)
951 [_platformWindow _setShouldUpdateContentRect:YES];
958 - (void)_parentDidOrderInChild
965 - (void)_windowWillBeAddedToTheDOM
969 name:_CPPlatformWindowWillCloseNotification
978 - (void)_windowWillBeRemovedFromTheDOM
983 _hasBecomeKeyWindow = NO;
992 - (void)orderBack:(
id)aSender
1006 - (void)orderOut:(
id)aSender
1011 - (void)_orderOutRecursively:(BOOL)recursive
1019 [
self._parentView _detachSheetWindow];
1024 [_childWindows makeObjectsPerformSelector:@selector(_orderOutRecursively:) withObject:recursive];
1027 if ([
self _sharesChromeWithPlatformWindow])
1028 [_platformWindow orderOut:self];
1030 if (_isFullPlatformWindow && _platformWindow != [
CPPlatformWindow primaryPlatformWindow])
1031 [_platformWindow orderOut:self];
1033 [_platformWindow order:CPWindowOut window:self relativeTo:nil];
1037 [
self _updateMainAndKeyWindows];
1045 - (void)orderWindow:(CPWindowOrderingMode)orderingMode relativeTo:(
int)otherWindowNumber
1050 [_parentWindow removeChildWindow:self];
1053 [
self _orderOutRecursively:!_parentWindow];
1055 else if (orderingMode ===
CPWindowAbove && otherWindowNumber === 0)
1057 else if (orderingMode ===
CPWindowBelow && otherWindowNumber === 0)
1061 [_platformWindow order:orderingMode window:self relativeTo:CPApp._windows[otherWindowNumber]];
1069 - (void)setLevel:(
int)aLevel
1071 if (aLevel === _level)
1074 [_platformWindow moveWindow:self fromLevel:_level toLevel:aLevel];
1077 [_childWindows makeObjectsPerformSelector:@selector(setLevel:) withObject:_level];
1079 if ([
self _sharesChromeWithPlatformWindow])
1080 [_platformWindow setLevel:aLevel];
1104 + (void)setGlobalResizeStyle:(
int)aStyle
1117 + (void)setConstrainWindowsToUsableScreen:(BOOL)shouldConstrain
1130 - (void)_didReceiveResizeStyleChange:(
CPNotification)aNotification
1132 [_windowView setShowsResizeIndicator:_styleMask & CPResizableWindowMask];
1148 return _showsResizeIndicator;
1155 - (void)setShowsResizeIndicator:(BOOL)shouldShowResizeIndicator
1157 shouldShowResizeIndicator = !!shouldShowResizeIndicator;
1159 if (_showsResizeIndicator === shouldShowResizeIndicator)
1162 _showsResizeIndicator = shouldShowResizeIndicator;
1171 return [_windowView resizeIndicatorOffset];
1178 - (void)setResizeIndicatorOffset:(CGSize)anOffset
1180 [_windowView setResizeIndicatorOffset:anOffset];
1190 if (_contentView && _contentView !== aView)
1191 [_contentView removeFromSuperview];
1193 var
bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame));
1195 _contentView = aView;
1198 [_contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
1199 [_windowView addSubview:_contentView];
1205 if (_initialFirstResponder && _initialFirstResponder !==
self)
1206 _initialFirstResponder =
self;
1214 return _contentView;
1221 - (void)setAlphaValue:(
float)aValue
1223 [_windowView setAlphaValue:aValue];
1231 return [_windowView alphaValue];
1240 [_windowView setBackgroundColor:aColor];
1248 return [_windowView backgroundColor];
1258 - (void)setMinSize:(CGSize)aSize
1260 if (CGSizeEqualToSize(_minSize, aSize))
1263 _minSize = [
self _calculateMinSizeForProposedSize:aSize];
1265 var size = CGSizeMakeCopy([
self frame].size),
1266 needsFrameChange = NO;
1268 if (size.width < _minSize.width)
1270 size.width = _minSize.width;
1271 needsFrameChange = YES;
1274 if (size.height < _minSize.height)
1276 size.height = _minSize.height;
1277 needsFrameChange = YES;
1280 if (needsFrameChange)
1293 - (CGSize)_calculateMinSizeForProposedSize:(CGSize)proposedSize
1296 minHeight = CGRectGetHeight(_frame) - CGRectGetHeight(contentFrame);
1298 return CGSizeMake(MAX(proposedSize.width, 0), MAX(proposedSize.height, minHeight));
1307 - (void)setMaxSize:(CGSize)aSize
1309 if (CGSizeEqualToSize(_maxSize, aSize))
1312 _maxSize = CGSizeMakeCopy(aSize);
1314 var size = CGSizeMakeCopy([
self frame].size),
1315 needsFrameChange = NO;
1317 if (size.width > _maxSize.width)
1319 size.width = _maxSize.width;
1320 needsFrameChange = YES;
1323 if (size.height > _maxSize.height)
1325 size.height = _maxSize.height;
1326 needsFrameChange = YES;
1329 if (needsFrameChange)
1349 - (void)_updateShadow
1351 if ([
self _sharesChromeWithPlatformWindow])
1356 CPDOMDisplayServerRemoveChild(_DOMElement, _shadowView._DOMElement);
1361 [_platformWindow setHasShadow:_hasShadow];
1366 if (_hasShadow && !_shadowView)
1368 _shadowView = [[_CPShadowWindowView alloc] initWithFrame:CGRectMakeZero()];
1370 [_shadowView setWindowView:_windowView];
1371 [_shadowView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
1372 [_shadowView setNeedsLayout];
1375 CPDOMDisplayServerInsertBefore(_DOMElement, _shadowView._DOMElement, _windowView._DOMElement);
1378 else if (!_hasShadow && _shadowView)
1381 CPDOMDisplayServerRemoveChild(_DOMElement, _shadowView._DOMElement);
1391 - (void)setHasShadow:(BOOL)shouldHaveShadow
1393 if (_hasShadow === shouldHaveShadow)
1396 _hasShadow = shouldHaveShadow;
1398 [
self _updateShadow];
1412 - (void)setShadowStyle:(
unsigned)aStyle
1414 _shadowStyle = aStyle;
1425 if (_delegate === aDelegate)
1430 [defaultCenter removeObserver:_delegate name:CPWindowDidResignKeyNotification object:self];
1431 [defaultCenter removeObserver:_delegate name:CPWindowDidBecomeKeyNotification object:self];
1432 [defaultCenter removeObserver:_delegate name:CPWindowDidBecomeMainNotification object:self];
1433 [defaultCenter removeObserver:_delegate name:CPWindowDidResignMainNotification object:self];
1434 [defaultCenter removeObserver:_delegate name:CPWindowDidMoveNotification object:self];
1435 [defaultCenter removeObserver:_delegate name:CPWindowDidResizeNotification object:self];
1436 [defaultCenter removeObserver:_delegate name:CPWindowWillBeginSheetNotification object:self];
1437 [defaultCenter removeObserver:_delegate name:CPWindowDidEndSheetNotification object:self];
1438 [defaultCenter removeObserver:_delegate name:CPWindowDidMiniaturizeNotification object:self];
1439 [defaultCenter removeObserver:_delegate name:CPWindowDidDeminiaturizeNotification object:self];
1440 [defaultCenter removeObserver:_delegate name:CPWindowWillMiniaturizeNotification object:self];
1442 _delegate = aDelegate;
1443 _implementedDelegateMethods = 0;
1445 if ([_delegate respondsToSelector:
@selector(windowShouldClose:)])
1448 if ([_delegate respondsToSelector:
@selector(windowWillReturnUndoManager:)])
1451 if ([_delegate respondsToSelector:
@selector(windowWillClose:)])
1454 if ([_delegate respondsToSelector:
@selector(windowWillResize:toSize:)])
1457 if ([_delegate respondsToSelector:
@selector(windowDidResignKey:)])
1459 addObserver:_delegate
1460 selector:@selector(windowDidResignKey:)
1461 name:CPWindowDidResignKeyNotification
1464 if ([_delegate respondsToSelector:
@selector(windowDidBecomeKey:)])
1466 addObserver:_delegate
1467 selector:@selector(windowDidBecomeKey:)
1468 name:CPWindowDidBecomeKeyNotification
1471 if ([_delegate respondsToSelector:
@selector(windowDidBecomeMain:)])
1473 addObserver:_delegate
1474 selector:@selector(windowDidBecomeMain:)
1475 name:CPWindowDidBecomeMainNotification
1478 if ([_delegate respondsToSelector:
@selector(windowDidResignMain:)])
1480 addObserver:_delegate
1481 selector:@selector(windowDidResignMain:)
1482 name:CPWindowDidResignMainNotification
1485 if ([_delegate respondsToSelector:
@selector(windowDidMove:)])
1487 addObserver:_delegate
1488 selector:@selector(windowDidMove:)
1489 name:CPWindowDidMoveNotification
1492 if ([_delegate respondsToSelector:
@selector(windowDidResize:)])
1494 addObserver:_delegate
1495 selector:@selector(windowDidResize:)
1496 name:CPWindowDidResizeNotification
1499 if ([_delegate respondsToSelector:
@selector(windowWillBeginSheet:)])
1501 addObserver:_delegate
1502 selector:@selector(windowWillBeginSheet:)
1503 name:CPWindowWillBeginSheetNotification
1506 if ([_delegate respondsToSelector:
@selector(windowDidEndSheet:)])
1508 addObserver:_delegate
1509 selector:@selector(windowDidEndSheet:)
1510 name:CPWindowDidEndSheetNotification
1513 if ([_delegate respondsToSelector:
@selector(windowDidMiniaturize:)])
1515 addObserver:_delegate
1516 selector:@selector(windowDidMiniaturize:)
1517 name:CPWindowDidMiniaturizeNotification
1520 if ([_delegate respondsToSelector:
@selector(windowWillMiniaturize:)])
1522 addObserver:_delegate
1523 selector:@selector(windowWillMiniaturize:)
1524 name:CPWindowWillMiniaturizeNotification
1527 if ([_delegate respondsToSelector:
@selector(windowDidDeminiaturize:)])
1529 addObserver:_delegate
1530 selector:@selector(windowDidDeminiaturize:)
1531 name:CPWindowDidDeminiaturizeNotification
1549 _windowController = aWindowController;
1557 return _windowController;
1560 - (void)doCommandBySelector:(
SEL)aSelector
1562 if ([_delegate respondsToSelector:aSelector])
1563 [_delegate performSelector:aSelector];
1575 return _initialFirstResponder;
1578 - (void)setInitialFirstResponder:(
CPView)aView
1580 _initialFirstResponder = aView;
1583 - (void)_setupFirstResponder
1588 if (!_hasBecomeKeyWindow)
1590 if (_firstResponder ===
self)
1592 if (_initialFirstResponder)
1597 var view = [_contentView nextValidKeyView];
1607 if (_firstResponder)
1620 if (_firstResponder === aResponder)
1628 _firstResponder =
self;
1633 _firstResponder = aResponder;
1645 return _firstResponder;
1650 return _acceptsMouseMovedEvents;
1653 - (void)setAcceptsMouseMovedEvents:(BOOL)shouldAcceptMouseMovedEvents
1655 _acceptsMouseMovedEvents = shouldAcceptMouseMovedEvents;
1660 return _ignoresMouseEvents;
1663 - (void)setIgnoresMouseEvents:(BOOL)shouldIgnoreMouseEvents
1665 _ignoresMouseEvents = shouldIgnoreMouseEvents;
1668 - (void)_mouseExitedResizeRect
1690 [_windowView setTitle:aTitle];
1691 [_platformWindow _setTitle:_title window:self];
1697 - (void)setTitleWithRepresentedFilename:(
CPString)aFilePath
1717 return [_representedURL absoluteString];
1725 _representedURL = aURL;
1733 return _representedURL;
1747 - (void)setMovableByWindowBackground:(BOOL)shouldBeMovableByWindowBackground
1749 _isMovableByWindowBackground = shouldBeMovableByWindowBackground;
1757 return _isMovableByWindowBackground;
1764 - (void)setMovable:(BOOL)shouldBeMovable
1766 _isMovable = shouldBeMovable;
1782 if (_isFullPlatformWindow)
1785 var size = [
self frame].size,
1788 var origin = CGPointMake((containerSize.width - size.width) / 2.0, (containerSize.height - size.height) / 2.0);
1805 var type = [anEvent
type],
1823 [_windowView mouseDown:anEvent];
1827 [sheet makeKeyAndOrderFront:self];
1846 return [CPApp activateIgnoringOtherApps:YES];
1885 else if ([anEvent charactersIgnoringModifiers] ==
CPEscapeFunctionKey && [
self _processKeyboardUIKey:anEvent])
1897 keyEquivalent = [defaultButton keyEquivalent],
1898 modifierMask = [defaultButton keyEquivalentModifierMask];
1900 if ([anEvent _triggersKeyEquivalent:keyEquivalent withModifierMask:modifierMask])
1907 return [[_windowView hitTest:point] scrollWheel:anEvent];
1911 var hitTestedView = _leftMouseDownView,
1912 selector = type ==
CPRightMouseUp ?
@selector(rightMouseUp:) :
@selector(mouseUp:);
1915 hitTestedView = [_windowView hitTest:point];
1917 [hitTestedView performSelector:selector withObject:anEvent];
1919 _leftMouseDownView = nil;
1922 [
self _flushTrackingEventQueueForMouseAt:point];
1929 _leftMouseDownView = [_windowView hitTest:point];
1934 var keyWindow = [CPApp keyWindow];
1940 [CPApp activateIgnoringOtherApps:YES];
1942 var theWindow = [anEvent window],
1943 selector = type ==
CPRightMouseDown ?
@selector(rightMouseDown:) :
@selector(mouseDown:);
1946 return [_leftMouseDownView performSelector:selector withObject:anEvent];
1952 if ([_leftMouseDownView acceptsFirstMouse:anEvent])
1953 return [_leftMouseDownView performSelector:selector withObject:anEvent];
1961 [
self _handleTrackingAreaEvent:anEvent];
1964 if (!_leftMouseDownView)
1965 return [[_windowView hitTest:point] mouseDragged:anEvent];
1971 selector =
@selector(rightMouseDragged:)
1972 if (![_leftMouseDownView respondsToSelector:selector])
1977 selector =
@selector(mouseDragged:)
1979 return [_leftMouseDownView performSelector:selector withObject:anEvent];
1984 if (!_acceptsMouseMovedEvents || sheet)
1987 [
self _handleTrackingAreaEvent:anEvent];
1996 return _windowNumber;
2006 CPApp._keyWindow =
self;
2008 if (_firstResponder !==
self && [_firstResponder respondsToSelector:
@selector(
becomeKeyWindow)])
2011 if (!_hasBecomeKeyWindow)
2015 if (![
self _hasKeyViewLoop:[_contentView subviews]])
2019 [
self _setupFirstResponder];
2020 _hasBecomeKeyWindow = YES;
2021 _platformWindow._currentKeyWindow =
self;
2023 [_windowView noteKeyWindowStateChanged];
2024 [_contentView _notifyWindowDidBecomeKey];
2054 return [CPApp keyWindow] ==
self;
2061 - (void)makeKeyAndOrderFront:(
id)aSender
2077 [[CPApp keyWindow] resignKeyWindow];
2086 if (_firstResponder !==
self && [_firstResponder respondsToSelector:
@selector(
resignKeyWindow)])
2089 if (
CPApp._keyWindow ===
self)
2090 CPApp._keyWindow = nil;
2092 _platformWindow._currentKeyWindow = nil;
2093 [_windowView noteKeyWindowStateChanged];
2094 [_contentView _notifyWindowDidResignKey];
2111 - (void)dragImage:(
CPImage)anImage at:(CGPoint)imageLocation offset:(CGSize)mouseOffset event:(
CPEvent)anEvent pasteboard:(
CPPasteboard)aPasteboard source:(
id)aSourceObject slideBack:(BOOL)slideBack
2116 - (void)_noteRegisteredDraggedTypes:(CPSet)pasteboardTypes
2118 if (!pasteboardTypes)
2121 if (!_inclusiveRegisteredDraggedTypes)
2124 [_inclusiveRegisteredDraggedTypes unionSet:pasteboardTypes];
2127 - (void)_noteUnregisteredDraggedTypes:(CPSet)pasteboardTypes
2129 if (!pasteboardTypes)
2132 [_inclusiveRegisteredDraggedTypes minusSet:pasteboardTypes];
2134 if ([_inclusiveRegisteredDraggedTypes count] === 0)
2135 _inclusiveRegisteredDraggedTypes = nil;
2148 - (void)dragView:(
CPView)aView at:(CGPoint)viewLocation offset:(CGSize)mouseOffset event:(
CPEvent)anEvent pasteboard:(
CPPasteboard)aPasteboard source:(
id)aSourceObject slideBack:(BOOL)slideBack
2157 - (void)registerForDraggedTypes:(CPArray)pasteboardTypes
2159 if (!pasteboardTypes)
2162 [
self _noteUnregisteredDraggedTypes:_registeredDraggedTypes];
2163 [_registeredDraggedTypes addObjectsFromArray:pasteboardTypes];
2164 [
self _noteRegisteredDraggedTypes:_registeredDraggedTypes];
2166 _registeredDraggedTypesArray = nil;
2175 if (!_registeredDraggedTypesArray)
2176 _registeredDraggedTypesArray = [_registeredDraggedTypes allObjects];
2178 return _registeredDraggedTypesArray;
2186 [
self _noteUnregisteredDraggedTypes:_registeredDraggedTypes];
2188 _registeredDraggedTypes = [CPSet set];
2189 _registeredDraggedTypesArray = [];
2198 - (void)setDocumentEdited:(BOOL)isDocumentEdited
2205 [
CPMenu _setMenuBarIconImageAlphaValue:_isDocumentEdited ? 0.5 : 1.0];
2207 [_windowView setDocumentEdited:isDocumentEdited];
2215 return _isDocumentEdited;
2218 - (void)setDocumentSaving:(BOOL)isDocumentSaving
2225 [
self _synchronizeSaveMenuWithDocumentSaving];
2227 [_windowView windowDidChangeDocumentSaving];
2232 return _isDocumentSaving;
2236 - (void)_synchronizeSaveMenuWithDocumentSaving
2241 var mainMenu = [CPApp mainMenu],
2242 index = [mainMenu indexOfItemWithTitle:_isDocumentSaving ? @"Save" : @"Saving..."];
2247 var item = [mainMenu itemAtIndex:index];
2249 if (_isDocumentSaving)
2253 [item setTitle:@"Saving..."];
2255 [item setEnabled:NO];
2259 [item setTitle:@"Save"];
2260 [item setImage:CPWindowSaveImage];
2261 [item setEnabled:YES];
2271 - (void)performMiniaturize:(
id)aSender
2281 - (void)miniaturize:(
id)sender
2287 [
self _updateMainAndKeyWindows];
2291 _isMiniaturized = YES;
2297 - (void)deminiaturize:(
id)sender
2303 _isMiniaturized = NO;
2311 return _isMiniaturized;
2320 - (void)performClose:(
id)aSender
2327 var
event = [CPApp currentEvent];
2338 if ([
self _delegateRespondsToWindowShouldClose])
2340 if (![
self _sendDelegateWindowShouldClose])
2343 else if ([
self respondsToSelector:
@selector(windowShouldClose:)])
2345 if (![
self windowShouldClose:
self])
2349 var documents = [_windowController documents];
2351 if ([documents count])
2353 var index = [documents indexOfObject:[_windowController document]];
2355 [documents[index] shouldCloseWindowController:_windowController
2357 shouldCloseSelector:@selector(_windowControllerContainingDocument:shouldClose:contextInfo:)
2358 contextInfo:{documents:[documents copy], visited:0, index:index}];
2364 - (void)_windowControllerContainingDocument:(
CPDocument)document shouldClose:(BOOL)shouldClose contextInfo:(Object)context
2370 count = [documents count],
2371 visited = ++context.visited,
2372 index = ++context.index % count;
2374 [document removeWindowController:windowController];
2376 if (visited < count)
2378 [windowController setDocument:documents[index]];
2380 [documents[index] shouldCloseWindowController:_windowController
2382 shouldCloseSelector:@selector(_windowControllerContainingDocument:shouldClose:contextInfo:)
2383 contextInfo:context];
2396 [
self _sendDelegateWindowWillClose];
2400 [_parentWindow removeChildWindow:self];
2401 [
self _orderOutRecursively:NO];
2402 [
self _detachFromChildrenClosing:!_parentWindow];
2405 - (void)_detachFromChildrenClosing:(BOOL)shouldCloseChildren
2408 [_childWindows enumerateObjectsUsingBlock:function(child)
2410 [child setParentWindow:nil];
2414 if (shouldCloseChildren)
2416 [_childWindows enumerateObjectsUsingBlock:function(child)
2420 [child _orderOutRecursively:NO];
2421 [child _detachFromChildrenClosing:![child parentWindow]];
2435 return [CPApp mainWindow] ===
self;
2459 [_parentView makeMainWindow];
2466 [[CPApp mainWindow] resignMainWindow];
2475 CPApp._mainWindow =
self;
2476 _platformWindow._currentMainWindow =
self;
2478 [
self _synchronizeSaveMenuWithDocumentSaving];
2480 [_windowView noteMainWindowStateChanged];
2496 if (
CPApp._mainWindow ===
self)
2497 CPApp._mainWindow = nil;
2499 _platformWindow._currentMainWindow = nil;
2500 [_windowView noteMainWindowStateChanged];
2503 - (void)_updateMainAndKeyWindows
2505 var allWindows = [CPApp orderedWindows],
2506 windowCount = [allWindows count];
2510 var keyWindow = [CPApp keyWindow];
2514 [keyWindow makeKeyWindow];
2517 var mainMenu = [CPApp mainMenu],
2518 menuBarClass = objj_getClass(
"_CPMenuBarWindow"),
2521 for (var i = 0; i < windowCount; i++)
2523 var currentWindow = allWindows[i];
2525 if ([currentWindow isKindOfClass:menuBarClass])
2526 menuWindow = currentWindow;
2528 if (currentWindow ===
self || currentWindow === menuWindow)
2533 [currentWindow makeKeyWindow];
2538 if (![
CPApp keyWindow])
2539 [menuWindow makeKeyWindow];
2545 var mainWindow = [CPApp mainWindow];
2549 [mainWindow makeMainWindow];
2552 var mainMenu = [CPApp mainMenu],
2553 menuBarClass = objj_getClass(
"_CPMenuBarWindow"),
2556 for (var i = 0; i < windowCount; i++)
2558 var currentWindow = allWindows[i];
2560 if ([currentWindow isKindOfClass:menuBarClass])
2561 menuWindow = currentWindow;
2563 if (currentWindow ===
self || currentWindow === menuWindow)
2566 if ([currentWindow
isVisible] && [currentWindow canBecomeMainWindow])
2568 [currentWindow makeMainWindow];
2591 if (_toolbar === aToolbar)
2595 [[aToolbar _window] setToolbar:nil];
2598 [_toolbar _setWindow:nil];
2600 _toolbar = aToolbar;
2603 [_toolbar _setWindow:self];
2605 [
self _noteToolbarChanged];
2608 - (void)toggleToolbarShown:(
id)aSender
2615 - (void)_noteToolbarChanged
2617 var
frame = CGRectMakeCopy([
self frame]),
2620 [_windowView noteToolbarChanged];
2622 if (_isFullPlatformWindow)
2623 newFrame = [_platformWindow visibleFrame];
2626 newFrame = CGRectMakeCopy([
self frame]);
2628 newFrame.origin = frame.origin;
2645 return _childWindows;
2648 - (void)addChildWindow:(
CPWindow)childWindow ordered:(CPWindowOrderingMode)orderingMode
2651 if ([_childWindows indexOfObject:childWindow] >= 0)
2655 [_childWindows addObject:childWindow];
2658 reason:_cmd + @" unrecognized ordering mode " + orderingMode];
2661 [childWindow _setChildOrdering:orderingMode];
2670 var index = [_childWindows indexOfObject:childWindow];
2675 [_childWindows removeObjectAtIndex:index];
2681 return _parentWindow;
2689 - (BOOL)_hasAncestorWindow:(
CPWindow)anAncestor
2691 if (!_parentWindow || !anAncestor)
2694 if (anAncestor === _parentWindow)
2697 return [_parentWindow _hasAncestorWindow:anAncestor];
2705 - (void)_setFrame:(CGRect)aFrame
delegate:(id)
delegate duration:(
int)duration curve:(CPAnimationCurve)curve
2707 [_frameAnimation stopAnimation];
2708 _frameAnimation = [[_CPWindowFrameAnimation alloc] initWithWindow:self targetFrame:aFrame];
2709 [_frameAnimation setDelegate:delegate];
2710 [_frameAnimation setAnimationCurve:curve];
2711 [_frameAnimation setDuration:duration];
2712 [_frameAnimation startAnimation];
2715 - (CPTimeInterval)animationResizeTime:(CGRect)newWindowFrame
2720 - (void)_setAttachedSheetFrameOrigin
2724 contentRect = [_contentView frame],
2725 sheetFrame = CGRectMakeCopy([attachedSheet
frame]);
2727 sheetFrame.origin.y = CGRectGetMinY(_frame) + CGRectGetMinY(contentRect);
2728 sheetFrame.origin.x = CGRectGetMinX(_frame) + FLOOR((CGRectGetWidth(_frame) - CGRectGetWidth(sheetFrame)) / 2.0);
2730 [attachedSheet setFrame:sheetFrame display:YES animate:NO];
2733 - (void)_previousSheetIsClosedNotification:(
CPNotification)aNotification
2737 var sheet = _sheetContext[@"nextSheet"],
2738 modalDelegate = _sheetContext[@"nextModalDelegate"],
2739 endSelector = _sheetContext[@"nextEndSelector"],
2740 contextInfo = _sheetContext[@"nextContextInfo"];
2743 setTimeout(
function()
2745 [sheet._windowView _enableSheet:YES inWindow:self];
2746 [
self _attachSheet:sheet modalDelegate:modalDelegate didEndSelector:endSelector contextInfo:contextInfo];
2753 - (
void)_attachSheet:(
CPWindow)aSheet modalDelegate:(
id)aModalDelegate
2754 didEndSelector:(SEL)didEndSelector contextInfo:(
id)contextInfo
2759 if (_sheetContext[
@"isClosing"])
2762 _sheetContext[@"nextSheet"] = aSheet;
2763 _sheetContext[@"nextModalDelegate"] = aModalDelegate;
2764 _sheetContext[@"nextEndSelector"] = didEndSelector;
2765 _sheetContext[@"nextContextInfo"] = contextInfo;
2773 reason:@"The target window of beginSheet: already has a sheet, did you forget orderOut: ?"];
2780 "modalDelegate": aModalDelegate,
2781 "endSelector": didEndSelector,
2782 "contextInfo": contextInfo,
2786 "savedConstrains": aSheet._constrainsToUsableScreen
2790 aSheet._constrainsToUsableScreen = NO;
2806 var
delegate = _sheetContext["modalDelegate"],
2807 endSelector = _sheetContext["endSelector"];
2811 if (delegate && endSelector)
2813 if (_sheetContext[
"isAttached"])
2814 delegate.isa.objj_msgSend3(delegate, endSelector, _sheetContext[
"sheet"], _sheetContext[
"returnCode"],
2815 _sheetContext[
"contextInfo"]);
2817 _sheetContext["deferDidEndSelector"] = YES;
2825 - (void)_detachSheetWindow
2827 if (_sheetContext[
"isClosing"])
2830 _sheetContext["isAttached"] = NO;
2831 _sheetContext["isClosing"] = YES;
2832 _sheetContext["opened"] = NO;
2846 - (void)_cleanupSheetWindow
2848 var sheet = _sheetContext["sheet"],
2849 deferDidEnd = _sheetContext["deferDidEndSelector"];
2855 [
self _removeClipForSheet:sheet];
2858 sheet._isSheet = NO;
2859 [sheet._windowView _enableSheet:NO inWindow:self];
2860 sheet._constrainsToUsableScreen = _sheetContext["savedConstrains"];
2863 [sheet orderOut:self];
2869 var
delegate = _sheetContext["modalDelegate"],
2870 selector = _sheetContext["endSelector"],
2871 returnCode = _sheetContext["returnCode"],
2872 contextInfo = _sheetContext["contextInfo"];
2875 _sheetContext = nil;
2876 sheet._parentView = nil;
2878 if (delegate != null)
2879 delegate.isa.objj_msgSend3(delegate, selector, sheet, returnCode, contextInfo);
2883 _sheetContext = nil;
2884 sheet._parentView = nil;
2889 - (void)animationDidEnd:(
id)anim
2891 var sheet = _sheetContext["sheet"];
2893 if (anim._window != sheet)
2903 - (void)_sheetShouldAnimateIn:(
CPTimer)timer
2906 if (_sheetContext[
"isOpening"] || _sheetContext[
"isClosing"])
2909 var sheet = _sheetContext["sheet"];
2910 sheet._isSheet = YES;
2911 sheet._parentView =
self;
2917 sheet._isModal = NO;
2919 if ([
CPApp modalWindow] ===
self)
2921 [CPApp runModalForWindow:sheet];
2922 sheet._isModal = YES;
2927 var sheetFrame = [sheet frame],
2928 sheetShadowFrame = sheet._hasShadow ? [sheet._shadowView frame] : sheetFrame,
2930 originX = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width) / 2),
2931 startFrame = CGRectMake(originX, -sheetShadowFrame.size.height, sheetFrame.size.width, sheetFrame.size.height),
2932 endY = -1 + [_windowView bodyOffset] - [[
self contentView]
frame].origin.y,
2933 endFrame = CGRectMake(originX, endY, sheetFrame.size.width, sheetFrame.size.height);
2937 endY += [[_toolbar _toolbarView] frameSize].height;
2938 endFrame = CGRectMake(originX, endY, sheetFrame.size.width, sheetFrame.size.height);
2942 [sheet setFrameOrigin:CGPointMake(0, -13000)];
2945 [sheet orderFront:self];
2946 [
self _clipSheet:sheet];
2948 [sheet setFrame:startFrame display:YES animate:NO];
2950 _sheetContext["opened"] = YES;
2951 _sheetContext["shouldClose"] = NO;
2952 _sheetContext["isOpening"] = YES;
2954 [sheet _setFrame:endFrame delegate:self duration:[
self animationResizeTime:endFrame] curve:CPAnimationEaseOut];
2957 - (void)_sheetShouldAnimateOut:(
CPTimer)timer
2959 if (_sheetContext[
"isOpening"])
2962 _sheetContext["shouldClose"] = YES;
2969 var sheet = _sheetContext["sheet"],
2970 sheetFrame = [sheet frame],
2971 fullHeight = sheet._hasShadow ? [sheet._shadowView frame].size.height : sheetFrame.size.height,
2972 endFrame = CGRectMakeCopy(sheetFrame),
2976 sheet._constrainsToUsableScreen = NO;
2978 [sheet setFrameOrigin:CGPointMake(sheetFrame.origin.x, sheetFrame.origin.y - contentOrigin.y)];
2979 [
self _clipSheet:sheet];
2981 endFrame.origin.y = -fullHeight;
2982 [sheet _setFrame:endFrame delegate:self duration:[
self animationResizeTime:endFrame] curve:CPAnimationEaseIn];
2986 [
self _sheetAnimationDidEnd:nil];
2990 - (void)_sheetAnimationDidEnd:(
CPTimer)timer
2992 var sheet = _sheetContext["sheet"];
2994 _sheetContext["isOpening"] = NO;
2995 _sheetContext["isClosing"] = NO;
2997 if (_sheetContext[
"opened"] === YES)
2999 var sheetFrame = [sheet frame],
3000 sheetOrigin = CGPointMakeCopy(sheetFrame.origin);
3002 [
self _removeClipForSheet:sheet];
3003 [sheet setFrameOrigin:CGPointMake(sheetOrigin.x, [sheet frame].origin.y + sheetOrigin.y)];
3006 if (_sheetContext[
"shouldClose"] === YES)
3007 [
self _detachSheetWindow];
3009 [sheet makeKeyWindow];
3014 [
self _cleanupSheetWindow];
3018 - (void)_clipSheet:(
CPWindow)aSheet
3020 var clipRect = [_platformWindow contentBounds];
3023 [[_platformWindow layerAtLevel:_level create:NO] clipWindow:aSheet toRect:clipRect];
3026 - (void)_removeClipForSheet:(
CPWindow)aSheet
3028 [[_platformWindow layerAtLevel:_level create:NO] removeClipForWindow:aSheet];
3036 if (_sheetContext === nil)
3039 return _sheetContext["sheet"];
3073 return [_contentView performKeyEquivalent:anEvent];
3080 if ([anEvent _couldBeKeyEquivalent] && [
self performKeyEquivalent:anEvent])
3088 if (![
self _processKeyboardUIKey:anEvent])
3100 - (BOOL)_processKeyboardUIKey:(
CPEvent)anEvent
3109 if ([selectors count] <= 0)
3112 var selector = [selectors objectAtIndex:0];
3117 - (void)_dirtyKeyViewLoop
3119 if (_autorecalculatesKeyViewLoop)
3120 _keyViewLoopIsDirty = YES;
3128 - (BOOL)_hasKeyViewLoop:(CPArray)theViews
3131 count = [theViews count];
3133 for (i = 0; i < count; ++i)
3135 var view = theViews[i];
3137 if ([view nextKeyView] || [view previousKeyView])
3141 for (i = 0; i < count; ++i)
3143 var subviews = [theViews[i] subviews];
3145 if ([subviews count] && [
self _hasKeyViewLoop:subviews])
3161 [
self _doRecalculateKeyViewLoop];
3164 - (CPArray)_viewsSortedByPosition
3166 var views = [CPArray arrayWithObject:_contentView];
3168 views = views.concat([
self _subviewsSortedByPosition:[_contentView subviews]]);
3173 - (CPArray)_subviewsSortedByPosition:(CPArray)theSubviews
3181 theSubviews = [theSubviews copy];
3182 [theSubviews sortUsingFunction:keyViewComparator context:nil];
3184 var sortedViews = [];
3186 for (var i = 0, count = [theSubviews count]; i < count; ++i)
3188 var view = theSubviews[i],
3189 subviews = [view subviews];
3191 sortedViews.push(view);
3193 if ([subviews count])
3194 sortedViews = sortedViews.concat([
self _subviewsSortedByPosition:subviews]);
3200 - (void)_doRecalculateKeyViewLoop
3202 var views = [
self _viewsSortedByPosition];
3204 for (var index = 0, count = [views count]; index < count; ++index)
3205 [views[index] setNextKeyView:views[(index + 1) % count]];
3207 _keyViewLoopIsDirty = NO;
3210 - (void)setAutorecalculatesKeyViewLoop:(BOOL)shouldRecalculate
3212 if (_autorecalculatesKeyViewLoop === shouldRecalculate)
3215 _autorecalculatesKeyViewLoop = shouldRecalculate;
3220 return _autorecalculatesKeyViewLoop;
3223 - (void)selectNextKeyView:(
id)sender
3225 if (_keyViewLoopIsDirty)
3226 [
self _doRecalculateKeyViewLoop];
3228 var nextValidKeyView = nil;
3230 if ([_firstResponder isKindOfClass:[
CPView class]])
3231 nextValidKeyView = [_firstResponder nextValidKeyView];
3233 if (!nextValidKeyView)
3236 nextValidKeyView = _initialFirstResponder;
3238 nextValidKeyView = [_initialFirstResponder nextValidKeyView];
3241 if (nextValidKeyView)
3245 - (void)selectPreviousKeyView:(
id)sender
3247 if (_keyViewLoopIsDirty)
3248 [
self _doRecalculateKeyViewLoop];
3250 var previousValidKeyView = nil;
3252 if ([_firstResponder isKindOfClass:[
CPView class]])
3253 previousValidKeyView = [_firstResponder previousValidKeyView];
3255 if (!previousValidKeyView)
3258 previousValidKeyView = _initialFirstResponder;
3260 previousValidKeyView = [_initialFirstResponder previousValidKeyView];
3263 if (previousValidKeyView)
3267 - (void)selectKeyViewFollowingView:(
CPView)aView
3269 if (_keyViewLoopIsDirty)
3270 [
self _doRecalculateKeyViewLoop];
3274 if ([nextValidKeyView isKindOfClass:[
CPView class]])
3278 - (void)selectKeyViewPrecedingView:(
CPView)aView
3280 if (_keyViewLoopIsDirty)
3281 [
self _doRecalculateKeyViewLoop];
3285 if ([previousValidKeyView isKindOfClass:[
CPView class]])
3316 if (_defaultButton === aButton)
3320 [_defaultButton setKeyEquivalent:nil];
3322 _defaultButton = aButton;
3325 [_defaultButton setKeyEquivalent:CPCarriageReturnCharacter];
3333 return _defaultButton;
3341 _defaultButtonEnabled = YES;
3358 _defaultButtonEnabled = NO;
3378 - (void)_didReceivePlatformWindowWillCloseNotification:(
CPNotification)aNotification
3380 if ([aNotification
object] != _platformWindow)
3390 var lhsBounds = [lhs convertRect:[lhs bounds] toView:nil],
3391 rhsBounds = [rhs convertRect:[rhs bounds] toView:nil],
3392 lhsY = CGRectGetMinY(lhsBounds),
3393 rhsY = CGRectGetMinY(rhsBounds),
3394 lhsX = CGRectGetMinX(lhsBounds),
3395 rhsX = CGRectGetMinX(rhsBounds),
3396 intersectsVertically = MIN(CGRectGetMaxY(lhsBounds), CGRectGetMaxY(rhsBounds)) - MAX(lhsY, rhsY);
3399 if (intersectsVertically > 0)
3426 - (BOOL)_delegateRespondsToWindowWillUndoManager
3435 - (BOOL)_delegateRespondsToWindowShouldClose
3444 - (BOOL)_sendDelegateWindowShouldClose
3449 return [_delegate windowShouldClose:self];
3456 - (BOOL)_sendDelegateWindowWillReturnUndoManager
3461 return [_delegate windowWillReturnUndoManager:self];
3468 - (void)_sendDelegateWindowWillClose
3473 [_delegate windowWillClose:self];
3480 - (CGSize)_sendDelegateWindowWillResizeToSize:(CGSize)aSize
3485 return [_delegate windowWillResize:self toSize:aSize];
3496 - (void)resizeWithOldPlatformWindowSize:(CGSize)aSize
3499 return [
self setFrame:[_platformWindow visibleFrame]];
3505 var
frame = [_platformWindow contentBounds],
3506 newFrame = CGRectMakeCopy(_frame),
3507 dX = (CGRectGetWidth(
frame) - aSize.width) /
3509 dY = (CGRectGetHeight(
frame) - aSize.height) /
3513 newFrame.origin.x += dX;
3516 newFrame.size.width += dX;
3519 newFrame.origin.y += dY;
3522 newFrame.size.height += dY;
3524 [
self _setFrame:newFrame display:YES animate:NO constrainWidth:YES constrainHeight:YES];
3530 - (void)setAutoresizingMask:(
unsigned)anAutoresizingMask
3532 _autoresizingMask = anAutoresizingMask;
3540 return _autoresizingMask;
3546 - (CGPoint)convertBaseToGlobal:(CGPoint)aPoint
3554 - (CGPoint)convertGlobalToBase:(CGPoint)aPoint
3562 - (CGPoint)convertBaseToPlatformWindow:(CGPoint)aPoint
3564 if ([
self _sharesChromeWithPlatformWindow])
3565 return CGPointMakeCopy(aPoint);
3567 var origin = [
self frame].origin;
3569 return CGPointMake(aPoint.x + origin.x, aPoint.y + origin.y);
3575 - (CGPoint)convertPlatformWindowToBase:(CGPoint)aPoint
3577 if ([
self _sharesChromeWithPlatformWindow])
3578 return CGPointMakeCopy(aPoint);
3580 var origin = [
self frame].origin;
3582 return CGPointMake(aPoint.x - origin.x, aPoint.y - origin.y);
3585 - (CGPoint)convertScreenToBase:(CGPoint)aPoint
3590 - (CGPoint)convertBaseToScreen:(CGPoint)aPoint
3595 - (void)_setSharesChromeWithPlatformWindow:(BOOL)shouldShareFrameWithPlatformWindow
3598 if (shouldShareFrameWithPlatformWindow && [
CPPlatform isBrowser])
3601 _sharesChromeWithPlatformWindow = shouldShareFrameWithPlatformWindow;
3603 [
self _updateShadow];
3606 - (BOOL)_sharesChromeWithPlatformWindow
3608 return _sharesChromeWithPlatformWindow;
3619 return _undoManager;
3622 var documentUndoManager = [[_windowController document] undoManager];
3624 if (documentUndoManager)
3625 return documentUndoManager;
3628 if ([
self _delegateRespondsToWindowWillUndoManager])
3629 return [
self _sendDelegateWindowWillReturnUndoManager];
3635 return _undoManager;
3642 - (void)undo:(
id)aSender
3651 - (void)redo:(
id)aSender
3656 - (BOOL)containsPoint:(CGPoint)aPoint
3658 return CGRectContainsPoint(_frame, aPoint);
3662 - (BOOL)_isValidMousePoint:(CGPoint)aPoint
3668 return CGRectContainsPoint(mouseFrame, aPoint);
3678 - (void)setFullBridge:(BOOL)shouldBeFullBridge
3680 _CPReportLenientDeprecation([
self class], _cmd,
@selector(setFullPlatformWindow:));
3697 - (CGPoint)convertBaseToBridge:(CGPoint)aPoint
3705 - (CGPoint)convertBridgeToBase:(CGPoint)aPoint
3714 return fromValue + (toValue - fromValue) * progress;
3718 @implementation _CPWindowFrameAnimation :
CPAnimation 3723 CGRect _targetFrame;
3726 - (id)initWithWindow:(
CPWindow)aWindow targetFrame:(CGRect)aTargetFrame
3728 self = [
super initWithDuration:[aWindow
animationResizeTime:aTargetFrame] animationCurve:CPAnimationLinear];
3734 _targetFrame = CGRectMakeCopy(aTargetFrame);
3735 _startFrame = CGRectMakeCopy([_window
frame]);
3741 - (void)startAnimation
3743 [
super startAnimation];
3745 _window._isAnimating = YES;
3748 - (void)setCurrentProgress:(
float)aProgress
3750 [
super setCurrentProgress:aProgress];
3752 var value = [
self currentValue];
3755 _window._isAnimating = NO;
3757 var newFrame = CGRectMake(
3758 interpolate(CGRectGetMinX(_startFrame), CGRectGetMinX(_targetFrame), value),
3759 interpolate(CGRectGetMinY(_startFrame), CGRectGetMinY(_targetFrame), value),
3760 interpolate(CGRectGetWidth(_startFrame), CGRectGetWidth(_targetFrame), value),
3761 interpolate(CGRectGetHeight(_startFrame), CGRectGetHeight(_targetFrame), value));
3763 [_window setFrame:newFrame display:YES animate:NO];
3772 - (id)_dragHitTest:(CGPoint)aPoint pasteboard:(
CPPasteboard)aPasteboard
3775 if (!_inclusiveRegisteredDraggedTypes)
3785 hitView = [_windowView hitTest:adjustedPoint];
3788 hitView = [hitView superview];
3803 - (void)_addTrackingAreaView:(
CPView)aView
3805 var trackingAreas = [aView trackingAreas];
3807 for (var i = 0; i < trackingAreas.length; i++)
3808 [
self _addTrackingArea:trackingAreas[i]];
3811 - (void)_removeTrackingAreaView:(
CPView)aView
3813 var trackingAreas = [aView trackingAreas];
3815 for (var i = 0; i < trackingAreas.length; i++)
3816 [
self _removeTrackingArea:trackingAreas[i]];
3821 var trackingAreaView = [trackingArea view];
3823 if (![_trackingAreaViews containsObjectIdenticalTo:trackingAreaView])
3824 [_trackingAreaViews addObject:trackingAreaView];
3829 [
self _insertTrackingArea:trackingArea assumeInside:([trackingArea options] & CPTrackingAssumeInside)];
3836 [
self _purgeTrackingArea:trackingArea];
3838 var trackingAreaView = [trackingArea view];
3840 [_trackingAreaViews removeObjectIdenticalTo:trackingAreaView];
3843 - (void)_insertTrackingArea:(
CPTrackingArea)trackingArea assumeInside:(BOOL)assumeInside
3845 if (_handlingTrackingAreaEvent)
3846 _restartHandlingTrackingAreaEvent = YES;
3850 if (_handlingTrackingAreaEvent)
3851 [_mouseEnteredStack addObject:trackingArea];
3853 [_previousMouseEnteredStack addObject:trackingArea];
3859 if (_handlingTrackingAreaEvent)
3861 [_mouseEnteredStack removeObjectIdenticalTo:trackingArea];
3863 var i = _queuedEvents.length;
3866 if ([_queuedEvents[i] trackingArea] === trackingArea)
3867 [_queuedEvents removeObjectAtIndex:i];
3869 _cursorUpdateStack = [];
3870 _activeCursorTrackingArea = nil;
3874 [_previousMouseEnteredStack removeObjectIdenticalTo:trackingArea];
3875 [_previousCursorUpdateStack removeObjectIdenticalTo:trackingArea];
3879 - (void)_handleTrackingAreaEvent:(
CPEvent)anEvent
3881 _handlingTrackingAreaEvent = YES;
3889 _restartHandlingTrackingAreaEvent = NO;
3891 _mouseEnteredStack = [];
3892 _cursorUpdateStack = [];
3900 [
self _handleMouseMovedAndEnteredEventsForEvent:anEvent atPoint:point dragging:dragging];
3904 [
self _handleMouseExitedEventsForEvent:anEvent atPoint:point dragging:dragging];
3908 if (_cursorUpdateStack.length > 0)
3910 [
self _handleCursorUpdateEventsForEvent:anEvent atPoint:point dragging:dragging];
3916 [_windowView setCursorForLocation:point resizing:NO];
3917 _activeCursorTrackingArea = nil;
3923 while (_queuedEvents.length > 0)
3925 var queuedEvent = _queuedEvents[0],
3926 trackingArea = [queuedEvent trackingArea],
3927 trackingOwner = [trackingArea owner];
3929 switch ([queuedEvent type])
3932 [trackingOwner mouseEntered:queuedEvent];
3936 [trackingOwner mouseExited:queuedEvent];
3940 [trackingOwner cursorUpdate:queuedEvent];
3944 if (queuedEvent === _queuedEvents[0])
3945 [_queuedEvents removeObjectAtIndex:0];
3950 _previousMouseEnteredStack = _mouseEnteredStack;
3951 _previousCursorUpdateStack = _cursorUpdateStack;
3953 while (_restartHandlingTrackingAreaEvent)
3955 _handlingTrackingAreaEvent = NO;
3958 - (void)_handleMouseMovedAndEnteredEventsForEvent:(
CPEvent)anEvent atPoint:(CGPoint)point dragging:(BOOL)dragging
3962 for (var i = 0; i < _trackingAreaViews.length; i++)
3964 var aView = _trackingAreaViews[i],
3965 trackingAreas = [aView trackingAreas];
3970 for (var j = 0; j < trackingAreas.length; j++)
3972 var aTrackingArea = trackingAreas[j],
3973 trackingOptions = [aTrackingArea options],
3974 trackingImplementedMethods = [aTrackingArea implementedOwnerMethods];
3980 (CGRectContainsPoint([aTrackingArea windowRect], point))))
3985 [_mouseEnteredStack addObject:aTrackingArea];
3987 if ([_previousMouseEnteredStack containsObjectIdenticalTo:aTrackingArea])
3992 [[aTrackingArea owner] mouseMoved:anEvent];
4006 [
self _queueTrackingEvent:mouseEnteredEvent];
4008 [_queuedEvents addObject:mouseEnteredEvent];
4012 [_cursorUpdateStack addObject:aTrackingArea];
4017 - (void)_handleMouseExitedEventsForEvent:(
CPEvent)anEvent atPoint:(CGPoint)point dragging:(BOOL)dragging
4021 for (var i = 0; i < _previousMouseEnteredStack.length; i++)
4023 var aTrackingArea = _previousMouseEnteredStack[i],
4024 trackingOptions = [aTrackingArea options];
4026 if ([_mouseEnteredStack containsObjectIdenticalTo:aTrackingArea])
4033 var theView = [aTrackingArea owner],
4044 [
self _queueTrackingEvent:mouseExitedEvent];
4046 [_queuedEvents addObject:mouseExitedEvent];
4051 if (aTrackingArea === _activeCursorTrackingArea)
4053 _previousCursorUpdateStack = [];
4054 _activeCursorTrackingArea = nil;
4059 - (void)_handleCursorUpdateEventsForEvent:(
CPEvent)anEvent atPoint:(CGPoint)point dragging:(BOOL)dragging
4061 var overlappingTrackingAreas = [];
4063 for (var i = 0; i < _cursorUpdateStack.length; i++)
4065 var aTrackingArea = _cursorUpdateStack[i];
4067 if ((![_previousCursorUpdateStack containsObjectIdenticalTo:aTrackingArea]) || (aTrackingArea === _activeCursorTrackingArea))
4068 [overlappingTrackingAreas addObject:aTrackingArea];
4071 var frontmostTrackingArea = overlappingTrackingAreas[0],
4072 frontmostView = [frontmostTrackingArea view];
4074 for (var i = 1; i < overlappingTrackingAreas.length; i++)
4076 var aTrackingArea = overlappingTrackingAreas[i],
4077 aView = [aTrackingArea view];
4082 if (aView === _windowView)
4087 if (frontmostView === _windowView)
4089 frontmostTrackingArea = aTrackingArea;
4090 frontmostView = aView;
4098 var searchingView = aView;
4100 while ((searchingView !== _contentView) && ([searchingView superview] !== frontmostView))
4101 searchingView = [searchingView superview];
4103 if (searchingView !== _contentView)
4105 frontmostTrackingArea = aTrackingArea;
4106 frontmostView = aView;
4115 var firstView = frontmostView,
4116 firstSuperview = [firstView superview];
4118 while (firstView !== _contentView)
4120 var secondView = aView,
4121 secondSuperview = [secondView superview];
4123 while ((secondSuperview !== _contentView) && (firstSuperview !== secondSuperview))
4125 secondView = secondSuperview;
4126 secondSuperview = [secondView superview];
4129 if (firstSuperview === secondSuperview)
4132 firstView = firstSuperview;
4133 firstSuperview = [firstView superview];
4136 if (firstSuperview !== secondSuperview)
4139 var firstSuperviewSubviews = [firstSuperview subviews],
4140 firstViewIndex = [firstSuperviewSubviews indexOfObject:firstView],
4141 secondViewIndex = [firstSuperviewSubviews indexOfObject:secondView];
4143 if (secondViewIndex > firstViewIndex)
4145 frontmostTrackingArea = aTrackingArea;
4146 frontmostView = aView;
4150 if (frontmostTrackingArea !== _activeCursorTrackingArea)
4162 [
self _queueTrackingEvent:cursorUpdateEvent];
4164 [_queuedEvents addObject:cursorUpdateEvent];
4166 _activeCursorTrackingArea = frontmostTrackingArea;
4170 - (void)_queueTrackingEvent:(
CPEvent)anEvent
4181 var eventType = [anEvent
type],
4184 switch ([anEvent type])
4187 for (var i = 0; i < _queuedTrackingEvents.length; i++)
4189 var queuedEvent = _queuedTrackingEvents[i];
4191 if (([queuedEvent trackingArea] === trackingArea) && ([queuedEvent type] ===
CPMouseExited))
4193 [_queuedTrackingEvents removeObjectAtIndex:i];
4198 [_queuedTrackingEvents addObject:anEvent];
4202 for (var i = 0; i < _queuedTrackingEvents.length; i++)
4204 var queuedEvent = _queuedTrackingEvents[i];
4206 if (([queuedEvent trackingArea] === trackingArea) && ([queuedEvent type] ===
CPMouseEntered))
4208 [_queuedTrackingEvents removeObjectAtIndex:i];
4213 [_queuedTrackingEvents addObject:anEvent];
4217 [_queuedTrackingEvents addObject:anEvent];
4222 - (void)_flushTrackingEventQueueForMouseAt:(CGPoint)point
4224 for (var i = 0; i < _queuedTrackingEvents.length; i++)
4226 var queuedEvent = _queuedTrackingEvents[i],
4227 trackingArea = [queuedEvent trackingArea],
4228 trackingOwner = [trackingArea owner];
4230 switch ([queuedEvent type])
4233 [trackingOwner mouseEntered:queuedEvent];
4237 [trackingOwner mouseExited:queuedEvent];
4241 [trackingOwner updateTrackingAreas];
4243 if (CGRectContainsPoint([trackingArea windowRect], point))
4244 [trackingOwner cursorUpdate:queuedEvent];
4250 _queuedTrackingEvents = [];
4255 function _CPWindowFullPlatformWindowSessionMake(aWindowView, aContentRect,
hasShadow, aLevel)
4265 - (void)_setChildOrdering:(CPWindowOrderingMode)aValue
4267 _childOrdering = aValue;
void setHasShadow:(BOOL shouldHaveShadow)
Used to implement exception handling (creating & raising).
BOOL makeFirstResponder:(CPResponder aResponder)
void setFrame:(CGRect aFrame)
BOOL isMovableByWindowBackground()
CPWindow setParentWindow:(CPWindow parentWindow)
CPView previousValidKeyView()
A CALayer is similar to a CPView
CPDisplayPatternTitleBinding
CGPoint convertBaseToPlatformWindow:(CGPoint aPoint)
BOOL tryToPerform:with:(SEL aSelector, [with] id anObject)
var CPWindowDelegate_windowShouldClose_
CPWindowPositionFlexibleTop
CPWindowController windowController()
CPTrackingOwnerImplementsCursorUpdate
CPWindowResizeStyleModern
CPWindowPositionFlexibleRight
void enableKeyEquivalentForDefaultButtonCell()
void setRepresentedFilename:(CPString aFilePath)
void setShowsResizeIndicator:(BOOL shouldShowResizeIndicator)
CPColor backgroundColor()
CGPoint convertBaseToScreen:(CGPoint aPoint)
void addObserver:selector:name:object:(id anObserver, [selector] SEL aSelector, [name] CPString aNotificationName, [object] id anObject)
CPView initialFirstResponder()
void setTitle:(CPString aTitle)
CPResponder firstResponder()
CGPoint locationInWindow()
var CPWindowActionMessageKeys
void setPlatformWindow:(CPPlatformWindow aPlatformWindow)
var CPWindowResizeStyleGlobalChangeNotification
void postNotificationName:object:(CPString aNotificationName, [object] id anObject)
void raise:reason:(CPString aName, [reason] CPString aReason)
CPBorderlessBridgeWindowMask
CPString charactersIgnoringModifiers()
var CPWindowMinVisibleHorizontalMargin
CPArray selectorsForKey:modifierFlags:(CPString aKey, [modifierFlags] unsigned aFlag)
CPTrackingActiveInKeyWindow
BOOL canBecomeMainWindow()
void keyDown:(CPEvent anEvent)
BOOL isFullPlatformWindow()
CPTrackingActiveInActiveApp
CPNotificationCenter defaultCenter()
A mutable key-value pair collection.
void dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:(CPImage anImage, [fromWindow] CPWindow aWindow, [at] CGPoint imageLocation, [offset] CGSize mouseOffset, [event] CPEvent anEvent, [pasteboard] CPPasteboard aPasteboard, [source] id aSourceObject, [slideBack] BOOL slideBack)
CPTrackingActiveWhenFirstResponder
void setFrameSize:(CGSize aSize)
BOOL autorecalculatesKeyViewLoop()
void setFrame:display:animate:(CGRect aFrame, [display] BOOL shouldDisplay, [animate] BOOL shouldAnimate)
CPButton defaultButtonCell()
id initWithContentRect:styleMask:(CGRect aContentRect, [styleMask] unsigned aStyleMask)
void orderFront:(id aSender)
CPWindowPositionFlexibleLeft
BOOL ignoresMouseEvents()
void flagsChanged:(CPEvent anEvent)
An immutable string (collection of characters).
CPUndoManager undoManager()
unsigned autoresizingMask()
void unregisterDraggedTypes()
CGPoint convertBaseToGlobal:(CGPoint aPoint)
CPView nextValidKeyView()
void selectNextKeyView:(id sender)
CPWindowConstrainToScreen
CPTrackingOwnerImplementsMouseMoved
void miniaturize:(id sender)
CGPoint convertPlatformWindowToBase:(CGPoint aPoint)
CPDragServer sharedDragServer()
void doCommandBySelector:(SEL aSelector)
void makeKeyAndOrderFront:(id aSender)
void disableKeyEquivalentForDefaultButton()
CPString representedFilename()
CGRect frameRectForContentRect:(CGRect aContentRect)
CPTrackingOwnerImplementsMouseExited
void dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:(CPView aView, [fromWindow] CPWindow aWindow, [at] CGPoint viewLocation, [offset] CGSize mouseOffset, [event] CPEvent mouseDownEvent, [pasteboard] CPPasteboard aPasteboard, [source] id aSourceObject, [slideBack] BOOL slideBack)
A notification that can be posted to a CPNotificationCenter.
CPTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:(CPTimeInterval seconds, [target] id aTarget, [selector] SEL aSelector, [userInfo] id userInfo, [repeats] BOOL shouldRepeat)
void disableKeyEquivalentForDefaultButtonCell()
void setDefaultButton:(CPButton aButton)
void recalculateKeyViewLoop()
void setAutoresizingMask:(unsigned anAutoresizingMask)
BOOL acceptsFirstResponder()
CPTimeInterval timestamp()
An mutable collection which may contain a specific object numerous times.
id enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingArea:(CPEventType anEventType, [location] CGPoint aPoint, [modifierFlags] unsigned modifierFlags, [timestamp] CPTimeInterval aTimestamp, [windowNumber] int aWindowNumber, [context] CPGraphicsContext aGraphicsContext, [eventNumber] int anEventNumber, [trackingArea] CPTrackingArea aTrackingArea)
void setFrameOrigin:(CGPoint anOrigin)
BOOL becomesKeyOnlyIfNeeded()
BOOL canBecomeKeyWindow()
A general mechanism for user action "undo".
CPString lastPathComponent()
A timer object that can send a message after the given time interval.
void enableKeyEquivalentForDefaultButton()
void setLevel:(int aLevel)
void keyUp:(CPEvent anEvent)
BOOL resignFirstResponder()
void setMovableByWindowBackground:(BOOL shouldBeMovableByWindowBackground)
CPUndoManager undoManager()
BOOL constrainWindowsToUsableScreen()
void setValue:forKey:(id aValue, [forKey] CPString aKey)
CPTrackingAreaOptions CPTrackingMouseEnteredAndExited
Sends messages (CPNotification) between objects.
void selectPreviousKeyView:(id sender)
var CPWindowMinVisibleVerticalMargin
void setFullPlatformWindow:(BOOL shouldBeFullPlatformWindow)
var CPWindowDelegate_windowWillClose_
void setNextResponder:(CPResponder aResponder)
BOOL acceptsMouseMovedEvents()
CPCarriageReturnCharacter
void removeObserver:name:object:(id anObserver, [name] CPString aNotificationName, [object] id anObject)
CPTrackingEnabledDuringMouseDrag
void orderWindow:relativeTo:(CPWindowOrderingMode orderingMode, [relativeTo] int otherWindowNumber)
CGRect contentRectForFrameRect:(CGRect aFrame)
CPPlatformWindow platformWindow()
id URLWithString:(CPString URLString)
CPArray registeredDraggedTypes()
id valueForAttributeWithName:forClass:(CPString aName, [forClass] id aClass)
void setRepresentedURL:(CPURL aURL)
CGPoint convertScreenToBase:(CGPoint aPoint)
CPTrackingOwnerImplementsMouseEntered
CPWindowOrderingMode CPWindowAbove
BOOL becomeFirstResponder()
CPTrackingArea trackingArea()
BOOL showsResizeIndicator()
var CPWindowDelegate_windowWillResize_toSize_
CPWindowPositionFlexibleBottom
void setContentView:(CPView aView)
CPTimeInterval animationResizeTime:(CGRect newWindowFrame)
CGSize resizeIndicatorOffset()
var CPWindowDelegate_windowWillReturnUndoManager_
CPHUDBackgroundWindowMask