Revision: 30054
          http://sourceforge.net/p/bibdesk/svn/30054
Author:   hofman
Date:     2026-02-24 18:56:57 +0000 (Tue, 24 Feb 2026)
Log Message:
-----------
convenience method to reset the editing string bbefore reloading fields table

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

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2026-02-24 18:09:44 UTC (rev 30053)
+++ trunk/bibdesk/BDSKEditor.m  2026-02-24 18:56:57 UTC (rev 30054)
@@ -139,7 +139,6 @@
 - (void)setupTypePopUp;
 - (NSArray *)currentFields;
 - (void)reloadTableWithFields:(NSArray *)newFields;
-- (void)reloadTableIgnoringEditsForField:(NSString *)field;
 - (void)updateTableViewDisplay;
 - (void)registerForNotifications;
 - (void)updateCiteKeyDuplicateWarning;
@@ -2291,6 +2290,12 @@
 
 #pragma mark Notification handling
 
+- (void)resetEditingStringAtRow:(NSInteger)row field:(NSString *)field  {
+    NSString *value = [publication valueOfField:field] ?: @"";
+    BDSKEditorTextField *textField = [self textFieldAtRow:row];
+    [[textField currentEditor] setString:[textField formatter] ? [[textField 
formatter] editingStringForObjectValue:value] : value];
+}
+
 - (void)bibDidChange:(NSNotification *)notification{
        NSDictionary *userInfo = [notification userInfo];
        NSString *changeKey = [userInfo objectForKey:BDSKBibItemKeyKey];
@@ -2340,13 +2345,10 @@
         NSInteger editedRow = [tableView editedTextRow];
         if (editedRow != -1) {
             NSString *editedField = [fields objectAtIndex:editedRow];
-            if ([editedField isEqualToString:BDSKCrossrefString]) {
+            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];
-            }
+            else if ([NSString isEmptyAsComplexString:[publication 
valueOfField:editedField inherit:NO]])
+                [self resetEditingStringAtRow:editedRow field:editedField];
         }
         NSArray *currentFields = nil;
         if ([NSString isEmptyString:newValue] != [NSString 
isEmptyString:oldValue])
@@ -2360,10 +2362,12 @@
     else if(parentChanged){
         // Reset if our parent's cite key changed. Every field value could 
change.
         NSInteger editedRow = [tableView editedTextRow];
-        if (editedRow != -1 && [NSString isEmptyAsComplexString:[publication 
valueOfField:[fields objectAtIndex:editedRow] inherit:NO]])
-            [self reloadTableIgnoringEditsForField:nil];
-        else
-            [self reloadTableWithFields:nil];
+        if (editedRow != -1) {
+            NSString *editedField = [fields objectAtIndex:editedRow];
+            if ([NSString isEmptyAsComplexString:[publication 
valueOfField:editedField inherit:NO]])
+                [self resetEditingStringAtRow:editedRow field:editedField];
+        }
+        [self reloadTableWithFields:nil];
         [authorTableView reloadData];
         [self synchronizeWindowTitleWithDocumentName];
         [self updateCiteKeyDuplicateWarning];
@@ -2395,7 +2399,10 @@
        }
     else if (changeKey == nil){
         // all fields are set
-        [self reloadTableIgnoringEditsForField:nil];
+        NSInteger editedRow = [tableView editedTextRow];
+        if (editedRow != -1)
+            [self resetEditingStringAtRow:editedRow field:[fields 
objectAtIndex:editedRow]];
+        [self reloadTableWithFields:[self currentFields]];
         if (inheritedValueChanged == NO)
             [self setupCollectionView];
         [self synchronizeWindowTitleWithDocumentName];
@@ -2430,7 +2437,10 @@
         NSInteger row = [fields indexOfObject:changeKey];
         if (row >= minNumberOfFields && ([NSString 
isEmptyAsComplexString:newValue] != [NSString 
isEmptyAsComplexString:oldValue])) {
                        // a custom field was added or removed
-            [self reloadTableIgnoringEditsForField:changeKey];
+            NSInteger editedRow = [tableView editedTextRow];
+            if (editedRow != -1 && [[fields objectAtIndex:editedRow] 
isEqualToString:changeKey])
+                [self resetEditingStringAtRow:editedRow field:changeKey];
+            [self reloadTableWithFields:[self currentFields]];
         } else if (row != NSNotFound) {
             // a field value changed
             // don't use newValue, because this can be the parent's value
@@ -3287,19 +3297,6 @@
         [self editTextFieldAtRow:newFields ? NSNotFound : editedRow 
forField:editedTitle selection:selection];
 }
 
-- (void)reloadTableIgnoringEditsForField:(NSString *)field {
-    NSInteger editedRow = [tableView editedTextRow];
-    if (editedRow != -1) {
-        NSString *editedField = [fields objectAtIndex:editedRow];
-        if (field == nil || [field isEqualToString:editedField]) {
-            NSString *value = [publication valueOfField:editedField] ?: @"";
-            BDSKEditorTextField *textField = [self textFieldAtRow:editedRow];
-            [[textField currentEditor] setString:[textField formatter] ? 
[[textField formatter] editingStringForObjectValue:value] : value];
-        }
-    }
-    [self reloadTableWithFields:[self currentFields]];
-}
-
 - (void)updateTableViewDisplay {
     [fields enumerateObjectsUsingBlock:^(NSString *field, NSUInteger row, BOOL 
*stop){
         BDSKEditorTextField *textField = [self textFieldAtRow:row];

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