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