Revision: 30034
http://sourceforge.net/p/bibdesk/svn/30034
Author: hofman
Date: 2026-02-21 18:10:11 +0000 (Sat, 21 Feb 2026)
Log Message:
-----------
fix row to edit after commit when the fields have changed due to the commit
Modified Paths:
--------------
trunk/bibdesk/BDSKEditor.h
trunk/bibdesk/BDSKEditor.m
Modified: trunk/bibdesk/BDSKEditor.h
===================================================================
--- trunk/bibdesk/BDSKEditor.h 2026-02-21 17:57:14 UTC (rev 30033)
+++ trunk/bibdesk/BDSKEditor.h 2026-02-21 18:10:11 UTC (rev 30034)
@@ -115,7 +115,6 @@
unsigned int isEditable:1;
unsigned int isEditing:1;
unsigned int isAnimating:1;
- unsigned int didSetupFields:1;
unsigned int controllingQLPreviewPanel:1;
unsigned int controllingFVPreviewPanel:1;
unsigned int allowFragileCharacters:1;
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2026-02-21 17:57:14 UTC (rev 30033)
+++ trunk/bibdesk/BDSKEditor.m 2026-02-21 18:10:11 UTC (rev 30034)
@@ -162,12 +162,9 @@
- (instancetype)initWithPublication:(BibItem *)aBib{
self = [super initWithWindow:nil];
if (self) {
-
publication = aBib;
fields = [[NSMutableArray alloc] init];
editorFlags.isEditable = [[publication owner] isDocument];
-
- editorFlags.didSetupFields = NO;
}
return self;
}
@@ -393,14 +390,15 @@
NSTextView *textView = (NSTextView *)firstResponder;
NSInteger editedRow = -1;
+ NSString *editedField = nil;
NSArray *selection = [textView selectedRanges];
if ([textView isFieldEditor]) {
firstResponder = (NSResponder *)[textView delegate];
editedRow = [tableView rowForView:textView];
+ if (editedRow != -1)
+ editedField = [fields objectAtIndex:editedRow];
}
- editorFlags.didSetupFields = NO; // if we we rebuild the fields, the
selection will become meaningless
-
// commit edits (formatters may refuse to allow this)
if ([[self window] makeFirstResponder:[self window]] == NO)
return NO;
@@ -408,7 +406,10 @@
// for inherited fields, we should do something here to make sure the
user doesn't have to go through the warning sheet
if (editedRow != -1) {
- if (editorFlags.didSetupFields == NO && editedRow < [tableView
numberOfRows]) {
+ // 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];
}
@@ -439,11 +440,14 @@
NSTextView *textView = (NSTextView *)firstResponder;
NSTextField *textField = nil;
NSInteger editedRow = -1;
+ NSString *editedField = nil;
if ([textView isFieldEditor]) {
firstResponder = (NSResponder *)[textView delegate];
if ([firstResponder isKindOfClass:[NSTextField class]])
textField = (NSTextField *)firstResponder;
editedRow = [tableView rowForView:textView];
+ if (editedRow != -1)
+ editedField = [fields objectAtIndex:editedRow];
}
// first validate the text field or text view so we can return an
error without presenting it
@@ -471,8 +475,6 @@
NSArray *selection = [textView selectedRanges];
- editorFlags.didSetupFields = NO; // if we we rebuild the
fields, the selection will become meaningless
-
// commit edits (formatters and validation methods should allow this
at this point)
if ([[self window] makeFirstResponder:[self window]] == NO) {
// should not be reached, we should have found errors above
@@ -484,7 +486,10 @@
// for inherited fields, we should do something here to make sure the
user doesn't have to go through the warning sheet
if (editedRow != -1) {
- if (editorFlags.didSetupFields == NO && editedRow < [tableView
numberOfRows]) {
+ // 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];
}
@@ -3254,8 +3259,6 @@
[fields setArray:newFields];
- editorFlags.didSetupFields = YES;
-
// align the cite key field with the form cells
if ([fields count] > 0) {
NSTableColumn *tableColumn = [tableView
tableColumnWithIdentifier:FIELD_COLUMNID];
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