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