Revision: 28858
          http://sourceforge.net/p/bibdesk/svn/28858
Author:   hofman
Date:     2024-04-07 08:47:57 +0000 (Sun, 07 Apr 2024)
Log Message:
-----------
rebuild fields before setting them

Modified Paths:
--------------
    trunk/bibdesk/BDSKTextImportController.m

Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m    2024-04-07 08:33:14 UTC (rev 
28857)
+++ trunk/bibdesk/BDSKTextImportController.m    2024-04-07 08:47:57 UTC (rev 
28858)
@@ -718,36 +718,37 @@
     [self updateTypeAndFields];
 }
 
-- (void)updateTypeAndFields{
+- (void)updateTypeAndFields {
     NSString *type = [[self publication] pubType];
     
-    NSInteger editedRow = [itemTableView editedTextRow];
-    NSString *editedField = nil;
-    if (editedRow != -1) {
-        [[self window] makeFirstResponder:nil];
-        editedField = [fields objectAtIndex:editedRow];
-    }
-    
     [itemTypeButton selectItemWithTitle:type];
     
+    NSMutableArray *newFields = [NSMutableArray array];
+    NSMutableArray *extraFields = [NSMutableArray array];
+    NSSet *ignoredFields = [NSSet setWithObjects:BDSKDateAddedString, 
BDSKDateModifiedString, BDSKColorString, nil];
     BDSKTypeManager *typeMan = [BDSKTypeManager sharedManager];
-
-    [fields removeAllObjects];
     
-    [fields addObjectsFromArray:[typeMan standardFieldsForType:type]];
-    [fields addNonDuplicateObjectsFromArray:@[BDSKAbstractString, 
BDSKAnnoteString]];
+    [newFields addObjectsFromArray:[typeMan standardFieldsForType:type]];
+    [newFields addNonDuplicateObjectsFromArray:@[BDSKAbstractString, 
BDSKAnnoteString]];
     
-    NSMutableArray *extraFields = [NSMutableArray array];
-    NSSet *ignoredFields = [NSSet setWithObjects:BDSKDateAddedString, 
BDSKDateModifiedString, BDSKColorString, nil];
     [[[self publication] pubFields] 
enumerateKeysAndObjectsUsingBlock:^(NSString *fieldName, NSString *value, BOOL 
*stop){
-        if ([NSString isEmptyAsComplexString:value] == NO && [fields 
containsObject:fieldName] == NO && [ignoredFields containsObject:fieldName] == 
NO)
+        if ([NSString isEmptyAsComplexString:value] == NO && [newFields 
containsObject:fieldName] == NO && [ignoredFields containsObject:fieldName] == 
NO)
             [extraFields addObject:fieldName];
     }];
     if ([extraFields count]) {
         [extraFields 
sortUsingSelector:@selector(caseInsensitiveNumericCompare:)];
-        [fields addObjectsFromArray:extraFields];
+        [newFields addObjectsFromArray:extraFields];
     }
     
+    NSInteger editedRow = [itemTableView editedTextRow];
+    NSString *editedField = nil;
+    if (editedRow != -1) {
+        [[self window] makeFirstResponder:nil];
+        editedField = [fields objectAtIndex:editedRow];
+    }
+    
+    [fields setArray:newFields];
+    
     [self updateColumnWidths];
     
     [itemTableView reloadData];
@@ -1374,10 +1375,10 @@
     }
     
     NSString *bibtexType = [typeMan bibTeXTypeForDublinCoreType:[metaTagDict 
objectForKey:@"DC.type"]] ?: BDSKMiscString;
-    if ([[item pubType] isEqualToString:bibtexType])
+    if ([[item pubType] isEqualToString:bibtexType] == NO)
+        [item setPubType:bibtexType];
+    else
         [self updateTypeAndFields];
-    else
-        [item setPubType:bibtexType];
 }
 
 - (void)autoDiscoverDataFromFrame:(WebFrame *)frame{
@@ -1489,7 +1490,7 @@
 - (void)autoDiscoverFromStringWithPublication:(BibItem *)pub {
     BibItem *item = [self publication];
     [item setPubFields:[pub pubFields]];
-    if ([[item pubType] isEqualToString:[pub pubType]])
+    if ([[item pubType] isEqualToString:[pub pubType]] == NO)
         [item setPubType:[pub pubType]];
     else
         [self updateTypeAndFields];

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