Revision: 30039
          http://sourceforge.net/p/bibdesk/svn/30039
Author:   hofman
Date:     2026-02-22 15:36:21 +0000 (Sun, 22 Feb 2026)
Log Message:
-----------
allow passing field for which to edit text field

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

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2026-02-22 15:23:57 UTC (rev 30038)
+++ trunk/bibdesk/BDSKEditor.m  2026-02-22 15:36:21 UTC (rev 30039)
@@ -146,7 +146,7 @@
 - (void)updateStatusForAutoGenerate:(BDSKAutoGenerateStatus)mask;
 - (void)mergeWithPublication:(BibItem *)pub;
 - (BDSKEditorTextField *)textFieldAtRow:(NSInteger)row;
-- (void)editTextFieldAtRow:(NSInteger)row selection:(NSArray *)selection;
+- (void)editTextFieldAtRow:(NSInteger)row forField:(NSString *)field 
selection:(NSArray *)selection;
 - (id)representedObjectForValue:(NSString *)value forField:(NSString *)field;
 
 @end
@@ -408,9 +408,7 @@
         
         if (editedRow != -1) {
             // fields may be changed due to the commit
-            if (editedRow >= [tableView numberOfRows] || [[fields 
objectAtIndex:editedRow] isEqualToString:editedField] == NO)
-                editedRow = [fields indexOfObject:editedField];
-            [self editTextFieldAtRow:editedRow selection:selection];
+            [self editTextFieldAtRow:editedRow forField:editedField 
selection:selection];
         } else if ([[self window] makeFirstResponder:firstResponder]) {
             if ([firstResponder isKindOfClass:[NSTextField class]])
                 textView = (NSTextView *)[(NSTextField *)firstResponder 
currentEditor];
@@ -485,9 +483,7 @@
                
         if (editedRow != -1) {
             // fields may be changed due to the commit
-            if (editedRow >= [tableView numberOfRows] || [[fields 
objectAtIndex:editedRow] isEqualToString:editedField] == NO)
-                editedRow = [fields indexOfObject:editedField];
-            [self editTextFieldAtRow:editedRow selection:selection];
+            [self editTextFieldAtRow:editedRow forField:editedField 
selection:selection];
         } else if ([[self window] makeFirstResponder:firstResponder]) {
             if (textField)
                 textView = (NSTextView *)[textField currentEditor];
@@ -1898,8 +1894,7 @@
         if (idx != NSNotFound)
             [[self window] makeFirstResponder:[(BDSKEditorCollectionViewItem 
*)[collectionView itemAtIndex:idx] button]];
     }else{
-        NSUInteger row = [fields indexOfObject:fieldName];
-        [self editTextFieldAtRow:row selection:nil];
+        [self editTextFieldAtRow:NSNotFound forField:fieldName selection:nil];
     }
 }
 
@@ -1916,7 +1911,7 @@
         return;
     }
     [tableCellFormatter setEditAsComplexString:YES];
-    [self editTextFieldAtRow:row selection:nil];
+    [self editTextFieldAtRow:row forField:nil selection:nil];
 }
 
 // this is called when the user actually starts editing
@@ -2169,15 +2164,12 @@
         return NO;
     }
     if (nonRemovable || editorFlags.isEditing == NO || [[[control 
currentEditor] string] length] > 0) {
-        [self editTextFieldAtRow:row selection:nil];
+        [self editTextFieldAtRow:row forField:nil selection:nil];
     } else {
         // ending the edit may remove the row, which could lead to an invalid 
row selection
         NSString *field = [fields objectAtIndex:row];
-        if ([[self window] makeFirstResponder:[self window]]) {
-            if (row >= [tableView numberOfRows] || [[fields objectAtIndex:row] 
isEqualToString:field] == NO)
-                row = [fields indexOfObject:field];
-            [self editTextFieldAtRow:row selection:nil];
-        }
+        if ([[self window] makeFirstResponder:[self window]])
+            [self editTextFieldAtRow:row forField:field selection:nil];
     }
     return YES;
 }
@@ -3285,10 +3277,8 @@
     }
     
        // restore the edited cell and its selection
-       if (editedTitle) {
-        NSUInteger editingRow = [fields indexOfObject:editedTitle];
-        [self editTextFieldAtRow:editedRow selection:selection];
-       }
+       if (editedTitle)
+        [self editTextFieldAtRow:NSNotFound forField:editedTitle 
selection:selection];
 }
 
 - (void)updateTableViewDisplay {
@@ -3547,8 +3537,10 @@
     return (BDSKEditorTextField *)[[tableView viewAtColumn:1 row:row 
makeIfNecessary:NO] textField];
 }
 
-- (void)editTextFieldAtRow:(NSInteger)row selection:(NSArray *)selection {
-    if (row != -1 && row != NSNotFound && row < [tableView numberOfRows]) {
+- (void)editTextFieldAtRow:(NSInteger)row forField:(NSString *)field 
selection:(NSArray *)selection {
+    if (field && (row == -1 || row >= [tableView numberOfRows] || [[fields 
objectAtIndex:row] isEqualToString:field] == NO))
+        row = [fields indexOfObject:field];
+    if (row != -1 && row < [tableView numberOfRows]) {
         [tableView editColumn:1 row:row withEvent:nil select:selection == nil];
         if (selection)
             [(NSTextView *)[[self textFieldAtRow:row] currentEditor] 
setSafeSelectedRanges:selection];

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