Revision: 18331
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=18331&view=rev
Author:   hofman
Date:     2011-12-22 19:17:53 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
preserve all selection ranges rather than just the first one

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

Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m    2011-12-22 18:31:06 UTC (rev 
18330)
+++ trunk/bibdesk/BDSKTextImportController.m    2011-12-22 19:17:53 UTC (rev 
18331)
@@ -615,12 +615,20 @@
     }
 }
 
+static inline BOOL validRanges(NSArray *ranges, NSUInteger max) {
+    for (NSValue *range in ranges) {
+        if (NSMaxRange([range rangeValue]) > max)
+            return NO;
+    }
+    return YES;
+}
+
 - (void)finalizeChangesPreservingSelection:(BOOL)shouldPreserveSelection{
     NSResponder *firstResponder = [[self window] firstResponder];
     
        if([firstResponder isKindOfClass:[NSText class]]){
-               NSText *textView = (NSText *)firstResponder;
-               NSRange selection = [textView selectedRange];
+               NSTextView *textView = (NSTextView *)firstResponder;
+               NSArray *selection = [textView selectedRanges];
         NSInteger editedRow = -1;
                id textDelegate = [textView delegate];
         if(textDelegate == itemTableView || textDelegate == citeKeyField){
@@ -635,9 +643,8 @@
             if(shouldPreserveSelection && [[self window] 
makeFirstResponder:firstResponder]){
                 if(editedRow != -1)
                     [itemTableView editColumn:2 row:editedRow withEvent:nil 
select:YES];
-                if([[textView string] length] < NSMaxRange(selection)) // 
check range for safety
-                    selection = NSMakeRange([[textView string] length], 0);
-                [textView setSelectedRange:selection];
+                if(validRanges(selection, [[textView string] length])) // 
check ranges for safety
+                    [textView setSelectedRanges:selection];
             }
         }
        }

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