Revision: 30053
          http://sourceforge.net/p/bibdesk/svn/30053
Author:   hofman
Date:     2026-02-24 18:09:44 +0000 (Tue, 24 Feb 2026)
Log Message:
-----------
ignore editing inherited fields when inherited value can change

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

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2026-02-24 17:21:29 UTC (rev 30052)
+++ trunk/bibdesk/BDSKEditor.m  2026-02-24 18:09:44 UTC (rev 30053)
@@ -2338,8 +2338,16 @@
         // Reset if the crossref changed.
         // We should first set the new value, because resetFields will set the 
edited value. This happens when it is set through drag/drop
         NSInteger editedRow = [tableView editedTextRow];
-        if (editedRow != -1 && [[fields objectAtIndex:editedRow] 
isEqualToString:BDSKCrossrefString])
-            [[[self textFieldAtRow:editedRow] currentEditor] 
setString:newValue ?: @""];
+        if (editedRow != -1) {
+            NSString *editedField = [fields objectAtIndex:editedRow];
+            if ([editedField isEqualToString:BDSKCrossrefString]) {
+                [[[self textFieldAtRow:editedRow] currentEditor] 
setString:newValue ?: @""];
+            } else if ([NSString isEmptyAsComplexString:[publication 
valueOfField:editedField inherit:NO]]) {
+                NSString *tmpValue = [publication valueOfField:editedField] ?: 
@"";
+                BDSKEditorTextField *textField = [self 
textFieldAtRow:editedRow];
+                [[textField currentEditor] setString:[textField formatter] ? 
[[textField formatter] editingStringForObjectValue:tmpValue] : tmpValue];
+            }
+        }
         NSArray *currentFields = nil;
         if ([NSString isEmptyString:newValue] != [NSString 
isEmptyString:oldValue])
             // Crossref field was added or removed
@@ -2351,7 +2359,11 @@
     }
     else if(parentChanged){
         // Reset if our parent's cite key changed. Every field value could 
change.
-        [self reloadTableWithFields:nil];
+        NSInteger editedRow = [tableView editedTextRow];
+        if (editedRow != -1 && [NSString isEmptyAsComplexString:[publication 
valueOfField:[fields objectAtIndex:editedRow] inherit:NO]])
+            [self reloadTableIgnoringEditsForField:nil];
+        else
+            [self reloadTableWithFields:nil];
         [authorTableView reloadData];
         [self synchronizeWindowTitleWithDocumentName];
         [self updateCiteKeyDuplicateWarning];

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