forked from ttscoff/nv
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ETScrollView.m
128 lines (113 loc) · 4.01 KB
/
ETScrollView.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// ETScrollView.m
// Notation
//
// Created by elasticthreads on 3/14/11.
//
#import "ETScrollView.h"
#import "ETTransparentScroller.h"
#import "ETOverlayScroller.h"
#import "GlobalPrefs.h"
@implementation ETScrollView
//+ (void)initialize{
//
//// NSLog(@"etscroll initialize");
//}
- (NSView *)hitTest:(NSPoint)aPoint{
if([[[self documentView]className] isEqualToString:@"LinkingEditor"]){
NSRect vsRect=[[self verticalScroller] frame];
vsRect.origin.x-=6.0;
vsRect.size.width+=8.0;
if (NSPointInRect (aPoint,vsRect)) {
return [self verticalScroller];
}else if (IsLionOrLater){
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if([[self subviews]containsObject:[self findBarView]]) {
NSView *tView=[super hitTest:aPoint];
if ([tView superview]==[self findBarView]) {
return tView;
}
}
#endif
}
return [self documentView];
}
return [super hitTest:aPoint];
}
//- (void)setScrollerClassWithString:(NSString *)scrollerClassName{
// scrollerClass=NSClassFromString(scrollerClassName);
//}
//
//- (void)setNeedsOverlayTiling:(BOOL)overlay{
// needsOverlayTiling=overlay;
//}
- (void)awakeFromNib{
needsOverlayTiling=NO;
BOOL fillIt=NO;
if([[[self documentView]className] isEqualToString:@"NotesTableView"]){
scrollerClass=NSClassFromString(@"ETOverlayScroller");
if (!IsLionOrLater) {
needsOverlayTiling=YES;
}
}else{
scrollerClass=NSClassFromString(@"ETTransparentScroller");
if (!IsLionOrLater) {
fillIt=YES;
}
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (IsLionOrLater) {
[[GlobalPrefs defaultPrefs] registerForSettingChange:@selector(setUseETScrollbarsOnLion:sender:) withTarget:self];
[self setHorizontalScrollElasticity:NSScrollElasticityNone];
[self setVerticalScrollElasticity:NSScrollElasticityAllowed];
[self setScrollerStyle:NSScrollerStyleOverlay];
}
#endif
if (!IsLionOrLater||([[GlobalPrefs defaultPrefs]useETScrollbarsOnLion])) {
NSRect vsRect=[[self verticalScroller]frame];
id theScroller=[[scrollerClass alloc]initWithFrame:vsRect];
[theScroller setFillBackground:fillIt];
[self setVerticalScroller:theScroller];
[theScroller release];
}
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
- (void)settingChangedForSelectorString:(NSString*)selectorString{
if (IsLionOrLater&&([selectorString isEqualToString:SEL_STR(setUseETScrollbarsOnLion:sender:)])){
[self changeUseETScrollbarsOnLion];
}
}
- (void)changeUseETScrollbarsOnLion{
if ([[GlobalPrefs defaultPrefs]useETScrollbarsOnLion]) {
NSRect vsRect=[[self verticalScroller]frame];
id theScroller=[[scrollerClass alloc]initWithFrame:vsRect];
[self setVerticalScroller:theScroller];
[theScroller release];
}else{
// id oldScrollers=[self verticalScroller];
NSScroller *theScroller=[[NSScroller alloc]init];
[self setVerticalScroller:theScroller];
[theScroller release];
// [oldScrollers release];
}
[self setScrollerStyle:NSScrollerStyleOverlay];
[self tile];
[self reflectScrolledClipView:[self contentView]];
}
#endif
- (void)tile {
[super tile];
if (needsOverlayTiling) {
if (![[self verticalScroller] isHidden]) {
// NSRect vsRect=[[self verticalScroller] frame];
NSRect conRect = [[self contentView] frame];
// NSView *wdContent = [[self contentView] retain];
conRect.size.width = conRect.size.width + [[self verticalScroller] frame].size.width;
[[self contentView] setFrameSize:conRect.size];
// [wdContent setFrame:conRect];
// [wdContent release];
// [[self verticalScroller] setFrame:vsRect];
}
}
}
@end