Revision: 27013 http://sourceforge.net/p/bibdesk/svn/27013 Author: hofman Date: 2021-10-09 23:14:19 +0000 (Sat, 09 Oct 2021) Log Message: ----------- Check type of first child group for last import group rather than keeping an flag ivar
Modified Paths: -------------- trunk/bibdesk/BDSKParentGroup.h trunk/bibdesk/BDSKParentGroup.m Modified: trunk/bibdesk/BDSKParentGroup.h =================================================================== --- trunk/bibdesk/BDSKParentGroup.h 2021-10-09 06:30:44 UTC (rev 27012) +++ trunk/bibdesk/BDSKParentGroup.h 2021-10-09 23:14:19 UTC (rev 27013) @@ -88,9 +88,7 @@ #pragma mark - -@interface BDSKSmartParentGroup : BDSKParentGroup { - BOOL hasLastImportGroup; -} +@interface BDSKSmartParentGroup : BDSKParentGroup @property (nonatomic, readonly) BDSKLastImportGroup *lastImportGroup; @property (nonatomic, readonly) NSArray *smartGroups; Modified: trunk/bibdesk/BDSKParentGroup.m =================================================================== --- trunk/bibdesk/BDSKParentGroup.m 2021-10-09 06:30:44 UTC (rev 27012) +++ trunk/bibdesk/BDSKParentGroup.m 2021-10-09 23:14:19 UTC (rev 27013) @@ -413,31 +413,30 @@ @dynamic lastImportGroup, smartGroups; - (id)init { - self = [self initWithName:NSLocalizedString(@"Smart", @"source list group row title")]; - if (self) { - hasLastImportGroup = NO; - } - return self; + return [self initWithName:NSLocalizedString(@"Smart", @"source list group row title")]; } - (BDSKGroupType)groupType { return BDSKSmartParentGroupType; } +- (BOOL)hasLastImportGroup { + return [self numberOfChildren] > 0 && [[self childAtIndex:0] groupType] == BDSKLastImportGroupType; +} + - (NSArray *)smartGroups { - if (hasLastImportGroup == 0) - return [self children]; - return [self childrenAtIndex:1 count:[self numberOfChildren] - 1]; + if ([self hasLastImportGroup]) + return [self childrenAtIndex:1 count:[self numberOfChildren] - 1]; + return [self children]; } - (void)addChildGroup:(BDSKGroup *)group { NSRange range = NSMakeRange(0, [self numberOfChildren]); if ([group groupType] == BDSKLastImportGroupType) { - if (hasLastImportGroup) + if ([self hasLastImportGroup]) [self removeChild:[self childAtIndex:0]]; range = NSMakeRange(0, 0); - hasLastImportGroup = YES; } else if ([group groupType] != BDSKSmartGroupType) { return; - } else if (hasLastImportGroup) { + } else if (range.length > 0 && [self hasLastImportGroup]) { range.location++; range.length--; } @@ -444,27 +443,21 @@ [self insertChild:group inRange:range]; } -- (void)removeChildGroup:(BDSKGroup *)group { - if ([group groupType] == BDSKLastImportGroupType) - hasLastImportGroup = NO; - [self removeChild:group]; -} - // return nil if non-existent - (BDSKLastImportGroup *)lastImportGroup { - return hasLastImportGroup ? [self childAtIndex:0] : nil; + if ([self numberOfChildren] > 0) + return nil; + id firstChild = [self childAtIndex:0]; + if ([firstChild groupType] == BDSKLastImportGroupType) + return firstChild; + return nil; } - (void)resort { - if (hasLastImportGroup == NO) + if ([self hasLastImportGroup] == NO) [super resort]; else if ([self numberOfChildren] > 2) [self resortInRange:NSMakeRange(1, [self numberOfChildren] - 1)]; } -- (void)removeAllUndoableChildren { - hasLastImportGroup = NO; - [super removeAllUndoableChildren]; -} - @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit