Revision: 18333
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=18333&view=rev
Author: hofman
Date: 2011-12-22 22:26:38 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
convenience method to safely set selected ranges in a text view
Modified Paths:
--------------
trunk/bibdesk/BDSKEditor.m
trunk/bibdesk/BDSKTextImportController.m
trunk/bibdesk/NSTextView_BDSKExtensions.h
trunk/bibdesk/NSTextView_BDSKExtensions.m
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2011-12-22 19:21:04 UTC (rev 18332)
+++ trunk/bibdesk/BDSKEditor.m 2011-12-22 22:26:38 UTC (rev 18333)
@@ -84,6 +84,7 @@
#import "BDSKGroupsArray.h"
#import "NSTableView_BDSKExtensions.h"
#import "NSInvocation_BDSKExtensions.h"
+#import "NSTextView_BDSKExtensions.h"
#define WEAK_NULL NULL
@@ -421,12 +422,11 @@
if ([[self window] makeFirstResponder:firstResponder] &&
editorFlags.didSetupFields == NO) {
if (firstResponder == tableView && editedRow != -1)
[tableView editColumn:1 row:editedRow withEvent:nil select:NO];
- if (validRanges(selection, [[textView string] length])) // check
range for safety
- [textView setSelectedRanges:selection];
+ [textView setSafeSelectedRanges:selection];
}
- return YES;
}
+ return YES;
}
#pragma mark Actions
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2011-12-22 19:21:04 UTC (rev
18332)
+++ trunk/bibdesk/BDSKTextImportController.m 2011-12-22 22:26:38 UTC (rev
18333)
@@ -65,6 +65,7 @@
#import "NSWindowController_BDSKExtensions.h"
#import "NSEvent_BDSKExtensions.h"
#import "BDSKURLSheetController.h"
+#import "NSTextView_BDSKExtensions.h"
#define BDSKTextImportControllerFrameAutosaveName @"BDSKTextImportController
Frame Autosave Name"
@@ -643,8 +644,7 @@
if(shouldPreserveSelection && [[self window]
makeFirstResponder:firstResponder]){
if(editedRow != -1)
[itemTableView editColumn:2 row:editedRow withEvent:nil
select:YES];
- if(validRanges(selection, [[textView string] length])) //
check ranges for safety
- [textView setSelectedRanges:selection];
+ [textView setSafeSelectedRanges:selection];
}
}
}
Modified: trunk/bibdesk/NSTextView_BDSKExtensions.h
===================================================================
--- trunk/bibdesk/NSTextView_BDSKExtensions.h 2011-12-22 19:21:04 UTC (rev
18332)
+++ trunk/bibdesk/NSTextView_BDSKExtensions.h 2011-12-22 22:26:38 UTC (rev
18333)
@@ -38,8 +38,14 @@
@interface NSTextView (BDSKExtensions)
+
- (void)selectLineNumber:(NSInteger)line;
+
- (void)highlightComponentsOfSearchString:(NSString *)searchString;
- (void)highlightOccurrencesOfString:(NSString *)substring;
+
+- (void)setSafeSelectedRanges:(NSArray *)ranges;
+
- (NSPoint)locationForCompletionWindow;
+
@end
Modified: trunk/bibdesk/NSTextView_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSTextView_BDSKExtensions.m 2011-12-22 19:21:04 UTC (rev
18332)
+++ trunk/bibdesk/NSTextView_BDSKExtensions.m 2011-12-22 22:26:38 UTC (rev
18333)
@@ -191,6 +191,23 @@
[self setSelectedRanges:newRanges];
}
+- (void)setSafeSelectedRanges:(NSArray *)ranges {
+ NSUInteger length = [[self string] length];
+ NSMutableArray *mutableRanges = [NSMutableArray array];
+ for (NSValue *value in ranges) {
+ NSRange range = [value rangeValue];
+ if (NSMaxRange(range) > length) {
+ if (range.location >= length)
+ continue;
+ value = [NSValue valueWithRange:NSMakeRange(range.location, length
- range.location)];
+ }
+ [mutableRanges addObject:value];
+ }
+ if ([mutableRanges count] == 0)
+ [mutableRanges addObject:[NSValue valueWithRange:NSMakeRange(length,
0)]];
+ [self setSelectedRanges:mutableRanges];
+}
+
- (NSPoint)locationForCompletionWindow;
{
NSPoint point = NSZeroPoint;
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