Revision: 30037
          http://sourceforge.net/p/bibdesk/svn/30037
Author:   hofman
Date:     2026-02-22 15:19:43 +0000 (Sun, 22 Feb 2026)
Log Message:
-----------
convenience method to edit a textfield in the fields table

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

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2026-02-21 18:31:43 UTC (rev 30036)
+++ trunk/bibdesk/BDSKEditor.m  2026-02-22 15:19:43 UTC (rev 30037)
@@ -146,6 +146,7 @@
 - (void)updateStatusForAutoGenerate:(BDSKAutoGenerateStatus)mask;
 - (void)mergeWithPublication:(BibItem *)pub;
 - (BDSKEditorTextField *)textFieldAtRow:(NSInteger)row;
+- (void)editTextFieldAtRow:(NSInteger)row selection:(NSArray *)selection;
 - (id)representedObjectForValue:(NSString *)value forField:(NSString *)field;
 
 @end
@@ -409,14 +410,9 @@
             // fields may be changed due to the commit
             if (editedRow >= [tableView numberOfRows] || [[fields 
objectAtIndex:editedRow] isEqualToString:editedField] == NO)
                 editedRow = [fields indexOfObject:editedField];
-            if (editedRow < [tableView numberOfRows]) {
-                [tableView editColumn:1 row:editedRow withEvent:nil select:NO];
-                [(NSTextView *)[[self textFieldAtRow:editedRow] currentEditor] 
setSafeSelectedRanges:selection];
-            }
+            [self editTextFieldAtRow:editedRow selection:selection];
         } else if ([[self window] makeFirstResponder:firstResponder]) {
-            if ([firstResponder isKindOfClass:[NSTextField class]])
-                textView = (NSTextView *)[(NSTextField *)firstResponder 
currentEditor];
-            [textView setSafeSelectedRanges:selection];
+            [self editTextFieldAtRow:editedRow selection:selection];
         }
         
     }
@@ -489,10 +485,7 @@
             // fields may be changed due to the commit
             if (editedRow >= [tableView numberOfRows] || [[fields 
objectAtIndex:editedRow] isEqualToString:editedField] == NO)
                 editedRow = [fields indexOfObject:editedField];
-            if (editedRow < [tableView numberOfRows]) {
-                [tableView editColumn:1 row:editedRow withEvent:nil select:NO];
-                [(NSTextView *)[[self textFieldAtRow:editedRow] currentEditor] 
setSafeSelectedRanges:selection];
-            }
+            [self editTextFieldAtRow:editedRow selection:selection];
         } else if ([[self window] makeFirstResponder:firstResponder]) {
             if (textField)
                 textView = (NSTextView *)[textField currentEditor];
@@ -1904,8 +1897,7 @@
             [[self window] makeFirstResponder:[(BDSKEditorCollectionViewItem 
*)[collectionView itemAtIndex:idx] button]];
     }else{
         NSUInteger row = [fields indexOfObject:fieldName];
-        if (row != NSNotFound)
-            [tableView editColumn:1 row:row withEvent:nil select:YES];
+        [self editTextFieldAtRow:row selection:nil];
     }
 }
 
@@ -1922,7 +1914,7 @@
         return;
     }
     [tableCellFormatter setEditAsComplexString:YES];
-    [tableView editColumn:1 row:row withEvent:nil select:YES];
+    [self editTextFieldAtRow:row selection:nil];
 }
 
 // this is called when the user actually starts editing
@@ -2175,7 +2167,7 @@
         return NO;
     }
     if (nonRemovable || editorFlags.isEditing == NO || [[[control 
currentEditor] string] length] > 0) {
-        [tableView editColumn:1 row:row withEvent:nil select:YES];
+        [self editTextFieldAtRow:row selection:nil];
     } else {
         // ending the edit may remove the row, which could lead to an invalid 
row selection
         NSString *field = [fields objectAtIndex:row];
@@ -2182,8 +2174,7 @@
         if ([[self window] makeFirstResponder:[self window]]) {
             if (row >= [tableView numberOfRows] || [[fields objectAtIndex:row] 
isEqualToString:field] == NO)
                 row = [fields indexOfObject:field];
-            if (row < [tableView numberOfRows])
-                [tableView editColumn:1 row:row withEvent:nil select:YES];
+            [self editTextFieldAtRow:row selection:nil];
         }
     }
     return YES;
@@ -3294,11 +3285,7 @@
        // restore the edited cell and its selection
        if (editedTitle) {
         NSUInteger editingRow = [fields indexOfObject:editedTitle];
-        if (editingRow != NSNotFound && [tableView editedTextRow] != 
(NSInteger)editingRow && [tableView numberOfRows] > (NSInteger)editingRow) {
-            [tableView editColumn:1 row:editingRow withEvent:nil select:NO];
-            NSTextView *fieldEditor = (NSTextView *)[[self 
textFieldAtRow:editingRow] currentEditor];
-            [fieldEditor setSafeSelectedRanges:selection];
-        }
+        [self editTextFieldAtRow:editedRow selection:selection];
        }
 }
 
@@ -3558,6 +3545,14 @@
     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]) {
+        [tableView editColumn:1 row:row withEvent:nil select:selection == nil];
+        if (selection)
+            [(NSTextView *)[[self textFieldAtRow:row] currentEditor] 
setSafeSelectedRanges:selection];
+    }
+}
+
 - (id)representedObjectForValue:(NSString *)value forField:(NSString *)field {
     if ([value isInherited] || ([field isEqualToString:BDSKCrossrefString] && 
[NSString isEmptyString:value] == NO))
         return [[BDSKField alloc] initWithName:field bibItem:nil];

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