From 8d14bdd8192fef387da09b084a04f7ba5cc48540 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 28 Jun 2012 22:37:42 +0100 Subject: [PATCH] CPToolbar autovalidate. --- AppKit/CPToolbar.j | 19 +++++++++++++++++++ AppKit/CPWindow/CPWindow.j | 28 ++++++++++++++++------------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j index fc16962ac..0b1afce9b 100644 --- a/AppKit/CPToolbar.j +++ b/AppKit/CPToolbar.j @@ -241,7 +241,13 @@ var CPToolbarsByIdentifier = nil, - (void)_setWindow:(CPWindow)aWindow { + if (_window) + [[CPNotificationCenter defaultCenter] removeObserver:self object:_window]; + _window = aWindow; + + if (_window) + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_autovalidate) name:_CPWindowDidChangeFirstResponderNotification object:aWindow]; } /*! @@ -401,6 +407,19 @@ var CPToolbarsByIdentifier = nil, [toolbarItems[count] validate]; } +- (void)_autovalidate +{ + var toolbarItems = [self visibleItems], + count = [toolbarItems count]; + + while (count--) + { + var item = [toolbarItems objectAtIndex:count]; + if ([item autovalidates]) + [item validate]; + } +} + /* @ignore */ - (id)_itemForItemIdentifier:(CPString)identifier willBeInsertedIntoToolbar:(BOOL)toolbar { diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 834d41311..044a6c845 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -167,18 +167,20 @@ CPWindowAbove = 1; */ CPWindowBelow = 2; -CPWindowWillCloseNotification = @"CPWindowWillCloseNotification"; -CPWindowDidBecomeMainNotification = @"CPWindowDidBecomeMainNotification"; -CPWindowDidResignMainNotification = @"CPWindowDidResignMainNotification"; -CPWindowDidBecomeKeyNotification = @"CPWindowDidBecomeKeyNotification"; -CPWindowDidResignKeyNotification = @"CPWindowDidResignKeyNotification"; -CPWindowDidResizeNotification = @"CPWindowDidResizeNotification"; -CPWindowDidMoveNotification = @"CPWindowDidMoveNotification"; -CPWindowWillBeginSheetNotification = @"CPWindowWillBeginSheetNotification"; -CPWindowDidEndSheetNotification = @"CPWindowDidEndSheetNotification"; -CPWindowDidMiniaturizeNotification = @"CPWindowDidMiniaturizeNotification"; -CPWindowWillMiniaturizeNotification = @"CPWindowWillMiniaturizeNotification"; -CPWindowDidDeminiaturizeNotification = @"CPWindowDidDeminiaturizeNotification"; +CPWindowWillCloseNotification = @"CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification = @"CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification = @"CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification = @"CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification = @"CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification = @"CPWindowDidResizeNotification"; +CPWindowDidMoveNotification = @"CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification = @"CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification = @"CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification = @"CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification = @"CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification = @"CPWindowDidDeminiaturizeNotification"; + +_CPWindowDidChangeFirstResponderNotification = @"_CPWindowDidChangeFirstResponderNotification"; CPWindowShadowStyleStandard = 0; CPWindowShadowStyleMenu = 1; @@ -1362,6 +1364,8 @@ CPTexturedBackgroundWindowMask _firstResponder = aResponder; + [[CPNotificationCenter defaultCenter] postNotificationName:_CPWindowDidChangeFirstResponderNotification object:self]; + return YES; }