5 // Created by Chaz McGarvey on 12/28/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
9 #import "VariableTable.h"
12 @interface VariableTable ( PrivateAPI
)
14 - (void)_setVisibleRows
:(NSRange
)rows
;
19 @implementation VariableTable
24 NSScrollView
*scrollView
= (NSScrollView
*)[(NSClipView
*)[self superview
] superview
];
25 NSScroller
*oldScroller
= [[scrollView verticalScroller
] retain
];
27 TrackerScroller
*scroller
= [[TrackerScroller alloc
] initWithFrame
:[oldScroller frame
]];
29 [scroller setControlSize
:[oldScroller controlSize
]];
30 [scroller setFloatValue
:[oldScroller floatValue
] knobProportion
:[oldScroller knobProportion
]];
31 [scroller setControlTint
:[oldScroller controlTint
]];
33 // set the new scroller
34 [scrollView setHasVerticalScroller
:NO
];
35 [scrollView setVerticalScroller
:scroller
];
36 [scrollView setHasVerticalScroller
:YES
];
38 [scroller setDelegate
:self];
40 [oldScroller release
];
42 /*if ( [super respondsToSelector:@selector(awakeFromNib)] ) {
48 - (NSRange
)visibleRows
53 - (void)_setVisibleRows
:(NSRange
)rows
68 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
69 id delegate
= [self delegate
];
71 if ( !NSEqualRanges( range
, _visibleRows
) ) {
72 [self _setVisibleRows
:range
];
73 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
74 [delegate tableView
:self didChangeVisibleRows
:range
];
80 - (void)keyDown
:(NSEvent
*)theEvent
83 [super keyDown
:theEvent
];
86 - (void)keyUp
:(NSEvent
*)theEvent
88 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
89 id delegate
= [self delegate
];
91 [super keyUp
:theEvent
];
95 if ( !NSEqualRanges( range
, _visibleRows
) ) {
96 [self _setVisibleRows
:range
];
97 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
98 [delegate tableView
:self didChangeVisibleRows
:range
];
101 else if ( _updatePending
) {
107 - (void)scrollerDidStartScrolling
:(TrackerScroller
*)scroller
112 - (void)scrollerDidStopScrolling
:(TrackerScroller
*)scroller
114 NSRange range
= [self rowsInRect
:[(NSClipView
*)[self superview
] documentVisibleRect
]];
115 id delegate
= [self delegate
];
119 if ( !NSEqualRanges( range
, _visibleRows
) ) {
120 [self _setVisibleRows
:range
];
121 if ( [delegate respondsToSelector
:@selector(tableView
:didChangeVisibleRows
:)] ) {
122 [delegate tableView
:self didChangeVisibleRows
:range
];
125 else if ( _updatePending
) {