-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathIconListViewBugFix.x
executable file
·87 lines (72 loc) · 2.45 KB
/
IconListViewBugFix.x
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
#import "Headers.h"
%hook SBIconListView
static const char *kCSFolderFrameIdentifier;
static const char *kCSFolderInDockIdentifier;
static const char *kCSFolderShiftIdentifier;
static const char *kCSFolderIconIdentifier;
%new;
- (CGFloat) classicFolderShift {
return [(NSNumber *)objc_getAssociatedObject(self, &kCSFolderShiftIdentifier) floatValue];
}
%new;
- (void)setClassicFolderShift:(CGFloat)shift {
objc_setAssociatedObject(self, &kCSFolderShiftIdentifier, [NSNumber numberWithFloat:shift], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
%new;
- (BOOL) classicFolderFrameSet {
return (objc_getAssociatedObject(self, &kCSFolderFrameIdentifier) != nil);
}
%new;
- (CGRect) classicFolderFrame {
return CGRectFromString(objc_getAssociatedObject(self, &kCSFolderFrameIdentifier));
}
%new;
- (void)setClassicFolderFrame:(CGRect)frame {
if (frame.size.width == 0)
objc_setAssociatedObject(self, &kCSFolderFrameIdentifier, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
else
objc_setAssociatedObject(self, &kCSFolderFrameIdentifier, NSStringFromCGRect(frame), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
%new;
- (SBIconView *)classicFolderIconView {
return (SBIconView *)objc_getAssociatedObject(self, &kCSFolderIconIdentifier);
}
%new;
- (void)setClassicFolderIconView:(SBIconView *)iconView {
objc_setAssociatedObject(self, &kCSFolderIconIdentifier, iconView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
%new;
- (BOOL)classicFolderInDock {
return [(NSNumber *)objc_getAssociatedObject(self, &kCSFolderInDockIdentifier) boolValue];
}
%new;
- (void)setClassicFolderInDock:(BOOL)inDock {
objc_setAssociatedObject(self, &kCSFolderInDockIdentifier, [NSNumber numberWithBool:inDock], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (void)layoutIconsNow {
%orig;
if (![self classicFolderFrameSet]){
for (UIView *icon in self.subviews){
icon.alpha = 1.0f;
}
return;
}
CGRect classicFolderFrame = [self classicFolderFrame];
for (SBIconView *icon in self.subviews){
CGRect frame = icon.frame;
if ([self classicFolderInDock]){
frame.origin.y -= classicFolderFrame.size.height;
} else {
if (frame.origin.y + frame.size.height > (classicFolderFrame.origin.y - 10)){
frame.origin.y += classicFolderFrame.size.height;
}
}
frame.origin.y += [self classicFolderShift];
if (icon != [self classicFolderIconView])
icon.alpha = 0.5f;
else
[icon _applyIconLabelAlpha:0.0f];
icon.frame = frame;
}
}
%end