]> Dogcows Code - chaz/thecheat/blob - VariableTable.m
The Cheat 1.2
[chaz/thecheat] / VariableTable.m
1 //
2 // VariableTable.m
3 // The Cheat
4 //
5 // Created by Chaz McGarvey on 12/28/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
7 //
8
9 #import "VariableTable.h"
10
11
12 @interface VariableTable ( PrivateAPI )
13
14 - (void)_setVisibleRows:(NSRange)rows;
15
16 @end
17
18
19 @implementation VariableTable
20
21
22 - (void)awakeFromNib
23 {
24 NSScrollView *scrollView = (NSScrollView *)[(NSClipView *)[self superview] superview];
25 NSScroller *oldScroller = [[scrollView verticalScroller] retain];
26
27 TrackerScroller *scroller = [[TrackerScroller alloc] initWithFrame:[oldScroller frame]];
28
29 [scroller setControlSize:[oldScroller controlSize]];
30 [scroller setFloatValue:[oldScroller floatValue] knobProportion:[oldScroller knobProportion]];
31 [scroller setControlTint:[oldScroller controlTint]];
32
33 // set the new scroller
34 [scrollView setHasVerticalScroller:NO];
35 [scrollView setVerticalScroller:scroller];
36 [scrollView setHasVerticalScroller:YES];
37
38 [scroller setDelegate:self];
39 [scroller release];
40 [oldScroller release];
41
42 /*if ( [super respondsToSelector:@selector(awakeFromNib)] ) {
43 [super awakeFromNib];
44 }*/
45 }
46
47
48 - (NSRange)visibleRows
49 {
50 return _visibleRows;
51 }
52
53 - (void)_setVisibleRows:(NSRange)rows
54 {
55 _visibleRows = rows;
56 }
57
58
59 - (void)reloadData
60 {
61 if ( _dontUpdate ) {
62 _updatePending = YES;
63 return;
64 }
65
66 [super reloadData];
67
68 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
69 id delegate = [self delegate];
70
71 if ( !NSEqualRanges( range, _visibleRows ) ) {
72 [self _setVisibleRows:range];
73 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
74 [delegate tableView:self didChangeVisibleRows:range];
75 }
76 }
77 }
78
79
80 - (void)keyDown:(NSEvent *)theEvent
81 {
82 _dontUpdate = YES;
83 [super keyDown:theEvent];
84 }
85
86 - (void)keyUp:(NSEvent *)theEvent
87 {
88 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
89 id delegate = [self delegate];
90
91 [super keyUp:theEvent];
92
93 _dontUpdate = NO;
94
95 if ( !NSEqualRanges( range, _visibleRows ) ) {
96 [self _setVisibleRows:range];
97 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
98 [delegate tableView:self didChangeVisibleRows:range];
99 }
100 }
101 else if ( _updatePending ) {
102 [self reloadData];
103 _updatePending = NO;
104 }
105 }
106
107 - (void)scrollerDidStartScrolling:(TrackerScroller *)scroller
108 {
109 _dontUpdate = YES;
110 }
111
112 - (void)scrollerDidStopScrolling:(TrackerScroller *)scroller
113 {
114 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
115 id delegate = [self delegate];
116
117 _dontUpdate = NO;
118
119 if ( !NSEqualRanges( range, _visibleRows ) ) {
120 [self _setVisibleRows:range];
121 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
122 [delegate tableView:self didChangeVisibleRows:range];
123 }
124 }
125 else if ( _updatePending ) {
126 [self reloadData];
127 _updatePending = NO;
128 }
129 }
130
131
132 @end
This page took 0.039167 seconds and 5 git commands to generate.