mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-10 02:40:59 +00:00
Key view loop fixes/improvements
- Removed unnecessary code at beginning of CPTextField -becomeFirstResponder that might have been a hack to get around a bug I fixed. - Fixed race condition in setTimeout closure in CPTextField -becomeFirstResponder. - CPWindow -setInitialFirstResponder now works reliably and follows Cocoa behavior in that if -makeFirstResponder is called with something other than the window before the window is first shown, it will override the initial first responder. - Like Cocoa, until the first responder is set during window load, the first responder is the window by default, not the content view. - Optimized search for any view that has a previous/next key view set. - Sheets can become key windows again. - CPWindow -recalculateKeyViewLoop now just marks the loop as dirty, per Cocoa docs. - CPWindow -autorecalculatesKeyViewLoop now behaves per Cocoa, it only has an effect when views are added or removed. - If the first responder does not have a valid previous/next key view, it does not resign to nil, per Cocoa behavior. - Code optimization and cleanup. - Test app (KeyViewLoopTest) that demonstrates various scenarios.
This commit is contained in:
1 parent
45ad5375a2
commit
782f47a30b
15 files changed
+2855
-111
No files matched your search
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* AppController.j
|
||||
* KeyViewLoopTest
|
||||
*
|
||||
* Created by You on January 7, 2013.
|
||||
* Copyright 2013, Your Company All rights reserved.
|
||||
*/
|
||||
|
||||
@import <Foundation/CPObject.j>
|
||||
|
||||
|
||||
@implementation AppController : CPObject
|
||||
{
|
||||
@outlet CPWindow customNoInitial;
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||
{
|
||||
[customNoInitial makeKeyAndOrderFront:self];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation MyWindow : CPWindow
|
||||
|
||||
- (@action)addField:(id)sender
|
||||
{
|
||||
var field = [CPTextField textFieldWithStringValue:@"" placeholder:@"" width:96];
|
||||
|
||||
[field setFrameOrigin:CGPointMake(43, 135)];
|
||||
[[self contentView] addSubview:field];
|
||||
|
||||
[sender setEnabled:NO];
|
||||
[self makeFirstResponder:[[self contentView] viewWithTag:1]];
|
||||
}
|
||||
|
||||
- (@action)recalc:(id)sender
|
||||
{
|
||||
[self recalculateKeyViewLoop];
|
||||
[self makeFirstResponder:[[self contentView] viewWithTag:1]];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in new issue
Block a user