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