Revision: 18328
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=18328&view=rev
Author:   hofman
Date:     2011-12-21 12:15:16 +0000 (Wed, 21 Dec 2011)
Log Message:
-----------
restore first responder after committing an edit through binding, as that is 
not always done

Modified Paths:
--------------
    trunk/bibdesk/BDSKFindController.m
    trunk/bibdesk/BDSKSearchGroupSheetController.m

Modified: trunk/bibdesk/BDSKFindController.m
===================================================================
--- trunk/bibdesk/BDSKFindController.m  2011-12-21 07:35:46 UTC (rev 18327)
+++ trunk/bibdesk/BDSKFindController.m  2011-12-21 12:15:16 UTC (rev 18328)
@@ -225,6 +225,27 @@
     [view1 release];
 }
 
+- (BOOL)commitEditing {
+    id firstResponder = [[self window] firstResponder];
+    NSTextView *editor = nil;
+    NSRange selection;
+    if ([firstResponder isKindOfClass:[NSTextView class]]) {
+        editor = firstResponder;
+        selection = [editor selectedRange];
+        if ([editor isFieldEditor])
+            firstResponder = [firstResponder delegate];
+    }
+    if ([objectController commitEditing]) {
+        if (editor && [[self window] firstResponder] != editor && 
+            [[self window] makeFirstResponder:firstResponder] && 
+            [[editor string] length] >= NSMaxRange(selection))
+            [editor setSelectedRange:selection];
+        return YES;
+    } else {
+        return NO;
+    }
+}
+
 #pragma mark Accessors
 
 - (NSInteger)operation {
@@ -746,7 +767,7 @@
         NSBeep();
                [statusBar setStringValue:NSLocalizedString(@"Cannot replace in 
external items", @"Status message")];
         return;
-    }else if([objectController commitEditing] == NO){
+    }else if([self commitEditing] == NO){
         NSBeep();
                [statusBar setStringValue:NSLocalizedString(@"There were 
invalid values", @"Status message")];
         return;
@@ -812,7 +833,7 @@
         NSBeep();
                [statusBar setStringValue:NSLocalizedString(@"Cannot replace in 
external items", @"Status message")];
         return;
-    }else if([objectController commitEditing] == NO){
+    }else if([self commitEditing] == NO){
         NSBeep();
                [statusBar setStringValue:NSLocalizedString(@"There were 
invalid values", @"Status message")];
         return;

Modified: trunk/bibdesk/BDSKSearchGroupSheetController.m
===================================================================
--- trunk/bibdesk/BDSKSearchGroupSheetController.m      2011-12-21 07:35:46 UTC 
(rev 18327)
+++ trunk/bibdesk/BDSKSearchGroupSheetController.m      2011-12-21 12:15:16 UTC 
(rev 18328)
@@ -395,9 +395,25 @@
 #pragma mark NSEditor
 
 - (BOOL)commitEditing {
+    id firstResponder = [[self window] firstResponder];
+    NSTextView *editor = nil;
+    NSRange selection;
+    
+    if ([firstResponder isKindOfClass:[NSTextView class]]) {
+        editor = firstResponder;
+        selection = [editor selectedRange];
+        if ([editor isFieldEditor])
+            firstResponder = [firstResponder delegate];
+    }
+    
     if ([objectController commitEditing] == NO)
         return NO;
     
+    if (editor && [[self window] firstResponder] != editor && 
+        [[self window] makeFirstResponder:firstResponder] && 
+        [[editor string] length] >= NSMaxRange(selection))
+        [editor setSelectedRange:selection];
+    
     NSString *message = nil;
     
     if ([self isZoom] == NO && ([NSString isEmptyString:[serverInfo name]] || 
[NSString isEmptyString:[serverInfo database]])) {

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


------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to