Changed the single-view containers to break their layouts before calling their childrens's Relayout()s. This is part of what I hope will fix uiRadioButtons.
This commit is contained in:
parent
9216013e55
commit
f6d10e4194
|
@ -27,13 +27,12 @@ void setHuggingPri(NSView *view, NSLayoutPriority priority, NSLayoutConstraintOr
|
|||
[view setContentHuggingPriority:priority forOrientation:orientation];
|
||||
}
|
||||
|
||||
// precondition: constraints must have been removed from superview already
|
||||
void layoutSingleView(NSView *superview, NSView *subview, int margined)
|
||||
{
|
||||
NSDictionary *views;
|
||||
NSString *constraint;
|
||||
|
||||
[superview removeConstraints:[superview constraints]];
|
||||
|
||||
views = NSDictionaryOfVariableBindings(subview);
|
||||
|
||||
constraint = @"H:|[subview]|";
|
||||
|
|
|
@ -41,6 +41,7 @@ static void groupRelayout(uiDarwinControl *c)
|
|||
|
||||
if (g->child == NULL)
|
||||
return;
|
||||
[g->box removeConstraints:[g->box constraints]];
|
||||
cc = uiDarwinControl(g->child);
|
||||
childView = (NSView *) uiControlHandle(g->child);
|
||||
// first relayout the child
|
||||
|
|
|
@ -61,6 +61,7 @@ static void tabRelayout(uiDarwinControl *c)
|
|||
child = (uiControl *) [v pointerValue];
|
||||
view = (NSView *) [t->views objectAtIndex:i];
|
||||
childView = (NSView *) uiControlHandle(child);
|
||||
[view removeConstraints:[view constraints]];
|
||||
margined = (NSNumber *) [t->margined objectAtIndex:i];
|
||||
// first lay out the child
|
||||
cc = uiDarwinControl(child);
|
||||
|
|
|
@ -125,15 +125,18 @@ static void windowRelayout(uiDarwinControl *c)
|
|||
uiWindow *w = uiWindow(c);
|
||||
uiDarwinControl *cc;
|
||||
NSView *childView;
|
||||
NSView *contentView;
|
||||
|
||||
if (w->child == NULL)
|
||||
return;
|
||||
cc = uiDarwinControl(w->child);
|
||||
childView = (NSView *) uiControlHandle(w->child);
|
||||
contentView = [w->window contentView];
|
||||
[contentView removeConstraints:[contentView constraints]];
|
||||
// first relayout the child
|
||||
(*(cc->Relayout))(cc);
|
||||
// now relayout ourselves
|
||||
layoutSingleView([w->window contentView], childView, w->margined);
|
||||
layoutSingleView(contentView, childView, w->margined);
|
||||
}
|
||||
|
||||
char *uiWindowTitle(uiWindow *w)
|
||||
|
|
Loading…
Reference in New Issue