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

Reply via email to