-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
ETScrollView.m
93 lines (80 loc) · 2.75 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
//
// ETScrollView.m
// Notation
//
// Created by elasticthreads on 3/14/11.
//
#import "ETScrollView.h"
#import "ETOverlayScroller.h"
#import "GlobalPrefs.h"
@implementation ETScrollView
+ (BOOL)isCompatibleWithResponsiveScrolling{
return NO;
}
- (void)awakeFromNib{
needsOverlayTiling=NO;
if ([self.documentView isKindOfClass:[NSTableView class]]) {
scrollerClass=NSClassFromString(@"ETOverlayScroller");
[self setAutohidesScrollers:YES];
if (!IsLionOrLater) {
needsOverlayTiling=YES;
}
}else{
scrollerClass=NSClassFromString(@"ETTransparentScroller");
}
#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];
}
#endif
[self changeUseETScrollbarsOnLion];
}
#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{
id theScroller;
if (!IsLionOrLater||[[GlobalPrefs defaultPrefs]useETScrollbarsOnLion]) {
theScroller=[[scrollerClass alloc]init];
[theScroller setFillBackground:!IsLionOrLater&&(scrollerClass==[ETTransparentScroller class])];
}else{
theScroller=[[NSScroller alloc]init];
}
NSScrollerStyle style=0;
if (IsLionOrLater) {
style=[[theScroller class] preferredScrollerStyle];
}
[self setVerticalScroller:theScroller];
if (IsLionOrLater) {
[theScroller setScrollerStyle:style];
[self setScrollerStyle:style];
}
[theScroller release];
[self tile];
[self reflectScrolledClipView:[self contentView]];
// if (IsLionOrLater) {
// [self flashScrollers];
// }
}
#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