]> Dogcows Code - chaz/thecheat/blob - VariableTable.m
The Cheat 1.2.1
[chaz/thecheat] / VariableTable.m
1
2 // **********************************************************************
3 // The Cheat - A universal game cheater for Mac OS X
4 // (C) 2003-2005 Chaz McGarvey (BrokenZipper)
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 1, or (at your option)
9 // any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 //
20
21
22 #import "VariableTable.h"
23
24
25 @interface VariableTable ( PrivateAPI )
26
27 - (void)_setVisibleRows:(NSRange)rows;
28
29 @end
30
31
32 @implementation VariableTable
33
34
35 - (void)awakeFromNib
36 {
37 NSScrollView *scrollView = (NSScrollView *)[(NSClipView *)[self superview] superview];
38 NSScroller *oldScroller = [[scrollView verticalScroller] retain];
39
40 TrackerScroller *scroller = [[TrackerScroller alloc] initWithFrame:[oldScroller frame]];
41
42 [scroller setControlSize:[oldScroller controlSize]];
43 [scroller setFloatValue:[oldScroller floatValue] knobProportion:[oldScroller knobProportion]];
44 [scroller setControlTint:[oldScroller controlTint]];
45
46 // set the new scroller
47 [scrollView setHasVerticalScroller:NO];
48 [scrollView setVerticalScroller:scroller];
49 [scrollView setHasVerticalScroller:YES];
50
51 [scroller setDelegate:self];
52 [scroller release];
53 [oldScroller release];
54
55 /*if ( [super respondsToSelector:@selector(awakeFromNib)] ) {
56 [super awakeFromNib];
57 }*/
58 }
59
60
61 - (NSRange)visibleRows
62 {
63 return _visibleRows;
64 }
65
66 - (void)_setVisibleRows:(NSRange)rows
67 {
68 _visibleRows = rows;
69 }
70
71
72 - (void)reloadData
73 {
74 if ( _dontUpdate ) {
75 _updatePending = YES;
76 return;
77 }
78
79 [super reloadData];
80
81 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
82 id delegate = [self delegate];
83
84 if ( !NSEqualRanges( range, _visibleRows ) ) {
85 [self _setVisibleRows:range];
86 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
87 [delegate tableView:self didChangeVisibleRows:range];
88 }
89 }
90 }
91
92
93 - (void)keyDown:(NSEvent *)theEvent
94 {
95 _dontUpdate = YES;
96 [super keyDown:theEvent];
97 }
98
99 - (void)keyUp:(NSEvent *)theEvent
100 {
101 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
102 id delegate = [self delegate];
103
104 [super keyUp:theEvent];
105
106 _dontUpdate = NO;
107
108 if ( !NSEqualRanges( range, _visibleRows ) ) {
109 [self _setVisibleRows:range];
110 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
111 [delegate tableView:self didChangeVisibleRows:range];
112 }
113 }
114 else if ( _updatePending ) {
115 [self reloadData];
116 _updatePending = NO;
117 }
118 }
119
120 - (void)scrollerDidStartScrolling:(TrackerScroller *)scroller
121 {
122 _dontUpdate = YES;
123 }
124
125 - (void)scrollerDidStopScrolling:(TrackerScroller *)scroller
126 {
127 NSRange range = [self rowsInRect:[(NSClipView *)[self superview] documentVisibleRect]];
128 id delegate = [self delegate];
129
130 _dontUpdate = NO;
131
132 if ( !NSEqualRanges( range, _visibleRows ) ) {
133 [self _setVisibleRows:range];
134 if ( [delegate respondsToSelector:@selector(tableView:didChangeVisibleRows:)] ) {
135 [delegate tableView:self didChangeVisibleRows:range];
136 }
137 }
138 else if ( _updatePending ) {
139 [self reloadData];
140 _updatePending = NO;
141 }
142 }
143
144
145 @end
This page took 0.036542 seconds and 4 git commands to generate.