mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-11-14 02:33:50 +00:00
Fixed: subviews in cib did not receive view(Will/Did)MoveToSuperview:
In Cocoa, viewWillMoveToSuperview: and viewDidMoveToSuperview: are called when views are instantiated from code or from a nib. Previously in Cappuccino, when a view was instantiated from a cib, the _subviews of the view were directly set from the decoded subview array. This short-circuited all of the normal notifications a view receives when added to a superview, including viewWillMoveToSuperview: and viewDidMoveToSuperview:. As a result, some views that override these methods, such as CPSearchField, were not set up correctly when instantiated from a cib. With this commit, subviews instantiated from a cib are manually added to their superview, thus ensuring they go through the same cycle as views instantiated from code, and ensuring that viewWillMoveToSuperview: and viewDidMoveToSuperview: are called. Closes #1699
This commit is contained in:
1 parent
887421c9fa
commit
471641c228
2 files changed
+15
-1
No files matched your search
+13
-1
@@ -3045,9 +3045,21 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
||||
_tag = [aCoder containsValueForKey:CPViewTagKey] ? [aCoder decodeIntForKey:CPViewTagKey] : -1;
|
||||
|
||||
_window = [aCoder decodeObjectForKey:CPViewWindowKey];
|
||||
_subviews = [aCoder decodeObjectForKey:CPViewSubviewsKey] || [];
|
||||
_superview = [aCoder decodeObjectForKey:CPViewSuperviewKey];
|
||||
|
||||
// We have to manually add the subviews so that they will receive
|
||||
// viewWillMoveToSuperview: and viewDidMoveToSuperview:
|
||||
_subviews = [];
|
||||
|
||||
var subviews = [aCoder decodeObjectForKey:CPViewSubviewsKey] || [];
|
||||
|
||||
for (var i = 0, count = [subviews count]; i < count; ++i)
|
||||
{
|
||||
// addSubview won't do anything if the superview is already self, so clear it
|
||||
subviews[i]._superview = nil;
|
||||
[self addSubview:subviews[i]];
|
||||
}
|
||||
|
||||
// FIXME: Should we encode/decode this?
|
||||
_registeredDraggedTypes = [CPSet set];
|
||||
_registeredDraggedTypesArray = [];
|
||||
|
||||
@@ -623,6 +623,7 @@ var concat = Array.prototype.concat,
|
||||
for (; index < count; ++index)
|
||||
{
|
||||
aFunction([self objectAtIndex:index], index, shouldStopRef);
|
||||
|
||||
if (shouldStop)
|
||||
return;
|
||||
}
|
||||
@@ -648,6 +649,7 @@ var concat = Array.prototype.concat,
|
||||
for (; index !== stop; index += increment)
|
||||
{
|
||||
aFunction([self objectAtIndex:index], index, AT_REF(shouldStop));
|
||||
|
||||
if (shouldStop)
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user