2 // **********************************************************************
3 // The Cheat - A universal game cheater for Mac OS X
4 // (C) 2003-2005 Chaz McGarvey (BrokenZipper)
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)
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.
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.
22 #import "VariableTable.h"
25 @interface VariableTable ( PrivateAPI
)
27 - (void)_setVisibleRows
:(NSRange
)rows
;
32 @implementation VariableTable
37 NSScrollView
*scrollView
= (NSScrollView
*)[(NSClipView
*)[self superview
] superview
];
38 NSScroller
*oldScroller
= [[scrollView verticalScroller
] retain
];
40 TrackerScroller
*scroller
= [[TrackerScroller alloc
] initWithFrame
:[oldScroller frame
]];
42 [scroller setControlSize
:[oldScroller controlSize
]];
43 [scroller setFloatValue
:[oldScroller floatValue
] knobProportion
:[oldScroller knobProportion
]];
44 [scroller setControlTint
:[oldScroller controlTint
]];
46 // set the new scroller
47 [scrollView setHasVerticalScroller
:NO
];
48 [scrollView setVerticalScroller
:scroller
];
49 [scrollView setHasVerticalScroller
:YES
];
51 [scroller setDelegate
:self];
53 [oldScroller release
];
55 /*if ( [super respondsToSelector:@selector(awakeFromNib)] ) {
61 - (NSRange
)visibleRows
66 - (void)_setVisibleRows
:(NSRange
)rows
81 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
82 id delegate
= [self delegate
];
84 if ( !NSEqualRanges( range
, _visibleRows
) ) {
85 [self _setVisibleRows
:range
];
86 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
87 [delegate tableView
:self didChangeVisibleRows
:range
];
93 - (void)keyDown
:(NSEvent
*)theEvent
96 [super keyDown
:theEvent
];
99 - (void)keyUp
:(NSEvent
*)theEvent
101 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
102 id delegate
= [self delegate
];
104 [super keyUp
:theEvent
];
108 if ( !NSEqualRanges( range
, _visibleRows
) ) {
109 [self _setVisibleRows
:range
];
110 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
111 [delegate tableView
:self didChangeVisibleRows
:range
];
114 else if ( _updatePending
) {
120 - (void)scrollerDidStartScrolling
:(TrackerScroller
*)scroller
125 - (void)scrollerDidStopScrolling
:(TrackerScroller
*)scroller
127 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
128 id delegate
= [self delegate
];
132 if ( !NSEqualRanges( range
, _visibleRows
) ) {
133 [self _setVisibleRows
:range
];
134 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
135 [delegate tableView
:self didChangeVisibleRows
:range
];
138 else if ( _updatePending
) {