{
NSArray* selection = [_arrayController selectedObjects];
if ([selection count] < 1)
- {
return;
- }
-
- for (Breakpoint* bp in selection) {
- [_manager removeBreakpoint:bp];
+
+ Breakpoint* bp = [selection firstObject];
+ [_manager removeBreakpoint:bp];
+
+ if (bp.type == kBreakpointTypeFile && [_sourceView.file isEqualToString:bp.file]) {
+ NSSet<NSNumber*>* markers = [_sourceView.markers objectsPassingTest:^BOOL(NSNumber* obj, BOOL* stop) {
+ return obj.unsignedLongValue != bp.line;
+ }];
+ [_sourceView setMarkers:markers];
}
}
#import "BreakpointManager.h"
-#import "AppDelegate.h"
#import "PreferenceNames.h"
-@interface BreakpointManager (Private)
-- (void)updateDisplaysForFile:(NSString*)file;
-@end
-
@implementation BreakpointManager {
NSMutableArray* _breakpoints;
NSMutableArray* _savedBreakpoints;
*/
- (void)addBreakpoint:(Breakpoint*)bp;
{
- if (![_breakpoints containsObject:bp])
- {
- [self willChangeValueForKey:@"breakpoints"];
- [_breakpoints addObject:bp];
- [self didChangeValueForKey:@"breakpoints"];
+ if ([_breakpoints containsObject:bp])
+ return;
- [_connection addBreakpoint:bp];
+ [self willChangeValueForKey:@"breakpoints"];
+ [_breakpoints addObject:bp];
+ [self didChangeValueForKey:@"breakpoints"];
- [_savedBreakpoints addObject:[bp dictionary]];
- [[NSUserDefaults standardUserDefaults] setObject:_savedBreakpoints forKey:kPrefBreakpoints];
+ [_connection addBreakpoint:bp];
- [self updateDisplaysForFile:[bp file]];
- }
+ [_savedBreakpoints addObject:[bp dictionary]];
+ [[NSUserDefaults standardUserDefaults] setObject:_savedBreakpoints forKey:kPrefBreakpoints];
}
- (Breakpoint*)removeBreakpoint:(Breakpoint*)bp
[_savedBreakpoints removeObject:[bp dictionary]];
[[NSUserDefaults standardUserDefaults] setObject:_savedBreakpoints forKey:kPrefBreakpoints];
- if (bp.file)
- [self updateDisplaysForFile:bp.file];
-
return bp;
}
return [_breakpoints containsObject:breakpoint];
}
-#pragma mark Private
-
-/**
- * This marks BSSourceView needsDisplay, rearranges the objects in the breakpoints controller,
- * and sets the markers for the BSLineNumberView
- */
-- (void)updateDisplaysForFile:(NSString*)file
-{
- AppDelegate* appDel = [NSApp delegate];
- [[[appDel breakpoint] arrayController] rearrangeObjects];
- [[[appDel debugger] sourceViewer] setNeedsDisplay:YES];
- [[[appDel debugger] sourceViewer] setMarkers:[self breakpointsForFile:file]];
-}
-
@end