62 lines
1.6 KiB
Objective-C
62 lines
1.6 KiB
Objective-C
// 15 august 2015
|
|
#import "uipriv_darwin.h"
|
|
|
|
void addConstraint(NSView *view, NSString *constraint, NSDictionary *metrics, NSDictionary *views)
|
|
{
|
|
NSArray *constraints;
|
|
|
|
constraints = [NSLayoutConstraint constraintsWithVisualFormat:constraint
|
|
options:0
|
|
metrics:metrics
|
|
views:views];
|
|
[view addConstraints:constraints];
|
|
}
|
|
|
|
NSLayoutPriority horzHuggingPri(NSView *view)
|
|
{
|
|
return [view contentHuggingPriorityForOrientation:NSLayoutConstraintOrientationHorizontal];
|
|
}
|
|
|
|
NSLayoutPriority vertHuggingPri(NSView *view)
|
|
{
|
|
return [view contentHuggingPriorityForOrientation:NSLayoutConstraintOrientationVertical];
|
|
}
|
|
|
|
void setHuggingPri(NSView *view, NSLayoutPriority priority, NSLayoutConstraintOrientation orientation)
|
|
{
|
|
[view setContentHuggingPriority:priority forOrientation:orientation];
|
|
}
|
|
|
|
void layoutSingleView(NSView *superview, NSView *subview, int margined)
|
|
{
|
|
NSDictionary *views;
|
|
NSString *constraint;
|
|
|
|
[superview removeConstraints:[superview constraints]];
|
|
|
|
views = NSDictionaryOfVariableBindings(subview);
|
|
|
|
constraint = @"H:|[subview]|";
|
|
if (margined)
|
|
constraint = @"H:|-[subview]-|";
|
|
addConstraint(superview, constraint, nil, views);
|
|
|
|
constraint = @"V:|[subview]|";
|
|
if (margined)
|
|
constraint = @"V:|-[subview]-|";
|
|
addConstraint(superview, constraint, nil, views);
|
|
}
|
|
|
|
// use the fitting size, not the intrinsic content size, for the case of recursive views without an intrinsic content size
|
|
NSSize fittingAlignmentSize(NSView *view)
|
|
{
|
|
NSSize s;
|
|
NSRect r;
|
|
|
|
s = [view fittingSize];
|
|
// the fitting size is for a frame rect; we need an alignment rect
|
|
r = NSMakeRect(0, 0, s.width, s.height);
|
|
r = [view alignmentRectForFrame:r];
|
|
return r.size;
|
|
}
|