Revision: 26943
          http://sourceforge.net/p/bibdesk/svn/26943
Author:   hofman
Date:     2021-09-22 22:08:36 +0000 (Wed, 22 Sep 2021)
Log Message:
-----------
Never use -[NSTableView editedRow]

Modified Paths:
--------------
    trunk/bibdesk/BDSKBookmarkController.m
    trunk/bibdesk/BDSKCustomCiteDrawerController.m
    trunk/bibdesk/BDSKDocumentInfoWindowController.m
    trunk/bibdesk/BDSKEditor.m
    trunk/bibdesk/BDSKSearchBookmarkController.m
    trunk/bibdesk/BibPref_Crossref.m
    trunk/bibdesk/BibPref_Defaults.m

Modified: trunk/bibdesk/BDSKBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.m      2021-09-22 21:55:32 UTC (rev 
26942)
+++ trunk/bibdesk/BDSKBookmarkController.m      2021-09-22 22:08:36 UTC (rev 
26943)
@@ -305,7 +305,8 @@
 }
 
 - (void)endEditing {
-    if ([outlineView editedRow] && [[self window] 
makeFirstResponder:outlineView] == NO)
+    id firstResponder = [[self window] firstResponder];
+    if ([firstResponder isKindOfClass:[NSTextView class]] && [outlineView 
rowForView:firstResponder] != -1 && [[self window] 
makeFirstResponder:outlineView] == NO)
         [[self window] endEditingFor:nil];
 }
 

Modified: trunk/bibdesk/BDSKCustomCiteDrawerController.m
===================================================================
--- trunk/bibdesk/BDSKCustomCiteDrawerController.m      2021-09-22 21:55:32 UTC 
(rev 26942)
+++ trunk/bibdesk/BDSKCustomCiteDrawerController.m      2021-09-22 22:08:36 UTC 
(rev 26943)
@@ -121,7 +121,8 @@
     if(row == -1)
         return;
     
-    if ([tableView editedRow] == row)
+    id firstResponder = [[tableView window] firstResponder];
+    if ([firstResponder isKindOfClass:[NSTextView class]] && [tableView 
rowForView:firstResponder] == row)
         [[tableView window] makeFirstResponder:tableView];
     [customStringArray removeObjectAtIndex:row];
     [tableView reloadData];

Modified: trunk/bibdesk/BDSKDocumentInfoWindowController.m
===================================================================
--- trunk/bibdesk/BDSKDocumentInfoWindowController.m    2021-09-22 21:55:32 UTC 
(rev 26942)
+++ trunk/bibdesk/BDSKDocumentInfoWindowController.m    2021-09-22 22:08:36 UTC 
(rev 26943)
@@ -104,10 +104,14 @@
 - (IBAction)dismiss:(id)sender{
     [self finalizeChangesIgnoringEdit:[sender tag] == NSCancelButton]; // 
commit edit before reloading
     
-    if ([sender tag] == NSOKButton && [tableView editedRow] != -1)
-        NSBeep();
-    else
-        [super dismiss:sender];
+    if ([sender tag] == NSOKButton) {
+        id firstResponder = [[tableView window] firstResponder];
+        if ([firstResponder isKindOfClass:[NSTextView class]] && [tableView 
rowForView:firstResponder] != -1) {
+            NSBeep();
+            return;
+        }
+    }
+    [super dismiss:sender];
 }
 
 - (IBAction)addRemoveKey:(id)sender{

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2021-09-22 21:55:32 UTC (rev 26942)
+++ trunk/bibdesk/BDSKEditor.m  2021-09-22 22:08:36 UTC (rev 26943)
@@ -3387,14 +3387,12 @@
     NSTextView *fieldEditor = (NSTextView *)[[tableView window] 
firstResponder];
     NSString *editedTitle = nil;
     NSArray *selection = nil;
-    if ([fieldEditor isKindOfClass:[NSTextView class]]) {
-        NSInteger editedRow = [tableView rowForView:fieldEditor];
-        if (editedRow != -1) {
-            selection = [fieldEditor selectedRanges];
-            editedTitle = [[fields objectAtIndex:editedRow] retain];
-            if ([[self window] makeFirstResponder:[self window]] == NO)
-                 [NSException raise:NSInternalInconsistencyException 
format:@"Failed to commit edits in %s, trouble ahead", __func__];
-        }
+    NSInteger editedRow = [self editedRow];
+    if (editedRow != -1) {
+        selection = [fieldEditor selectedRanges];
+        editedTitle = [[fields objectAtIndex:editedRow] retain];
+        if ([[self window] makeFirstResponder:[self window]] == NO)
+             [NSException raise:NSInternalInconsistencyException 
format:@"Failed to commit edits in %s, trouble ahead", __func__];
     }
        
     if (newFields && [fields isEqualToArray:newFields] == NO) {
@@ -3426,10 +3424,10 @@
     
        // restore the edited cell and its selection
        if (editedTitle) {
-        NSUInteger editedRow = [fields indexOfObject:editedTitle];
-        if (editedRow != NSNotFound && [tableView editedRow] != 
(NSInteger)editedRow) {
-            [tableView editColumn:1 row:editedRow withEvent:nil select:NO];
-            fieldEditor = (NSTextView *)[[tableView viewAtColumn:1 
row:editedRow makeIfNecessary:NO] currentEditor];
+        NSUInteger editingRow = [fields indexOfObject:editedTitle];
+        if (editedRow != NSNotFound && [self editedRow] != 
(NSInteger)editingRow) {
+            [tableView editColumn:1 row:editingRow withEvent:nil select:NO];
+            fieldEditor = (NSTextView *)[[tableView viewAtColumn:1 
row:editingRow makeIfNecessary:NO] currentEditor];
             if (validRanges(selection, [[fieldEditor string] length]))
                 [fieldEditor setSelectedRanges:selection];
         }

Modified: trunk/bibdesk/BDSKSearchBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.m        2021-09-22 21:55:32 UTC 
(rev 26942)
+++ trunk/bibdesk/BDSKSearchBookmarkController.m        2021-09-22 22:08:36 UTC 
(rev 26943)
@@ -269,7 +269,8 @@
 }
 
 - (void)endEditing {
-    if ([outlineView editedRow] && [[self window] 
makeFirstResponder:outlineView] == NO)
+    id firstResponder = [[self window] firstResponder];
+    if ([firstResponder isKindOfClass:[NSTextView class]] && [outlineView 
rowForView:firstResponder] != -1 && [[self window] 
makeFirstResponder:outlineView] == NO)
         [[self window] endEditingFor:nil];
 }
 

Modified: trunk/bibdesk/BibPref_Crossref.m
===================================================================
--- trunk/bibdesk/BibPref_Crossref.m    2021-09-22 21:55:32 UTC (rev 26942)
+++ trunk/bibdesk/BibPref_Crossref.m    2021-09-22 22:08:36 UTC (rev 26943)
@@ -102,7 +102,8 @@
         
         NSInteger row = [tableView selectedRow];
         if(row != -1){
-            if ([tableView editedRow] != -1)
+            id firstResponder = [[tableView window] firstResponder];
+            if ([firstResponder isKindOfClass:[NSTextView class]] && 
[tableView rowForView:firstResponder] != -1)
                 [[[self view] window] makeFirstResponder:tableView];
             [typesArray removeObjectAtIndex:row];
             [self updateDuplicateTypes];

Modified: trunk/bibdesk/BibPref_Defaults.m
===================================================================
--- trunk/bibdesk/BibPref_Defaults.m    2021-09-22 21:55:32 UTC (rev 26942)
+++ trunk/bibdesk/BibPref_Defaults.m    2021-09-22 22:08:36 UTC (rev 26943)
@@ -556,7 +556,8 @@
         
         NSInteger row = [defaultFieldsTableView selectedRow];
         if(row != -1){
-            if([defaultFieldsTableView editedRow] != -1)
+            id firstResponder = [[defaultFieldsTableView window] 
firstResponder];
+            if ([firstResponder isKindOfClass:[NSTextView class]] && 
[defaultFieldsTableView rowForView:firstResponder] != -1)
                 [[defaultFieldsTableView window] makeFirstResponder:nil];
             [customFieldsSet removeObject:[[customFieldsArray 
objectAtIndex:row] objectForKey:FIELD_KEY]];
             [customFieldsArray removeObjectAtIndex:row];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to