Revision: 28831
          http://sourceforge.net/p/bibdesk/svn/28831
Author:   hofman
Date:     2024-03-09 10:39:35 +0000 (Sat, 09 Mar 2024)
Log Message:
-----------
Use layout anchors and activate constraints

Modified Paths:
--------------
    trunk/bibdesk/BDSKAddressTextField.m
    trunk/bibdesk/BDSKConditionController.m
    trunk/bibdesk/BDSKEditor.m
    trunk/bibdesk/BDSKFilterController.m
    trunk/bibdesk/BDSKFontManager.m
    trunk/bibdesk/BDSKPreferenceController.m
    trunk/bibdesk/BDSKSaveAccessoryViewController.m
    trunk/bibdesk/BDSKSecureTextField.m
    trunk/bibdesk/BDSKStatusBar.m
    trunk/bibdesk/BDSKTemplateDocument.m
    trunk/bibdesk/BDSKTouchBarButtonGroup.m
    trunk/bibdesk/BDSKZoomablePDFView.m
    trunk/bibdesk/BDSKZoomableTextView.m
    trunk/bibdesk/BibDocument.m
    trunk/bibdesk/BibDocument_Groups.m
    trunk/bibdesk/BibDocument_Search.m
    trunk/bibdesk/BibDocument_UI.m
    trunk/bibdesk/BibPref_ScriptHooks.m

Modified: trunk/bibdesk/BDSKAddressTextField.m
===================================================================
--- trunk/bibdesk/BDSKAddressTextField.m        2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKAddressTextField.m        2024-03-09 10:39:35 UTC (rev 
28831)
@@ -41,7 +41,6 @@
 #import "BDSKDragImageView.h"
 #import "BDSKEmbeddedButton.h"
 #import "NSString_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSView_BDSKExtensions.h"
 
 #define CONTROL_SIZE 16.0
@@ -68,13 +67,13 @@
         [(BDSKDragImageView *)imageView 
setDraggingSourceOperationMask:NSDragOperationCopy | NSDragOperationLink | 
NSDragOperationGeneric forLocal:NO];
         [(BDSKDragImageView *)imageView 
setDraggingSourceOperationMask:NSDragOperationCopy | NSDragOperationLink | 
NSDragOperationGeneric forLocal:YES];
         [imageView setTranslatesAutoresizingMaskIntoConstraints:NO];
-        [imageView addConstraints:@[
-            [NSLayoutConstraint constraintWithWidth:CONTROL_SIZE 
forItem:imageView],
-            [NSLayoutConstraint constraintWithHeight:CONTROL_SIZE 
forItem:imageView]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[imageView widthAnchor] constraintEqualToConstant:CONTROL_SIZE],
+            [[imageView heightAnchor] 
constraintEqualToConstant:CONTROL_SIZE]]];
         [self addSubview:imageView];
-        [self addConstraints:@[
-            [NSLayoutConstraint constraintWithLeadingMargin:CONTROL_MARGIN 
forItem:imageView toItem:self],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:imageView toItem:self]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[imageView leadingAnchor] constraintEqualToAnchor:[self 
leadingAnchor] constant:CONTROL_MARGIN],
+            [[imageView centerYAnchor] constraintEqualToAnchor:[self 
centerYAnchor]]]];
     }
     if (button == nil) {
         button = [[BDSKEmbeddedButton alloc] init];
@@ -84,13 +83,13 @@
         [button setImageScaling:NSImageScaleProportionallyDown];
         [button setRefusesFirstResponder:YES];
         [button setTranslatesAutoresizingMaskIntoConstraints:NO];
-        [button addConstraints:@[
-            [NSLayoutConstraint constraintWithWidth:CONTROL_SIZE 
forItem:button],
-            [NSLayoutConstraint constraintWithHeight:CONTROL_SIZE 
forItem:button]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[button widthAnchor] constraintEqualToConstant:CONTROL_SIZE],
+            [[button heightAnchor] constraintEqualToConstant:CONTROL_SIZE]]];
         [self addSubview:button];
-        [self addConstraints:@[
-            [NSLayoutConstraint constraintWithTrailingMargin:CONTROL_MARGIN 
forItem:button toItem:self],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 forItem:button 
toItem:self]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[self trailingAnchor] constraintEqualToAnchor:[button 
trailingAnchor] constant:CONTROL_MARGIN],
+            [[button centerYAnchor] constraintEqualToAnchor:[self 
centerYAnchor]]]];
     }
 }
 

Modified: trunk/bibdesk/BDSKConditionController.m
===================================================================
--- trunk/bibdesk/BDSKConditionController.m     2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKConditionController.m     2024-03-09 10:39:35 UTC (rev 
28831)
@@ -44,7 +44,6 @@
 #import "NSInvocation_BDSKExtensions.h"
 #import "BDSKFieldNameFormatter.h"
 #import "NSColor_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSDate_BDSKExtensions.h"
 
 #define BDSKBooleanValueTransformerName @"BDSKBooleanFromString"
@@ -235,10 +234,10 @@
         for (NSView *aView in controls) {
             [valueView addSubview:aView];
             if (prevView)
-                [valueView addConstraint:[NSLayoutConstraint 
constraintWithLeadingSpacing:0.0 forItem:aView toItem:prevView]];
+                [[[aView leadingAnchor] constraintEqualToAnchor:[prevView 
trailingAnchor]] setActive:YES];
             else
-                 [valueView addConstraint:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:aView toItem:valueView]];
-            [valueView addConstraint:[NSLayoutConstraint 
constraintWithCenterYOffset:0.0 forItem:aView toItem:valueView]];
+                 [[[aView leadingAnchor] constraintEqualToAnchor:[valueView 
leadingAnchor]] setActive:YES];
+            [[[aView centerYAnchor] constraintEqualToAnchor:[valueView 
centerYAnchor]] setActive:YES];
             prevView = aView;
         }
     }
@@ -257,10 +256,10 @@
     if (view != currentView) {
         [currentView removeFromSuperview];
         [comparisonView addSubview:view];
-        [comparisonView addConstraints:@[
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 forItem:view 
toItem:comparisonView],
-            [NSLayoutConstraint constraintWithTrailingMargin:0.0 forItem:view 
toItem:comparisonView],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 forItem:view 
toItem:comparisonView]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[view leadingAnchor] constraintEqualToAnchor:[comparisonView 
leadingAnchor]],
+            [[comparisonView trailingAnchor] constraintEqualToAnchor:[view 
trailingAnchor]],
+            [[view centerYAnchor] constraintEqualToAnchor:[comparisonView 
centerYAnchor]]]];
     }
 }
 

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BDSKEditor.m  2024-03-09 10:39:35 UTC (rev 28831)
@@ -90,7 +90,6 @@
 #import "BDSKItemDownload.h"
 #import "BDSKField.h"
 #import "NSBezierPath_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSFont_BDSKExtensions.h"
 #import "BDSKTextUndoManager.h"
 
@@ -229,8 +228,8 @@
     [crossrefFormatter setAllowsEmptyString:YES];
     citationFormatter = [[BDSKCitationFormatter alloc] initWithDelegate:self];
     
-    citeKeyConstraint = [NSLayoutConstraint constraintWithWidth:[citeKeyTitle 
intrinsicContentSize].width forItem:citeKeyTitle];
-    [citeKeyTitle addConstraint:citeKeyConstraint];
+    citeKeyConstraint = [[citeKeyTitle widthAnchor] 
constraintEqualToConstant:[citeKeyTitle intrinsicContentSize].width];
+    [citeKeyConstraint setActive:YES];
     
     [self resetFields:BDSKReloadTable];
     [self setupCollectionView];
@@ -3238,10 +3237,10 @@
     [button setTranslatesAutoresizingMaskIntoConstraints:NO];
     
     [view addSubview:button];
-    [view addConstraints:@[
-        [NSLayoutConstraint constraintWithLeadingMargin:6.0 forItem:button 
toItem:view],
-        [NSLayoutConstraint constraintWithTrailingMargin:6.0 forItem:button 
toItem:view],
-        [NSLayoutConstraint constraintWithCenterYOffset:0.0 forItem:button 
toItem:view]]];
+    [NSLayoutConstraint activateConstraints:@[
+        [[button leadingAnchor] constraintEqualToAnchor:[view leadingAnchor] 
constant:6.0],
+        [[view trailingAnchor] constraintEqualToAnchor:[button trailingAnchor] 
constant:6.0],
+        [[button centerYAnchor] constraintEqualToAnchor:[view 
centerYAnchor]]]];
     
     [item setButton:button];
     

Modified: trunk/bibdesk/BDSKFilterController.m
===================================================================
--- trunk/bibdesk/BDSKFilterController.m        2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKFilterController.m        2024-03-09 10:39:35 UTC (rev 
28831)
@@ -199,22 +199,22 @@
     if (nextView) {
         NSLayoutConstraint *topConstraint = [conditionsView 
constraintWithFirstItem:nextView firstAttribute:NSLayoutAttributeTop];
         if (topConstraint)
-            [conditionsView removeConstraint:topConstraint];
+            [topConstraint setActive:NO];
     } else if (prevView) {
         NSLayoutConstraint *bottomConstraint = [conditionsView 
constraintWithSecondItem:prevView secondAttribute:NSLayoutAttributeBottom];
         if (bottomConstraint)
-            [conditionsView removeConstraint:bottomConstraint];
+            [bottomConstraint setActive:NO];
     }
-    [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:view toItem:conditionsView]];
-    [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:view toItem:conditionsView]];
+    [[[view leadingAnchor] constraintEqualToAnchor:[conditionsView 
leadingAnchor]] setActive:YES];
+    [[[conditionsView trailingAnchor] constraintEqualToAnchor:[view 
trailingAnchor]] setActive:YES];
     if (prevView)
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:view toItem:prevView]];
+        [[[view topAnchor] constraintEqualToAnchor:[prevView bottomAnchor]] 
setActive:YES];
     else
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:view toItem:conditionsView]];
+        [[[view topAnchor] constraintEqualToAnchor:[conditionsView topAnchor]] 
setActive:YES];
     if (nextView)
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:nextView toItem:view]];
+        [[[nextView topAnchor] constraintEqualToAnchor:[view bottomAnchor]] 
setActive:YES];
     else
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:view toItem:conditionsView]];
+        [[[conditionsView bottomAnchor] constraintEqualToAnchor:[view 
bottomAnchor]] setActive:YES];
     
     [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
         [[heightConstraint animator] setConstant:height];
@@ -227,16 +227,16 @@
     NSView *prevView = nil;
     for (NSView *view in views) {
         [conditionsView addSubview:view];
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:view toItem:conditionsView]];
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:view toItem:conditionsView]];
+        [[[view leadingAnchor] constraintEqualToAnchor:[conditionsView 
leadingAnchor]] setActive:YES];
+        [[[conditionsView trailingAnchor] constraintEqualToAnchor:[view 
trailingAnchor]] setActive:YES];
         if (prevView)
-            [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:view toItem:prevView]];
+            [[[view topAnchor] constraintEqualToAnchor:[prevView 
bottomAnchor]] setActive:YES];
         else
-            [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:view toItem:conditionsView]];
+            [[[view topAnchor] constraintEqualToAnchor:[conditionsView 
topAnchor]] setActive:YES];
         prevView = view;
     }
     if (prevView)
-        [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:prevView toItem:conditionsView]];
+        [[[conditionsView bottomAnchor] constraintEqualToAnchor:[prevView 
bottomAnchor]] setActive:YES];
 }
 
 - (void)removeConditionView:(NSView *)view {
@@ -255,7 +255,7 @@
             [heightConstraint setConstant:height];
             [view removeFromSuperview];
             if (prevView || nextView)
-                [conditionsView addConstraint:[NSLayoutConstraint 
constraintWithItem:nextView ?: conditionsView attribute:nextView ? 
NSLayoutAttributeTop : NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual 
toItem:prevView ?: conditionsView attribute:prevView ? NSLayoutAttributeBottom 
: NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
+                [[(nextView ? [nextView topAnchor] : [conditionsView 
bottomAnchor]) constraintEqualToAnchor:(prevView ? [prevView bottomAnchor] : 
[conditionsView topAnchor])] setActive:YES];
         }];
     }
 }

Modified: trunk/bibdesk/BDSKFontManager.m
===================================================================
--- trunk/bibdesk/BDSKFontManager.m     2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BDSKFontManager.m     2024-03-09 10:39:35 UTC (rev 28831)
@@ -38,7 +38,6 @@
 
 #import "BDSKFontManager.h"
 #import "NSFont_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 @implementation BDSKFontManager
 
@@ -96,10 +95,10 @@
             [button setMenu:menu forSegment:0];
             accessoryView = [[NSView alloc] initWithFrame:[button frame]];
             [accessoryView addSubview:button];
-            [accessoryView addConstraints:@[
-                [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:button toItem:accessoryView],
-                [NSLayoutConstraint constraintWithTopMargin:0.0 forItem:button 
toItem:accessoryView],
-                [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:button toItem:accessoryView]]];
+            [NSLayoutConstraint activateConstraints:@[
+                [[button leadingAnchor] constraintEqualToAnchor:[accessoryView 
leadingAnchor]],
+                [[button topAnchor] constraintEqualToAnchor:[accessoryView 
topAnchor]],
+                [[accessoryView bottomAnchor] constraintEqualToAnchor:[button 
bottomAnchor]]]];
             [[NSFontPanel sharedFontPanel] setAccessoryView:accessoryView];
         }
     }

Modified: trunk/bibdesk/BDSKPreferenceController.m
===================================================================
--- trunk/bibdesk/BDSKPreferenceController.m    2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKPreferenceController.m    2024-03-09 10:39:35 UTC (rev 
28831)
@@ -43,7 +43,6 @@
 #import "NSAnimationContext_BDSKExtensions.h"
 #import "NSColor_BDSKExtensions.h"
 #import <Quartz/Quartz.h>
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSFont_BDSKExtensions.h"
 
 #define BDSKPreferencesWindowFrameAutosaveName @"BDSKPreferencesWindow"
@@ -408,7 +407,7 @@
             if ((item = [[NSToolbarItem alloc] 
initWithItemIdentifier:itemIdentifier])) {
                 if (@available(macOS 11.0, *)) {
                     [searchField 
setTranslatesAutoresizingMaskIntoConstraints:NO];
-                    [searchField addConstraints:@[[NSLayoutConstraint 
constraintWithItem:searchField attribute:NSLayoutAttributeWidth 
relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil 
attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 
constant:NSWidth([searchField frame])], [NSLayoutConstraint 
constraintWithItem:searchField attribute:NSLayoutAttributeWidth 
relatedBy:NSLayoutRelationLessThanOrEqual toItem:nil 
attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:200.0]]];
+                    [NSLayoutConstraint activateConstraints:@[[[searchField 
widthAnchor] constraintGreaterThanOrEqualToConstant:NSWidth([searchField 
frame])], [[searchField widthAnchor] 
constraintLessThanOrEqualToConstant:200.0]]];
                 } else {
                     [item setMinSize:[searchField frame].size];
                     [item setMaxSize:NSMakeSize(200.0, NSHeight([searchField 
frame]))];
@@ -615,14 +614,14 @@
     NSArray *controlsConstraints = nil;
     if (wasIcons)
         controlsConstraints = @[
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:controlView toItem:contentView],
-            [NSLayoutConstraint constraintWithTrailingMargin:0.0 
forItem:controlView toItem:contentView],
-            [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:controlView toItem:contentView]];
+            [[controlView leadingAnchor] constraintEqualToAnchor:[contentView 
leadingAnchor]],
+            [[contentView trailingAnchor] constraintEqualToAnchor:[controlView 
trailingAnchor]],
+            [[contentView bottomAnchor] constraintEqualToAnchor:[controlView 
bottomAnchor]]];
     NSArray *constraints = @[
-        [NSLayoutConstraint constraintWithLeadingMargin:0.0 forItem:view 
toItem:contentView],
-        [NSLayoutConstraint constraintWithItem:view 
attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationGreaterThanOrEqual 
toItem:contentView attribute:NSLayoutAttributeLeading multiplier:1.0 
constant:0.0],
-        [NSLayoutConstraint constraintWithCenterXOffset:0.0 forItem:view 
toItem:contentView],
-        (isIcons ? [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:view toItem:contentView] : [NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:controlView toItem:view])];
+        [[view leadingAnchor] constraintEqualToAnchor:[contentView 
leadingAnchor]],
+        [[view leadingAnchor] 
constraintGreaterThanOrEqualToAnchor:[contentView leadingAnchor]],
+        [[view centerXAnchor] constraintEqualToAnchor:[contentView 
centerXAnchor]],
+        (isIcons ? [[contentView bottomAnchor] constraintEqualToAnchor:[view 
bottomAnchor]] : [[controlView topAnchor] constraintEqualToAnchor:[view 
bottomAnchor]])];
     [[constraints firstObject] setPriority:100.0];
     
     NSTimeInterval duration = [NSAnimationContext 
defaultAnimationTimeInterval];
@@ -634,7 +633,7 @@
                     [[controlView animator] removeFromSuperview];
                 } else if (wasIcons) {
                     [[contentView animator] addSubview:controlView];
-                    [contentView addConstraints:controlsConstraints];
+                    [NSLayoutConstraint 
activateConstraints:controlsConstraints];
                 }
                 if ([oldView superview]) {
                     [[contentView animator] replaceSubview:oldView with:view];
@@ -641,7 +640,7 @@
                 } else {
                     [[contentView animator] addSubview:view];
                 }
-                [contentView addConstraints:constraints];
+                [NSLayoutConstraint activateConstraints:constraints];
                 [[window animator] setFrame:contentRect display:YES];
             }
             completionHandler:^{
@@ -652,12 +651,12 @@
             [controlView removeFromSuperview];
         } else if (wasIcons) {
             [contentView addSubview:controlView];
-            [contentView addConstraints:controlsConstraints];
+            [NSLayoutConstraint activateConstraints:controlsConstraints];
         }
         // don't use replaceSubview:with: because oldView can be nil here
         [oldView removeFromSuperview];
         [contentView addSubview:view];
-        [contentView addConstraints:constraints];
+        [NSLayoutConstraint activateConstraints:constraints];
         [window setFrame:contentRect display:display];
         [window recalculateKeyViewLoop];
     }
@@ -695,23 +694,23 @@
         
         NSMutableArray *constraints2 = [NSMutableArray array];
         
-        [constraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:bgView toItem:iconView]];
-        [constraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:bgView toItem:iconView]];
+        [constraints addObject:[[bgView leadingAnchor] 
constraintEqualToAnchor:[iconView leadingAnchor]]];
+        [constraints addObject:[[iconView trailingAnchor] 
constraintEqualToAnchor:[bgView trailingAnchor]]];
         
         if (prevBgView) {
             BDSKColoredView *dividerView = nil;
             dividerView = [[BDSKColoredView alloc] init];
             [dividerView setBackgroundColor:dividerColor];
-            [dividerView addConstraint:[NSLayoutConstraint 
constraintWithHeight:DIVIDER_HEIGHT forItem:dividerView]];
+            [[[dividerView heightAnchor] 
constraintEqualToConstant:DIVIDER_HEIGHT] setActive:YES];
             [dividerView setTranslatesAutoresizingMaskIntoConstraints:NO];
             [iconView addSubview:dividerView];
             
-            [constraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:dividerView toItem:iconView]];
-            [constraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:dividerView toItem:iconView]];
-            [constraints addObject:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:dividerView toItem:prevBgView]];
-            [constraints addObject:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:bgView toItem:dividerView]];
+            [constraints addObject:[[dividerView leadingAnchor] 
constraintEqualToAnchor:[iconView leadingAnchor]]];
+            [constraints addObject:[[iconView trailingAnchor] 
constraintEqualToAnchor:[dividerView trailingAnchor]]];
+            [constraints addObject:[[dividerView topAnchor] 
constraintEqualToAnchor:[prevBgView bottomAnchor]]];
+            [constraints addObject:[[bgView topAnchor] 
constraintEqualToAnchor:[dividerView bottomAnchor]]];
         } else {
-            [constraints addObject:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:bgView toItem:iconView]];
+            [constraints addObject:[[bgView topAnchor] 
constraintEqualToAnchor:[iconView topAnchor]]];
         }
         
         NSTextField *captionField = [[NSTextField alloc] init];
@@ -723,9 +722,9 @@
         [captionField setTranslatesAutoresizingMaskIntoConstraints:NO];
         [bgView addSubview:captionField];
         
-        [constraints2 addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:SIDE_CAPTION_MARGIN forItem:captionField 
toItem:bgView]];
-        [constraints2 addObject:[NSLayoutConstraint constraintWithItem:bgView 
attribute:NSLayoutAttributeTrailing 
relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:captionField 
attribute:NSLayoutAttributeTrailing multiplier:1.0 
constant:SIDE_CAPTION_MARGIN]];
-        [constraints2 addObject:[NSLayoutConstraint 
constraintWithTopMargin:prevBgView ? TOP_CAPTION_MARGIN : TOP_CAPTION_MARGIN + 
TOP_MARGIN forItem:captionField toItem:bgView]];
+        [constraints2 addObject:[[captionField leadingAnchor] 
constraintEqualToAnchor:[bgView leadingAnchor] constant:SIDE_CAPTION_MARGIN]];
+        [constraints2 addObject:[[bgView trailingAnchor] 
constraintGreaterThanOrEqualToAnchor:[captionField trailingAnchor] 
constant:SIDE_CAPTION_MARGIN]];
+        [constraints2 addObject:[[captionField topAnchor] 
constraintEqualToAnchor:[bgView topAnchor] constant:prevBgView ? 
TOP_CAPTION_MARGIN : TOP_CAPTION_MARGIN + TOP_MARGIN]];
         
         NSButton *prevButton = nil;
         for (NSString *identifier in [self 
paneIdentifiersForCategory:category]) {
@@ -748,18 +747,18 @@
             
             if (firstButton) {
                 NSMutableArray *constraints3 = bgView == [firstButton 
superview] ? constraints2 : constraints;
-                [constraints3 addObject:[NSLayoutConstraint 
constraintWithItem:button attribute:NSLayoutAttributeWidth 
relatedBy:NSLayoutRelationEqual toItem:firstButton 
attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]];
-                [constraints3 addObject:[NSLayoutConstraint 
constraintWithItem:button attribute:NSLayoutAttributeHeight 
relatedBy:NSLayoutRelationEqual toItem:firstButton 
attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0]];
+                [constraints3 addObject:[[button widthAnchor] 
constraintEqualToAnchor:[firstButton widthAnchor]]];
+                [constraints3 addObject:[[button heightAnchor] 
constraintEqualToAnchor:[firstButton heightAnchor]]];
             } else {
                 firstButton = button;
             }
             if (prevButton) {
-                [constraints2 addObject:[NSLayoutConstraint 
constraintWithLeadingSpacing:ICON_SPACING forItem:button toItem:prevButton]];
-                [constraints2 addObject:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:prevButton toItem:button]];
+                [constraints2 addObject:[[button leadingAnchor] 
constraintEqualToAnchor:[prevButton trailingAnchor] constant:ICON_SPACING]];
+                [constraints2 addObject:[[prevButton topAnchor] 
constraintEqualToAnchor:[button topAnchor]]];
             } else {
-                [constraints2 addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:SIDE_ICON_MARGIN forItem:button toItem:bgView]];
-                [constraints2 addObject:[NSLayoutConstraint 
constraintWithTopSpacing:TOP_ICON_MARGIN forItem:button toItem:captionField]];
-                [constraints2 addObject:[NSLayoutConstraint 
constraintWithBottomMargin:BOTTOM_ICON_MARGIN forItem:button toItem:bgView]];
+                [constraints2 addObject:[[button leadingAnchor] 
constraintEqualToAnchor:[bgView leadingAnchor] constant:SIDE_ICON_MARGIN]];
+                [constraints2 addObject:[[button topAnchor] 
constraintEqualToAnchor:[captionField bottomAnchor] constant:TOP_ICON_MARGIN]];
+                [constraints2 addObject:[[bgView bottomAnchor] 
constraintEqualToAnchor:[button bottomAnchor] constant:BOTTOM_ICON_MARGIN]];
                 bottomConstraint = [constraints2 lastObject];
             }
             
@@ -766,17 +765,17 @@
             prevButton = button;
         }
         
-        [constraints2 addObject:[NSLayoutConstraint constraintWithItem:bgView 
attribute:NSLayoutAttributeTrailing 
relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:prevButton 
attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:SIDE_ICON_MARGIN]];
-        [constraints2 addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:SIDE_ICON_MARGIN forItem:prevButton 
toItem:bgView]];
+        [constraints2 addObject:[[bgView trailingAnchor] 
constraintGreaterThanOrEqualToAnchor:[prevButton trailingAnchor] 
constant:SIDE_ICON_MARGIN]];
+        [constraints2 addObject:[[bgView trailingAnchor] 
constraintEqualToAnchor:[prevButton trailingAnchor] constant:SIDE_ICON_MARGIN]];
         [[constraints2 lastObject] setPriority:99.0];
         
-        [bgView addConstraints:constraints2];
+        [NSLayoutConstraint activateConstraints:constraints2];
         
         prevBgView = bgView;
     }
-    [constraints addObject:[NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:prevBgView toItem:iconView]];
+    [constraints addObject:[[iconView bottomAnchor] 
constraintEqualToAnchor:[prevBgView bottomAnchor]]];
     [bottomConstraint setConstant:BOTTOM_ICON_MARGIN + BOTTOM_MARGIN];
-    [iconView addConstraints:constraints];
+    [NSLayoutConstraint activateConstraints:constraints];
     [iconView setTranslatesAutoresizingMaskIntoConstraints:NO];
     
     return iconView;

Modified: trunk/bibdesk/BDSKSaveAccessoryViewController.m
===================================================================
--- trunk/bibdesk/BDSKSaveAccessoryViewController.m     2024-03-05 15:09:11 UTC 
(rev 28830)
+++ trunk/bibdesk/BDSKSaveAccessoryViewController.m     2024-03-09 10:39:35 UTC 
(rev 28831)
@@ -38,7 +38,6 @@
 
 #import "BDSKSaveAccessoryViewController.h"
 #import "BDSKStringEncodingManager.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 
 @implementation BDSKSaveAccessoryViewController
@@ -78,10 +77,10 @@
     [[self view] addSubview:popup];
     
     NSMutableArray *constraints = [NSMutableArray array];
-    [constraints addObject:[NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:popup toItem:saveTextEncodingPopupButton]];
-    [constraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:popup 
toItem:saveTextEncodingPopupButton]];
-    [constraints addObject:[NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:popup toItem:formatLabelField]];
-    [[self view] addConstraints:constraints];
+    [constraints addObject:[[popup leadingAnchor] 
constraintEqualToAnchor:[saveTextEncodingPopupButton leadingAnchor]]];
+    [constraints addObject:[[saveTextEncodingPopupButton trailingAnchor] 
constraintEqualToAnchor:[popup trailingAnchor]]];
+    [constraints addObject:[[popup centerYAnchor] 
constraintEqualToAnchor:[formatLabelField centerYAnchor]]];
+    [NSLayoutConstraint activateConstraints:constraints];
 }
 
 - (NSString *)selectedFileType {

Modified: trunk/bibdesk/BDSKSecureTextField.m
===================================================================
--- trunk/bibdesk/BDSKSecureTextField.m 2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BDSKSecureTextField.m 2024-03-09 10:39:35 UTC (rev 28831)
@@ -37,7 +37,6 @@
  */
 
 #import "BDSKSecureTextField.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSGeometry_BDSKExtensions.h"
 #import "NSView_BDSKExtensions.h"
 #import "BDSKEmbeddedButton.h"
@@ -108,13 +107,13 @@
     [button setTranslatesAutoresizingMaskIntoConstraints:NO];
     [button setContentCompressionResistancePriority:1.0 
forOrientation:NSLayoutConstraintOrientationHorizontal];
     [button setContentCompressionResistancePriority:1.0 
forOrientation:NSLayoutConstraintOrientationVertical];
-    [button addConstraint:[NSLayoutConstraint constraintWithItem:button 
attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:button 
attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0]];
+    [[[button widthAnchor] constraintEqualToAnchor:[button heightAnchor]] 
setActive:YES];
     [self addSubview:button];
     CGFloat margin = [self isBordered] || [self isBezeled] ? 1.0 : -1.0;
-    [self addConstraints:@[
-        [NSLayoutConstraint constraintWithTrailingMargin:2.0 - [self 
alignmentRectInsets].right forItem:button toItem:self],
-        [NSLayoutConstraint constraintWithTopMargin:margin forItem:button 
toItem:self],
-        [NSLayoutConstraint constraintWithBottomMargin:margin forItem:button 
toItem:self]]];
+    [NSLayoutConstraint activateConstraints:@[
+        [[self trailingAnchor] constraintEqualToAnchor:[button trailingAnchor] 
constant:2.0 - [self alignmentRectInsets].right],
+        [[button topAnchor] constraintEqualToAnchor:[self topAnchor] 
constant:margin],
+        [[self bottomAnchor] constraintEqualToAnchor:[button bottomAnchor] 
constant:margin]]];
 }
 
 - (Class)cellClass {

Modified: trunk/bibdesk/BDSKStatusBar.m
===================================================================
--- trunk/bibdesk/BDSKStatusBar.m       2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BDSKStatusBar.m       2024-03-09 10:39:35 UTC (rev 28831)
@@ -41,7 +41,6 @@
 #import "NSGeometry_BDSKExtensions.h"
 #import "NSAnimationContext_BDSKExtensions.h"
 #import "NSView_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 #define LEFT_MARGIN                            5.0
 #define RIGHT_MARGIN            15.0
@@ -84,9 +83,9 @@
         [textField 
setContentCompressionResistancePriority:NSLayoutPriorityDefaultLow 
forOrientation:NSLayoutConstraintOrientationHorizontal];
         [self addSubview:textField];
         NSArray *constraints = @[
-            [NSLayoutConstraint constraintWithLeadingMargin:LEFT_MARGIN + 
TEXT_INSET forItem:textField toItem:self],
-            [NSLayoutConstraint constraintWithTrailingMargin:RIGHT_MARGIN + 
TEXT_INSET forItem:textField toItem:self],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:textField toItem:self]];
+            [[textField leadingAnchor] constraintEqualToAnchor:[self 
leadingAnchor] constant:LEFT_MARGIN + TEXT_INSET],
+            [[self trailingAnchor] constraintEqualToAnchor:[textField 
trailingAnchor] constant:RIGHT_MARGIN + TEXT_INSET],
+            [[textField centerYAnchor] constraintEqualToAnchor:[self 
centerYAnchor]]];
         [[constraints objectAtIndex:1] setPriority:499.0];
         [NSLayoutConstraint activateConstraints:constraints];
         
@@ -168,16 +167,16 @@
     if (visible) {
         [[view window] setContentBorderThickness:statusHeight 
forEdge:NSMinYEdge];
         [contentView addSubview:self];
-        [constraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:self toItem:contentView]];
-        [constraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:self toItem:contentView]];
-        [constraints addObject:[NSLayoutConstraint 
constraintWithBottomMargin:duration > 0.0 ? -statusHeight : 0.0 forItem:self 
toItem:contentView]];
-        [constraints addObject:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:self toItem:view]];
+        [constraints addObject:[[self leadingAnchor] 
constraintEqualToAnchor:[contentView leadingAnchor]]];
+        [constraints addObject:[[contentView trailingAnchor] 
constraintEqualToAnchor:[self trailingAnchor]]];
+        [constraints addObject:[[contentView bottomAnchor] 
constraintEqualToAnchor:[self bottomAnchor] constant:duration > 0.0 ? 
-statusHeight : 0.0]];
+        [constraints addObject:[[self topAnchor] constraintEqualToAnchor:[view 
bottomAnchor]]];
         [bottomConstraint setActive:NO];
-        [contentView addConstraints:constraints];
+        [NSLayoutConstraint activateConstraints:constraints];
         [contentView layoutSubtreeIfNeeded];
         bottomConstraint = [constraints objectAtIndex:2];
     } else {
-        [constraints addObject:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:view toItem:contentView]];
+        [constraints addObject:[[contentView bottomAnchor] 
constraintEqualToAnchor:[view bottomAnchor]]];
     }
     
     if (duration > 0.0) {
@@ -424,8 +423,8 @@
                
         [self addSubview:progressIndicator];
         [NSLayoutConstraint activateConstraints:@[
-            [NSLayoutConstraint constraintWithTrailingMargin:rightMargin + 
[progressIndicator alignmentRectInsets].right forItem:progressIndicator 
toItem:self],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:progressIndicator toItem:self]]];
+            [[self trailingAnchor] constraintEqualToAnchor:[progressIndicator 
trailingAnchor] constant:rightMargin + [progressIndicator 
alignmentRectInsets].right],
+            [[progressIndicator centerYAnchor] constraintEqualToAnchor:[self 
centerYAnchor]]]];
         
         [[self constraintWithSecondItem:textField 
secondAttribute:NSLayoutAttributeTrailing] setConstant:[self fullRightMargin]];
 

Modified: trunk/bibdesk/BDSKTemplateDocument.m
===================================================================
--- trunk/bibdesk/BDSKTemplateDocument.m        2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKTemplateDocument.m        2024-03-09 10:39:35 UTC (rev 
28831)
@@ -55,7 +55,6 @@
 #import "NSArray_BDSKExtensions.h"
 #import "BDSKDocumentController.h"
 #import "NSAttributedString_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 static CGFloat BDSKDefaultFontSizes[] = {8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 
14.0, 16.0, 18.0, 20.0, 24.0, 28.0, 32.0, 48.0, 64.0};
 
@@ -214,12 +213,12 @@
         for (NSView *view in views)
             width = fmax(width, [view intrinsicContentSize].width);
         for (NSView *view in views)
-            [view addConstraint:[NSLayoutConstraint constraintWithWidth:width 
forItem:view]];
+            [[[view widthAnchor] constraintEqualToConstant:width] 
setActive:YES];
     }
     CGFloat width = [fieldOptionsView fittingSize].width;
     for (NSView *view in @[appendingOptionsView, textOptionsView, 
fontOptionsView])
-        [view addConstraint:[NSLayoutConstraint constraintWithWidth:width 
forItem:view]];
-    [optionsView addConstraint:[NSLayoutConstraint 
constraintWithItem:optionsView attribute:NSLayoutAttributeWidth 
relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil 
attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:width]];
+        [[[view widthAnchor] constraintEqualToConstant:width] setActive:YES];
+    [[[optionsView widthAnchor] constraintGreaterThanOrEqualToConstant:width] 
setActive:YES];
     
     if (@available(macOS 10.14, *)) {
         [prefixTemplateTextView setDrawsBackground:NO];
@@ -827,11 +826,11 @@
         
         for (NSView *view in optionViews) {
             [optionsView addSubview:view];
-            [optionsView addConstraint:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:view toItem:optionsView]];
+            [[[view leadingAnchor] constraintEqualToAnchor:[optionsView 
leadingAnchor]] setActive:YES];
             if (prevView)
-                [optionsView addConstraint:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:view toItem:prevView]];
+                [[[view topAnchor] constraintEqualToAnchor:[prevView 
bottomAnchor]] setActive:YES];
             else
-                [optionsView addConstraint:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:view toItem:optionsView]];
+                [[[view topAnchor] constraintEqualToAnchor:[optionsView 
topAnchor]] setActive:YES];
             prevView = view;
         }
     }

Modified: trunk/bibdesk/BDSKTouchBarButtonGroup.m
===================================================================
--- trunk/bibdesk/BDSKTouchBarButtonGroup.m     2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKTouchBarButtonGroup.m     2024-03-09 10:39:35 UTC (rev 
28831)
@@ -37,7 +37,6 @@
  */
 
 #import "BDSKTouchBarButtonGroup.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 @implementation BDSKTouchBarButtonGroup
 
@@ -69,17 +68,17 @@
             
             // Custom layout is used for equal width buttons, to look more 
keyboard-like and mimic standard alerts
             // 
https://github.com/sparkle-project/Sparkle/pull/987#issuecomment-272324726
-            [constraints addObject:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:buttonCopy toItem:buttonGroup]];
-            [constraints addObject:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:buttonCopy toItem:buttonGroup]];
+            [constraints addObject:[[buttonCopy topAnchor] 
constraintEqualToAnchor:[buttonGroup topAnchor]]];
+            [constraints addObject:[[buttonGroup bottomAnchor] 
constraintEqualToAnchor:[buttonCopy bottomAnchor]]];
             if (i == 0) {
-                [constraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:buttonCopy toItem:buttonGroup]];
+                [constraints addObject:[[buttonGroup trailingAnchor] 
constraintEqualToAnchor:[buttonCopy trailingAnchor]]];
             } else {
-                [constraints addObject:[NSLayoutConstraint 
constraintWithLeadingSpacing:i == 1 ? 8 : 32 forItem:[buttonCopies 
objectAtIndex:i - 1] toItem:buttonCopy]];
-                [constraints addObject:[NSLayoutConstraint 
constraintWithItem:buttonCopy attribute:NSLayoutAttributeWidth 
relatedBy:NSLayoutRelationEqual toItem:[buttonCopies objectAtIndex:i - 1] 
attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]];
+                [constraints addObject:[[[buttonCopies objectAtIndex:i - 
1]leadingAnchor] constraintEqualToAnchor:[buttonCopy trailingAnchor] constant:i 
== 1 ? 8 : 32]];
+                [constraints addObject:[[buttonCopy widthAnchor] 
constraintEqualToAnchor:[[buttonCopies objectAtIndex:i - 1] widthAnchor]]];
                 [[constraints lastObject] setPriority:250];
             }
             if (i == iMax - 1) {
-                [constraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:buttonCopy toItem:buttonGroup]];
+                [constraints addObject:[[buttonCopy leadingAnchor] 
constraintEqualToAnchor:[buttonGroup leadingAnchor]]];
             }
         }
         [NSLayoutConstraint activateConstraints:constraints];

Modified: trunk/bibdesk/BDSKZoomablePDFView.m
===================================================================
--- trunk/bibdesk/BDSKZoomablePDFView.m 2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BDSKZoomablePDFView.m 2024-03-09 10:39:35 UTC (rev 28831)
@@ -43,7 +43,6 @@
 #import "NSColor_BDSKExtensions.h"
 #import "NSGeometry_BDSKExtensions.h"
 #import "NSObject_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 
 @interface BDSKBackgroundView : NSView
@@ -261,14 +260,14 @@
         [scalePopUpButton setTranslatesAutoresizingMaskIntoConstraints:NO];
         [backgroundView addSubview:scalePopUpButton];
         
-        [self addConstraints:@[
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:backgroundView toItem:self],
-            [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:backgroundView toItem:self]]];
-        [backgroundView addConstraints:@[
-            [NSLayoutConstraint constraintWithLeadingMargin:2.0 
forItem:scalePopUpButton toItem:backgroundView],
-            [NSLayoutConstraint constraintWithTrailingMargin:1.0 
forItem:scalePopUpButton toItem:backgroundView],
-            [NSLayoutConstraint constraintWithTopMargin:1.0 
forItem:scalePopUpButton toItem:backgroundView],
-            [NSLayoutConstraint constraintWithBottomMargin:1.0 
forItem:scalePopUpButton toItem:backgroundView]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[backgroundView leadingAnchor] constraintEqualToAnchor:[self 
leadingAnchor]],
+            [[self bottomAnchor] constraintEqualToAnchor:[backgroundView 
bottomAnchor]]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[scalePopUpButton leadingAnchor] 
constraintEqualToAnchor:[backgroundView leadingAnchor] constant:2.0],
+            [[backgroundView trailingAnchor] 
constraintEqualToAnchor:[scalePopUpButton trailingAnchor] constant:1.0],
+            [[scalePopUpButton topAnchor] 
constraintEqualToAnchor:[backgroundView topAnchor]],
+            [[backgroundView bottomAnchor] 
constraintEqualToAnchor:[scalePopUpButton bottomAnchor] constant:1.0]]];
         
         [self updateScrollerInsets];
         

Modified: trunk/bibdesk/BDSKZoomableTextView.m
===================================================================
--- trunk/bibdesk/BDSKZoomableTextView.m        2024-03-05 15:09:11 UTC (rev 
28830)
+++ trunk/bibdesk/BDSKZoomableTextView.m        2024-03-09 10:39:35 UTC (rev 
28831)
@@ -40,7 +40,6 @@
 #import "NSView_BDSKExtensions.h"
 #import "NSPrintOperation_BDSKExtensions.h"
 #import "NSObject_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 
 @interface BDSKZoomableTextView (BDSKPrivate)
@@ -164,21 +163,21 @@
         
         NSView *contentView = [backgroundView contentView];
         NSArray *constraints = @[
-            [NSLayoutConstraint constraintWithLeadingMargin:2.0 
forItem:scalePopUpButton toItem:contentView],
-            [NSLayoutConstraint constraintWithTrailingMargin:1.0 
forItem:scalePopUpButton toItem:contentView],
-            [NSLayoutConstraint constraintWithBottomMargin:1.0 
forItem:scalePopUpButton toItem:contentView],
-            [NSLayoutConstraint constraintWithTopMargin:1.0 
forItem:scalePopUpButton toItem:contentView]];
-        [contentView addConstraints:constraints];
+            [[scalePopUpButton leadingAnchor] 
constraintEqualToAnchor:[contentView leadingAnchor] constant:2.0],
+            [[contentView trailingAnchor] 
constraintEqualToAnchor:[scalePopUpButton trailingAnchor] constant:1.0],
+            [[contentView bottomAnchor] 
constraintEqualToAnchor:[scalePopUpButton bottomAnchor] constant:1],
+            [[scalePopUpButton topAnchor] constraintEqualToAnchor:[contentView 
topAnchor]]];
+        [NSLayoutConstraint activateConstraints:constraints];
         
         contentView = [containerView contentView];
         constraints = @[
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:backgroundView toItem:contentView],
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:scrollView toItem:contentView],
-            [NSLayoutConstraint constraintWithTrailingMargin:0.0 
forItem:scrollView toItem:contentView],
-            [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:backgroundView toItem:contentView],
-            [NSLayoutConstraint constraintWithTopMargin:0.0 forItem:scrollView 
toItem:contentView],
-            [NSLayoutConstraint constraintWithBottomMargin:0.0 
forItem:scrollView toItem:contentView]];
-        [contentView addConstraints:constraints];
+            [[backgroundView leadingAnchor] 
constraintEqualToAnchor:[contentView leadingAnchor]],
+            [[scrollView leadingAnchor] constraintEqualToAnchor:[contentView 
leadingAnchor]],
+            [[contentView trailingAnchor] constraintEqualToAnchor:[scrollView 
trailingAnchor]],
+            [[contentView bottomAnchor] 
constraintEqualToAnchor:[backgroundView bottomAnchor]],
+            [[scrollView topAnchor] constraintEqualToAnchor:[contentView 
topAnchor]],
+            [[contentView bottomAnchor] constraintEqualToAnchor:[contentView 
bottomAnchor]]];
+        [NSLayoutConstraint activateConstraints:constraints];
         
         [scrollView setAutomaticallyAdjustsContentInsets:NO];
         [scrollView setContentInsets:NSEdgeInsetsMake(0.0, 0.0, 
[scalePopUpButton intrinsicContentSize].height + 2.0, 0.0)];

Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BibDocument.m 2024-03-09 10:39:35 UTC (rev 28831)
@@ -123,7 +123,6 @@
 #import "NSPasteboard_BDSKExtensions.h"
 #import "BDSKSaveAccessoryViewController.h"
 #import "NSObject_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "BDSKCompletionManager.h"
 #import "NSPointerFunctions_BDSKExtensions.h"
 #import "BDSKWebGroupViewController.h"
@@ -399,11 +398,11 @@
     NSScrollView *scrollView = [tableView enclosingScrollView];
     [mainView addSubview:scrollView];
     NSArray *constraints = @[
-        [NSLayoutConstraint constraintWithLeadingMargin:0.0 forItem:scrollView 
toItem:mainView],
-        [NSLayoutConstraint constraintWithTrailingMargin:0.0 
forItem:scrollView toItem:mainView],
-        [NSLayoutConstraint constraintWithBottomMargin:0.0 forItem:scrollView 
toItem:mainView],
-        [NSLayoutConstraint constraintWithTopMargin:-1.0 forItem:scrollView 
toItem:mainView]];
-    [mainView addConstraints:constraints];
+        [[scrollView leadingAnchor] constraintEqualToAnchor:[mainView 
leadingAnchor]],
+        [[mainView trailingAnchor] constraintEqualToAnchor:[scrollView 
trailingAnchor]],
+        [[scrollView bottomAnchor] constraintEqualToAnchor:[mainView 
bottomAnchor]],
+        [[mainView topAnchor] constraintEqualToAnchor:[scrollView topAnchor] 
constant:-1]];
+    [NSLayoutConstraint activateConstraints:constraints];
     
     // TableView setup
     
@@ -1308,7 +1307,7 @@
         if([[NSUserDefaults standardUserDefaults] 
boolForKey:BDSKAutoSortForCrossrefsKey])
             [self performSortForCrossrefs];
         NSString *theBasePath = [[[saveTargetURL URLByStandardizingPath] path] 
stringByDeletingLastPathComponent];
-        BOOL drop = [aType isEqualToString:BDSKMinimalBibTeXDocumentType];
+        BOOL drop = [aType isEqualToString:BDSKMinimalBibTeXDocumentType];  
         data = [self bibTeXDataDroppingInternal:drop 
relativeToPath:theBasePath error:&error];
     }else if ([aType isEqualToString:BDSKRISDocumentType]){
         data = [self RISDataAndReturnError:&error];

Modified: trunk/bibdesk/BibDocument_Groups.m
===================================================================
--- trunk/bibdesk/BibDocument_Groups.m  2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BibDocument_Groups.m  2024-03-09 10:39:35 UTC (rev 28831)
@@ -95,7 +95,6 @@
 #import "BDSKGroupCellView.h"
 #import "BDSKGroupRowView.h"
 #import "BDSKControlTableCellView.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSPointerFunctions_BDSKExtensions.h"
 #import "CFString_BDSKExtensions.h"
 
@@ -680,10 +679,10 @@
     }
     [view addSubview:spinner];
     [view setProgressIndicator:spinner];
-    [view addConstraints:@[
-        [NSLayoutConstraint constraintWithLeadingSpacing:2.0 forItem:spinner 
toItem:[view nameField]],
-        [NSLayoutConstraint constraintWithTrailingMargin:2.0 forItem:spinner 
toItem:view],
-        [NSLayoutConstraint constraintWithCenterYOffset:0.0 forItem:spinner 
toItem:view]]];
+    [NSLayoutConstraint activateConstraints:@[
+        [[spinner leadingAnchor] constraintEqualToAnchor:[[view nameField] 
trailingAnchor] constant:2.0],
+        [[view trailingAnchor] constraintEqualToAnchor:[spinner 
trailingAnchor] constant:2.0],
+        [[spinner centerYAnchor] constraintEqualToAnchor:[view 
centerYAnchor]]]];
     [spinner startAnimation:nil];
 }
 

Modified: trunk/bibdesk/BibDocument_Search.m
===================================================================
--- trunk/bibdesk/BibDocument_Search.m  2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BibDocument_Search.m  2024-03-09 10:39:35 UTC (rev 28831)
@@ -65,7 +65,6 @@
 #import "BDSKEdgeView.h"
 #import "BDSKButtonBar.h"
 #import "NSColor_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "NSWindowController_BDSKExtensions.h"
 
 static NSString *titleForSearchField(NSString *field) {
@@ -299,7 +298,7 @@
     searchButtonEdgeView = [[BDSKEdgeView alloc] initWithFrame:NSMakeRect(0.0, 
0.0, 0.0, 29.0)];
     [searchButtonEdgeView setEdges:BDSKMinYEdgeMask];
     [searchButtonEdgeView setTranslatesAutoresizingMaskIntoConstraints:NO];
-    [searchButtonEdgeView addConstraint:[NSLayoutConstraint 
constraintWithHeight:29.0 forItem:searchButtonEdgeView]];
+    [[[searchButtonEdgeView heightAnchor] constraintEqualToConstant:29.0] 
setActive:YES];
     if ([searchButtonEdgeView backgroundColors])
         [searchButtonEdgeView setBackgroundColors:@[[NSColor 
colorWithCalibratedWhite:0.82 alpha:1.0], [NSColor 
colorWithCalibratedWhite:0.914 alpha:1.0]]];
     

Modified: trunk/bibdesk/BibDocument_UI.m
===================================================================
--- trunk/bibdesk/BibDocument_UI.m      2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BibDocument_UI.m      2024-03-09 10:39:35 UTC (rev 28831)
@@ -86,7 +86,6 @@
 #import "BDSKCustomCiteDrawerController.h"
 #import "NSAnimationContext_BDSKExtensions.h"
 #import "NSView_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 #import "BDSKGroupCellView.h"
 #import "BDSKZoomablePDFView.h"
 #import "BDSKStatusBar.h"
@@ -452,7 +451,7 @@
                     [view reflectScrollView:nil animate:NO];
                 [view removeFromSuperview];
                 [oldViews removeObjectAtIndex:i];
-                [controlContentView addConstraint:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:[oldViews objectAtIndex:i] 
toItem:[oldViews objectAtIndex:i - 1]]];
+                [[[[oldViews objectAtIndex:i] topAnchor] 
constraintEqualToAnchor:[[oldViews objectAtIndex:i - 1] bottomAnchor]] 
setActive:YES];
             }
             [self updateControlViews];
             return;
@@ -484,10 +483,10 @@
             newView = [tableView enclosingScrollView];
         }
         viewConstraints = @[
-            [NSLayoutConstraint constraintWithLeadingMargin:0.0 
forItem:newView toItem:mainView],
-            [NSLayoutConstraint constraintWithTrailingMargin:0.0 
forItem:newView toItem:mainView],
-            [NSLayoutConstraint constraintWithTopMargin:-1.0 forItem:newView 
toItem:mainView],
-            [NSLayoutConstraint constraintWithBottomMargin:0.0 forItem:newView 
toItem:mainView]];
+            [[newView leadingAnchor] constraintEqualToAnchor:[mainView 
leadingAnchor    ]],
+            [[mainView trailingAnchor] constraintEqualToAnchor:[newView 
trailingAnchor]],
+            [[newView topAnchor] constraintEqualToAnchor:[mainView topAnchor] 
constant:-1],
+            [[mainView bottomAnchor] constraintEqualToAnchor:[newView 
bottomAnchor]]];
     }
     
     NSTimeInterval duration = [NSAnimationContext 
defaultAnimationTimeInterval];
@@ -519,7 +518,7 @@
         if (@available(macOS 10.14, *))
             reflectedView = [(docState.controlViewDisplay & 
BDSKControlViewFileSearch) ? [fileSearchController tableView] : tableView 
enclosingScrollView];
         if ([oldViews count] == 0)
-            [controlContentView removeConstraint:[controlContentView 
constraintWithFirstItem:controlContentView 
firstAttribute:NSLayoutAttributeHeight]];
+            [[controlContentView constraintWithFirstItem:controlContentView 
firstAttribute:NSLayoutAttributeHeight] setActive:NO];
         
         if ([topViews count]) {
             NSView *prevView = [oldViews firstObject];
@@ -526,19 +525,19 @@
             for (NSView *view in topViews) {
                 [view setTranslatesAutoresizingMaskIntoConstraints:NO];
                 [controlContentView addSubview:view positioned:NSWindowBelow 
relativeTo:nil];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:view toItem:controlContentView]];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:view toItem:controlContentView]];
+                [newConstraints addObject:[[view leadingAnchor] 
constraintEqualToAnchor:[controlContentView leadingAnchor]]];
+                [newConstraints addObject:[[controlContentView trailingAnchor] 
constraintEqualToAnchor:[view trailingAnchor]]];
                 if (prevView)
-                    [newConstraints addObject:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:prevView toItem:view]];
+                    [newConstraints addObject:[[prevView topAnchor] 
constraintEqualToAnchor:[view topAnchor]]];
                 else
-                    [newConstraints addObject:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:view toItem:controlContentView]];
+                    [newConstraints addObject:[[controlContentView 
bottomAnchor] constraintEqualToAnchor:[view bottomAnchor]]];
                 prevView = view;
                 if (reflectedView)
                     [(BDSKEdgeView *)view reflectScrollView:reflectedView 
animate:NO];
             }
             if (topConstraint)
-                [controlContentView removeConstraint:topConstraint];
-            topConstraint = [NSLayoutConstraint 
constraintWithTopMargin:-topOffset forItem:prevView toItem:controlContentView];
+                [topConstraint setActive:NO];
+            topConstraint = [[prevView topAnchor] 
constraintEqualToAnchor:[controlContentView topAnchor] constant:-topOffset];
             [newConstraints addObject:topConstraint];
         }
         
@@ -547,22 +546,22 @@
             for (NSView *view in bottomViews) {
                 [view setTranslatesAutoresizingMaskIntoConstraints:NO];
                 [controlContentView addSubview:view positioned:NSWindowAbove 
relativeTo:nil];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithLeadingMargin:0.0 forItem:view toItem:controlContentView]];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithTrailingMargin:0.0 forItem:view toItem:controlContentView]];
+                [newConstraints addObject:[[view leadingAnchor] 
constraintEqualToAnchor:[controlContentView leadingAnchor]]];
+                [newConstraints addObject:[[controlContentView trailingAnchor] 
constraintEqualToAnchor:[view trailingAnchor]]];
                 if (prevView)
-                    [newConstraints addObject:[NSLayoutConstraint 
constraintWithTopSpacing:0.0 forItem:view toItem:prevView]];
+                    [newConstraints addObject:[[view topAnchor] 
constraintEqualToAnchor:[prevView bottomAnchor]]];
                 else
-                    [newConstraints addObject:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:view toItem:controlContentView]];
+                    [newConstraints addObject:[[view topAnchor] 
constraintEqualToAnchor:[controlContentView topAnchor]]];
                 prevView = view;
                 if (reflectedView)
                     [(BDSKEdgeView *)view reflectScrollView:reflectedView 
animate:NO];
             }
             if (bottomConstraint)
-                [controlContentView removeConstraint:bottomConstraint];
-            bottomConstraint = [NSLayoutConstraint 
constraintWithBottomMargin:-bottomOffset forItem:prevView 
toItem:controlContentView];
+                [bottomConstraint setActive:NO];
+            bottomConstraint = [[controlContentView bottomAnchor] 
constraintEqualToAnchor:[prevView bottomAnchor] constant:-bottomOffset];
             [newConstraints addObject:bottomConstraint];
         }
-        [controlContentView addConstraints:newConstraints];
+        [NSLayoutConstraint activateConstraints:newConstraints];
         
         topOffset = bottomOffset = 0.0;
         
@@ -569,15 +568,15 @@
     } else if (isRemove) {
         
         if ([topViews count] + [bottomViews count] == [oldViews count]) {
-            [newConstraints addObject:[NSLayoutConstraint 
constraintWithHeight:0.0 forItem:controlContentView]];
+            [newConstraints addObject:[[controlContentView heightAnchor] 
constraintEqualToConstant:0.0]];
         } else {
             if ([topViews count]) {
                 NSView *view = [oldViews objectAtIndex:[topViews count]];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithTopMargin:0.0 forItem:view toItem:controlContentView]];
+                [newConstraints addObject:[[view topAnchor] 
constraintEqualToAnchor:[controlContentView topAnchor]]];
             }
             if ([bottomViews count]) {
                 NSView *view = [oldViews objectAtIndex:[oldViews count] - 
[bottomViews count] - 1];
-                [newConstraints addObject:[NSLayoutConstraint 
constraintWithBottomMargin:0.0 forItem:view toItem:controlContentView]];
+                [newConstraints addObject:[[controlContentView bottomAnchor] 
constraintEqualToAnchor:[view bottomAnchor]]];
             }
         }
         
@@ -594,7 +593,7 @@
 
             if (newView) {
                 [[mainView animator] replaceSubview:oldView with:newView];
-                [mainView addConstraints:viewConstraints];
+                [NSLayoutConstraint activateConstraints:viewConstraints];
                 
                 if (@available(macOS 10.14, *)) {
                     for (BDSKEdgeView *view in oldViews)
@@ -614,7 +613,7 @@
                     [view removeFromSuperview];
                 }
                 if (newConstraints)
-                    [controlContentView addConstraints:newConstraints];
+                    [NSLayoutConstraint activateConstraints:newConstraints];
             }
             
             docFlags.isAnimating = NO;
@@ -626,7 +625,7 @@
         
         if (newView) {
             [mainView replaceSubview:oldView with:newView];
-            [mainView addConstraints:viewConstraints];
+            [NSLayoutConstraint activateConstraints:viewConstraints];
             
             if (@available(macOS 10.14, *)) {
                 for (BDSKEdgeView *view in oldViews)
@@ -642,7 +641,7 @@
                 [view removeFromSuperview];
             }
             if (newConstraints)
-                [controlContentView addConstraints:newConstraints];
+                [NSLayoutConstraint activateConstraints:newConstraints];
         }
         
         [self updateControlViews];

Modified: trunk/bibdesk/BibPref_ScriptHooks.m
===================================================================
--- trunk/bibdesk/BibPref_ScriptHooks.m 2024-03-05 15:09:11 UTC (rev 28830)
+++ trunk/bibdesk/BibPref_ScriptHooks.m 2024-03-09 10:39:35 UTC (rev 28831)
@@ -44,7 +44,6 @@
 #import "NSArray_BDSKExtensions.h"
 #import "NSPasteboard_BDSKExtensions.h"
 #import "NSMenu_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
 
 
 @implementation BibPref_ScriptHooks
@@ -180,13 +179,13 @@
         [[button2 cell] setRepresentedObject:[NSNumber numberWithInteger:row]];
         [button2 setTranslatesAutoresizingMaskIntoConstraints:NO];
         [view addSubview:button2];
-        [view addConstraints:@[
-            [NSLayoutConstraint constraintWithTrailingMargin:20.0 
forItem:button1 toItem:view],
-            [NSLayoutConstraint constraintWithLeadingSpacing:8.0 
forItem:button1 toItem:button2],
-            [NSLayoutConstraint constraintWithItem:button2 
attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationGreaterThanOrEqual 
toItem:view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:20.0],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:button1 toItem:view],
-            [NSLayoutConstraint constraintWithCenterYOffset:0.0 
forItem:button2 toItem:view],
-            [NSLayoutConstraint constraintWithTopMargin:10.0 forItem:button1 
toItem:view]]];
+        [NSLayoutConstraint activateConstraints:@[
+            [[view trailingAnchor] constraintEqualToAnchor:[button1 
trailingAnchor] constant:20.0],
+            [[button1 leadingAnchor] constraintEqualToAnchor:[button2 
trailingAnchor]],
+            [[button2 leadingAnchor] 
constraintGreaterThanOrEqualToAnchor:[view leadingAnchor] constant:20.0],
+            [[button1 centerYAnchor] constraintEqualToAnchor:[view 
centerYAnchor]],
+            [[button2 centerYAnchor] constraintEqualToAnchor:[view 
centerYAnchor]],
+            [[button1 topAnchor] constraintEqualToAnchor:[view topAnchor] 
constant:10.0]]];
 
         NSURL *directoryURL = [[NSFileManager defaultManager] 
applicationSupportDirectoryURL];
         NSOpenPanel *openPanel = [NSOpenPanel openPanel];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to