Move |-computeLineIndex| from BSSourceView to BSLineNumberRulerView
authorRobert Sesek <rsesek@bluestatic.org>
Wed, 12 Jan 2011 16:01:16 +0000 (11:01 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sun, 16 Jan 2011 04:45:08 +0000 (23:45 -0500)
MacGDBp.xcodeproj/project.pbxproj
Source/BSLineNumberRulerView.h
Source/BSLineNumberRulerView.mm [moved from Source/BSLineNumberRulerView.m with 60% similarity]
Source/BSSourceView.h
Source/BSSourceView.mm

index f25179a6dcaed7818fbfdfea4449f343324a398f..d8d145d6ded5596f15ea51e0a9172f549d24173c 100644 (file)
@@ -36,7 +36,7 @@
                1EC6965812BBC6A700A8D984 /* modp_b64.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1EC6965212BBC6A700A8D984 /* modp_b64.cc */; };
                1EC6965912BBC6A700A8D984 /* README.bluestatic in Resources */ = {isa = PBXBuildFile; fileRef = 1EC6965512BBC6A700A8D984 /* README.bluestatic */; };
                1EC6965A12BBC6A700A8D984 /* README.chromium in Resources */ = {isa = PBXBuildFile; fileRef = 1EC6965612BBC6A700A8D984 /* README.chromium */; };
-               1EDA9CF812DD13B300596211 /* BSLineNumberRulerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.m */; };
+               1EDA9CF812DD13B300596211 /* BSLineNumberRulerView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.mm */; };
                1EEBFBE50D34C793008F835B /* Debugger.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EEBFBE30D34C793008F835B /* Debugger.xib */; };
                1EEBFC2B0D358EBD008F835B /* StepIn.png in Resources */ = {isa = PBXBuildFile; fileRef = 1EEBFC2A0D358EBD008F835B /* StepIn.png */; };
                1EEBFC370D358F1B008F835B /* StepOut.png in Resources */ = {isa = PBXBuildFile; fileRef = 1EEBFC360D358F1B008F835B /* StepOut.png */; };
                1EC6965512BBC6A700A8D984 /* README.bluestatic */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.bluestatic; sourceTree = "<group>"; };
                1EC6965612BBC6A700A8D984 /* README.chromium */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.chromium; sourceTree = "<group>"; };
                1EDA9CF612DD13B300596211 /* BSLineNumberRulerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BSLineNumberRulerView.h; path = Source/BSLineNumberRulerView.h; sourceTree = "<group>"; };
-               1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BSLineNumberRulerView.m; path = Source/BSLineNumberRulerView.m; sourceTree = "<group>"; };
+               1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BSLineNumberRulerView.mm; path = Source/BSLineNumberRulerView.mm; sourceTree = "<group>"; };
                1EEBFBE40D34C793008F835B /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Debugger.xib; sourceTree = "<group>"; };
                1EEBFC2A0D358EBD008F835B /* StepIn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = StepIn.png; path = Icons/StepIn.png; sourceTree = "<group>"; };
                1EEBFC360D358F1B008F835B /* StepOut.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = StepOut.png; path = Icons/StepOut.png; sourceTree = "<group>"; };
                                1E7188640D839F6300969277 /* BSSourceView.h */,
                                1E7188650D839F6300969277 /* BSSourceView.mm */,
                                1EDA9CF612DD13B300596211 /* BSLineNumberRulerView.h */,
-                               1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.m */,
+                               1EDA9CF712DD13B300596211 /* BSLineNumberRulerView.mm */,
                        );
                        name = "Source View";
                        sourceTree = "<group>";
                                1EC6965812BBC6A700A8D984 /* modp_b64.cc in Sources */,
                                1EFBE63012C515C200F96D6E /* NetworkConnection.mm in Sources */,
                                1EFBE66B12C51E3900F96D6E /* NetworkCallbackController.mm in Sources */,
-                               1EDA9CF812DD13B300596211 /* BSLineNumberRulerView.m in Sources */,
+                               1EDA9CF812DD13B300596211 /* BSLineNumberRulerView.mm in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index f2493f40f3e9b74332410492ef3bf6fec90be456..ece4300dfdef309a6a704abf456cbded1dce07a4 100644 (file)
  */
 
 #import <Cocoa/Cocoa.h>
+#include <vector>
 
 // The NSRulerView that draws line numbers on the BSSourceView.
 @interface BSLineNumberRulerView : NSRulerView
 {
-
+ @private
+  std::vector<NSUInteger> lineIndex_;
 }
 
 // Designated initializer.
 - (id)initWithScrollView:(NSScrollView*)scrollView;
 
+- (void)performLayout;
+
 @end
similarity index 60%
rename from Source/BSLineNumberRulerView.m
rename to Source/BSLineNumberRulerView.mm
index c70d209ca8b796e635e5ca541331771bae2a93b8..6102375c4dba94d065422cc6b7b14a9e4e8deea5 100644 (file)
 
 #import "BSLineNumberRulerView.h"
 
+@interface BSLineNumberRulerView (Private)
+- (void)computeLineIndex;
+@end
+
 
 @implementation BSLineNumberRulerView
 
                             toPoint:NSMakePoint(NSMaxX(rect), NSMaxY(rect))];
 }
 
+- (void)performLayout
+{
+  [self computeLineIndex];
+}
+
+// Private /////////////////////////////////////////////////////////////////////
+
+/**
+ * Iterates over the text storage system and computes a map of line numbers to
+ * first character index for a line's frame rectangle.
+ */
+- (void)computeLineIndex
+{
+  lineIndex_.clear();
+
+  NSView* view = [self clientView];
+  if (![view isKindOfClass:[NSTextView class]])
+    return;
+
+  NSString* text = [(NSTextView*)view string];
+  NSUInteger stringLength = [text length];
+  NSUInteger index = 0;
+
+  while (index < stringLength) {
+    lineIndex_.push_back(index);
+    index = NSMaxRange([text lineRangeForRange:NSMakeRange(index, 0)]);
+  }
+
+  NSUInteger lineEnd, contentEnd;
+  [text getLineStart:NULL
+                 end:&lineEnd
+         contentsEnd:&contentEnd
+            forRange:NSMakeRange(lineIndex_.back(), 0)];
+  if (contentEnd < lineEnd)
+    lineIndex_.push_back(index);
+
+  NSLog(@"line count = %d", lineIndex_.size());
+}
+
 @end
index cb53f19eb92a9bfa01347883f8fe719d1b0b85e2..c2494d667a85673cb4aaa3061c69586583894b34 100644 (file)
  */
 
 #import <Cocoa/Cocoa.h>
-#include <vector>
 
 #import "BSLineNumberView.h"
 
+@class BSLineNumberRulerView;
 @protocol BSSourceViewDelegate;
 
 @interface BSSourceView : NSView
 {
  @private
   NSTextView* textView_;
+  BSLineNumberRulerView* ruler_;
   NSScrollView* scrollView_;
 
-  std::vector<NSUInteger> lineIndex_;
-
   NSSet* markers_;
 
   NSString* file;
index a7628039683e0ff6f7156ccf5c1fb191d3a67c83..31ab6cd3a8b3a5d00c75ca84913815bba8536444 100644 (file)
@@ -22,7 +22,6 @@
 - (void)setupViews;
 - (void)errorHighlightingFile:(NSNotification*)notif;
 - (void)setPlainTextStringFromFile:(NSString*)filePath;
-- (void)computeLineIndex;
 @end
 
 @implementation BSSourceView
     [self setPlainTextStringFromFile:f];
   }
 
-  [self computeLineIndex];
+  [ruler_ performLayout];
 }
 
 /**
     file = [path copy];
   }
 
-  [self computeLineIndex];
+  [ruler_ performLayout];
 }
 
 /**
   [[scrollView_ contentView] setAutoresizesSubviews:YES];
   [self addSubview:scrollView_];
 
-  // Set up the ruler.
-  BSLineNumberRulerView* lineNumberView =
-      [[[BSLineNumberRulerView alloc] initWithScrollView:scrollView_] autorelease];
-  [scrollView_ setVerticalRulerView:lineNumberView];  
-  [scrollView_ setHasHorizontalRuler:NO];
-  [scrollView_ setHasVerticalRuler:YES];
-  [scrollView_ setRulersVisible:YES];
-
   // add the text view to the scroll view
   NSRect textFrame;
   textFrame.origin = NSMakePoint(0.0, 0.0);
   [textView_ setAutoresizingMask:NSViewNotSizable];
   [scrollView_ setDocumentView:textView_];
 
+  // Set up the ruler.
+  ruler_ = [[[BSLineNumberRulerView alloc] initWithScrollView:scrollView_] autorelease];
+  [scrollView_ setVerticalRulerView:ruler_];
+  [scrollView_ setHasHorizontalRuler:NO];
+  [scrollView_ setHasVerticalRuler:YES];
+  [scrollView_ setRulersVisible:YES];
+
   NSArray* types = [NSArray arrayWithObject:NSFilenamesPboardType];
   [self registerForDraggedTypes:types];
 }
   [textView_ setString:contents];
 }
 
-/**
- * Iterates over the text storage system and computes a map of line numbers to
- * first character index for a line's frame rectangle.
- */
-- (void)computeLineIndex
-{
-  lineIndex_.clear();
-
-  NSString* text = [textView_ string];
-  NSUInteger stringLength = [text length];
-  NSUInteger index = 0;
-
-  while (index < stringLength) {
-    lineIndex_.push_back(index);
-    index = NSMaxRange([text lineRangeForRange:NSMakeRange(index, 0)]);
-  }
-
-  NSUInteger lineEnd, contentEnd;
-  [text getLineStart:NULL
-                 end:&lineEnd
-         contentsEnd:&contentEnd
-            forRange:NSMakeRange(lineIndex_.back(), 0)];
-  if (contentEnd < lineEnd)
-    lineIndex_.push_back(index);
-
-  NSLog(@"line count = %d", lineIndex_.size());
-}
-
 // Drag Handlers ///////////////////////////////////////////////////////////////
 
 /**