mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-11-13 18:23:50 +00:00
Prevent self-reference in _next/_previousKeyView
This commit is contained in:
1 parent
2f56f899cf
commit
93119233cd
1 file changed
+21
-6
+21
-6
@@ -2167,23 +2167,38 @@ setBoundsOrigin:
|
||||
|
||||
- (CPView)previousValidKeyView
|
||||
{
|
||||
var result = [self previousKeyView];
|
||||
var result = [self previousKeyView],
|
||||
firstResult = result;
|
||||
|
||||
while (result && ![result canBecomeKeyView])
|
||||
{
|
||||
result = [result previousKeyView];
|
||||
|
||||
// Cycled.
|
||||
if (result === firstResult)
|
||||
return nil;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
- (void)_setPreviousKeyView:(CPView)previous
|
||||
{
|
||||
_previousKeyView = previous;
|
||||
if ([previous isEqual:self])
|
||||
_previousKeyView = nil;
|
||||
else
|
||||
_previousKeyView = previous;
|
||||
}
|
||||
|
||||
- (void)setNextKeyView:(CPView)next
|
||||
{
|
||||
_nextKeyView = next;
|
||||
[_nextKeyView _setPreviousKeyView:self];
|
||||
if ([next isEqual:self])
|
||||
_nextKeyView = nil;
|
||||
else
|
||||
{
|
||||
_nextKeyView = next;
|
||||
[_nextKeyView _setPreviousKeyView:self];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -2732,12 +2747,12 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
||||
|
||||
var nextKeyView = [self nextKeyView];
|
||||
|
||||
if (nextKeyView !== nil)
|
||||
if (nextKeyView !== nil && ![nextKeyView isEqual:self])
|
||||
[aCoder encodeConditionalObject:nextKeyView forKey:CPViewNextKeyViewKey];
|
||||
|
||||
var previousKeyView = [self previousKeyView];
|
||||
|
||||
if (previousKeyView !== nil)
|
||||
if (previousKeyView !== nil && ![previousKeyView isEqual:self])
|
||||
[aCoder encodeConditionalObject:previousKeyView forKey:CPViewPreviousKeyViewKey];
|
||||
|
||||
[aCoder encodeObject:[self themeClass] forKey:CPViewThemeClassKey];
|
||||
|
||||
Reference in new issue
Block a user