Skip to content

Commit b45a655

Browse files
committed
Fixes #47 - hiding the scroll view scollers so they don't affec the content offset.
1 parent e63be6e commit b45a655

File tree

4 files changed

+64
-5
lines changed

4 files changed

+64
-5
lines changed

SCXcodeMinimap.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
1809FF8F1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 1809FF8E1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m */; };
1011
1819E4291AA1FB5900C344F2 /* SCXcodeMinimapScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1819E4281AA1FB5900C344F2 /* SCXcodeMinimapScrollView.m */; };
1112
184C11861A740F97002A7C65 /* SCXcodeMinimapSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C11821A740F97002A7C65 /* SCXcodeMinimapSelectionView.m */; };
1213
184C11871A740F97002A7C65 /* SCXcodeMinimapView.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C11841A740F97002A7C65 /* SCXcodeMinimapView.m */; };
@@ -24,6 +25,8 @@
2425
/* End PBXBuildFile section */
2526

2627
/* Begin PBXFileReference section */
28+
1809FF8D1AED1A730058D946 /* NSScroller+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSScroller+SCXcodeMinimap.h"; sourceTree = "<group>"; };
29+
1809FF8E1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSScroller+SCXcodeMinimap.m"; sourceTree = "<group>"; };
2730
180F0C651A98AE1500E97254 /* DVTAnnotationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVTAnnotationManager.h; sourceTree = "<group>"; };
2831
1812C3911A77A7CF00E2CFB3 /* IDESourceCodeDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = IDESourceCodeDocument.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
2932
1819E4271AA1FB5900C344F2 /* SCXcodeMinimapScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCXcodeMinimapScrollView.h; sourceTree = "<group>"; };
@@ -194,6 +197,8 @@
194197
18C2EA5B1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m */,
195198
188FCC881A98B57A0026F529 /* DBGBreakpointAnnotationProvider+SCXcodeMinimap.h */,
196199
188FCC891A98B57A0026F529 /* DBGBreakpointAnnotationProvider+SCXcodeMinimap.m */,
200+
1809FF8D1AED1A730058D946 /* NSScroller+SCXcodeMinimap.h */,
201+
1809FF8E1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m */,
197202
18FE09BC1707639E00118FEB /* Supporting Files */,
198203
184C11701A740F8A002A7C65 /* Xcode Headers */,
199204
);
@@ -276,6 +281,7 @@
276281
184C11871A740F97002A7C65 /* SCXcodeMinimapView.m in Sources */,
277282
18C2EA5C1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m in Sources */,
278283
1819E4291AA1FB5900C344F2 /* SCXcodeMinimapScrollView.m in Sources */,
284+
1809FF8F1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m in Sources */,
279285
);
280286
runOnlyForDeploymentPostprocessing = 0;
281287
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// NSScroller+SCXcodeMinimap.h
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 4/26/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import <Cocoa/Cocoa.h>
10+
11+
@interface NSScroller (SCXcodeMinimap)
12+
13+
@property (nonatomic, assign) BOOL forcedHidden;
14+
15+
@end
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
// NSScroller+SCXcodeMinimap.m
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 4/26/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import "NSScroller+SCXcodeMinimap.h"
10+
#import <objc/runtime.h>
11+
12+
@implementation NSScroller (SCXcodeMinimap)
13+
@dynamic forcedHidden;
14+
15+
- (BOOL)forcedHidden
16+
{
17+
return [objc_getAssociatedObject(self, @selector(forcedHidden)) boolValue];
18+
}
19+
20+
- (void)setForcedHidden:(BOOL)forcedHidden
21+
{
22+
objc_setAssociatedObject(self, @selector(forcedHidden), @(forcedHidden), OBJC_ASSOCIATION_ASSIGN);
23+
24+
[self setHidden:forcedHidden];
25+
}
26+
27+
- (void)setHidden:(BOOL)hidden
28+
{
29+
if(self.forcedHidden) {
30+
super.hidden = YES;
31+
return;
32+
}
33+
34+
super.hidden = hidden;
35+
}
36+
37+
@end

SCXcodeMinimap/SCXcodeMinimapView.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#import "DBGBreakpointAnnotation+SCXcodeMinimap.h"
3232
#import "DBGBreakpointAnnotation.h"
3333

34+
#import "NSScroller+SCXcodeMinimap.h"
35+
3436
const CGFloat kBackgroundColorShadowLevel = 0.1f;
3537
const CGFloat kDurationBetweenInvalidations = 0.5f;
3638

@@ -156,10 +158,8 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
156158
[self invalidateDisplayForVisibleRange];
157159
}
158160

159-
160-
BOOL shouldHideEditorVerticalScroller = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHideEditorScrollerKey] boolValue];
161-
[self.editor.scrollView setHasVerticalScroller:!shouldHideEditorVerticalScroller];
162-
161+
BOOL shouldHideVerticalScroller = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHideEditorScrollerKey] boolValue];
162+
[self.editor.scrollView.verticalScroller setForcedHidden:shouldHideVerticalScroller];
163163

164164
// Notifications
165165

@@ -201,7 +201,8 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
201201
}]];
202202

203203
[self.notificationObservers addObject:[[NSNotificationCenter defaultCenter] addObserverForName:SCXcodeMinimapHideEditorScrollerChangeNotification object:nil queue:nil usingBlock:^(NSNotification *note) {
204-
[weakSelf.editor.scrollView setHasVerticalScroller:![[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHideEditorScrollerKey] boolValue]];
204+
BOOL shouldHideVerticalScroller = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHideEditorScrollerKey] boolValue];
205+
[weakSelf.editor.scrollView.verticalScroller setForcedHidden:shouldHideVerticalScroller];
205206
}]];
206207

207208
[self.notificationObservers addObject:[[NSNotificationCenter defaultCenter] addObserverForName:SCXcodeMinimapThemeChangeNotification object:nil queue:nil usingBlock:^(NSNotification *note) {

0 commit comments

Comments
 (0)