Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdc316f5

Browse files
committed
Implemented#65 - autohiding for version and comparison editors
1 parent710728b commitdc316f5

12 files changed

+1694
-16
lines changed

‎SCXcodeMinimap.xcodeproj/project.pbxproj

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
18C2EA5C1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C2EA5B1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m */; };
1717
18DE25ED1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */; };
1818
18E577FC1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E577FB1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m */; };
19+
18E75A261B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E75A251B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.m */; };
1920
18ECB80E1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18ECB80D1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m */; };
2021
18ECB8111B1322A300EE4D82 /* SCXcodeMinimapCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 18ECB8101B1322A300EE4D82 /* SCXcodeMinimapCommon.m */; };
2122
18FE09B61707639E00118FEB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18FE09B51707639E00118FEB /* Cocoa.framework */; };
@@ -71,14 +72,22 @@
7172
188D38781A98B3D8005C7F85 /* DVTAnnotation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVTAnnotation.h; sourceTree = "<group>"; };
7273
188FCC881A98B57A0026F529 /* DBGBreakpointAnnotationProvider+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DBGBreakpointAnnotationProvider+SCXcodeMinimap.h"; sourceTree = "<group>"; };
7374
188FCC891A98B57A0026F529 /* DBGBreakpointAnnotationProvider+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "DBGBreakpointAnnotationProvider+SCXcodeMinimap.m"; sourceTree = "<group>"; };
75+
18AFA6CE1B807E5F005D23E1 /* IDEWorkspaceWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEWorkspaceWindowController.h; sourceTree = "<group>"; };
76+
18AFA6CF1B8083BB005D23E1 /* IDEWorkspaceTabController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEWorkspaceTabController.h; sourceTree = "<group>"; };
77+
18AFA6D01B80852A005D23E1 /* IDEEditorArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEEditorArea.h; sourceTree = "<group>"; };
7478
18B3CEE51A8AA52A00A0873D /* DVTPreferenceSetManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVTPreferenceSetManager.h; sourceTree = "<group>"; };
79+
18B53B481B88C1A200120739 /* DVTFilePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVTFilePath.h; sourceTree = "<group>"; };
7580
18C2EA5A1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DBGBreakpointAnnotation+SCXcodeMinimap.h"; sourceTree = "<group>"; };
7681
18C2EA5B1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "DBGBreakpointAnnotation+SCXcodeMinimap.m"; sourceTree = "<group>"; };
7782
18C8F0331A7ECB1300C7A76F /* DVTFoldingLayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVTFoldingLayoutManager.h; sourceTree = "<group>"; };
7883
18C8F0341A7ECB1300C7A76F /* DVTLayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVTLayoutManager.h; sourceTree = "<group>"; };
7984
18C999FC1A98AF370008AF54 /* DBGBreakpointAnnotationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBGBreakpointAnnotationProvider.h; sourceTree = "<group>"; };
8085
18C999FD1A98AF580008AF54 /* DVTAnnotationProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVTAnnotationProvider.h; sourceTree = "<group>"; };
8186
18CA02B61A9D0DF1001C5CE1 /* IDEBreakpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDEBreakpoint.h; sourceTree = "<group>"; };
87+
18D87F9C1B8899E800D27B29 /* IDESourceCodeComparisonEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDESourceCodeComparisonEditor.h; sourceTree = "<group>"; };
88+
18D87F9D1B889A3000D27B29 /* IDEComparisonEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEComparisonEditor.h; sourceTree = "<group>"; };
89+
18D87F9E1B88A57900D27B29 /* IDEEditorModeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEEditorModeViewController.h; sourceTree = "<group>"; };
90+
18DCC5BA1B80B11700596B6F /* IDEEditorContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEEditorContext.h; sourceTree = "<group>"; };
8291
18DE25EB1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IDESourceCodeEditor+SCXcodeMinimap.h"; sourceTree = "<group>"; };
8392
18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IDESourceCodeEditor+SCXcodeMinimap.m"; sourceTree = "<group>"; };
8493
18DE6AFB1B203D070042615D /* DVTFindResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVTFindResult.h; sourceTree = "<group>"; };
@@ -88,6 +97,8 @@
8897
18E577F91B119C7200421483 /* DVTMessageBubbleAnnotation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVTMessageBubbleAnnotation.h; sourceTree = "<group>"; };
8998
18E577FA1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IDEIssueAnnotationProvider+SCXcodeMinimap.h"; sourceTree = "<group>"; };
9099
18E577FB1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IDEIssueAnnotationProvider+SCXcodeMinimap.m"; sourceTree = "<group>"; };
100+
18E75A241B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IDEEditorArea+SCXcodeMinimap.h"; sourceTree = "<group>"; };
101+
18E75A251B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IDEEditorArea+SCXcodeMinimap.m"; sourceTree = "<group>"; };
91102
18ECB80C1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "DVTLayoutManager+SCXcodeMinimap.h"; sourceTree = "<group>"; };
92103
18ECB80D1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "DVTLayoutManager+SCXcodeMinimap.m"; sourceTree = "<group>"; };
93104
18ECB80F1B1322A300EE4D82 /* SCXcodeMinimapCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCXcodeMinimapCommon.h; sourceTree = "<group>"; };
@@ -133,6 +144,8 @@
133144
184C11701A740F8A002A7C65 /* Xcode Headers */ = {
134145
isa = PBXGroup;
135146
children = (
147+
18B53B481B88C1A200120739 /* DVTFilePath.h */,
148+
18D87F9E1B88A57900D27B29 /* IDEEditorModeViewController.h */,
136149
188D38761A98B26E005C7F85 /* DBGBreakpointAnnotation.h */,
137150
18C999FC1A98AF370008AF54 /* DBGBreakpointAnnotationProvider.h */,
138151
188D38781A98B3D8005C7F85 /* DVTAnnotation.h */,
@@ -165,15 +178,21 @@
165178
18E577F61B119BF200421483 /* IDEBuildIssueAnnotation.h */,
166179
18E577F81B119C3F00421483 /* IDEBuildIssueErrorAnnotation.h */,
167180
18E577F71B119C1000421483 /* IDEBuildIssueWarningAnnotation.h */,
181+
18D87F9D1B889A3000D27B29 /* IDEComparisonEditor.h */,
168182
184C117D1A740F8A002A7C65 /* IDEEditor.h */,
183+
18AFA6D01B80852A005D23E1 /* IDEEditorArea.h */,
184+
18DCC5BA1B80B11700596B6F /* IDEEditorContext.h */,
169185
1876135D1A77A69F00974BE1 /* IDEEditorDocument.h */,
170186
187EEF6A1A8F78C400E4EF39 /* IDEFileBreakpoint.h */,
171187
18FEFA8C1A782D8600DC98C5 /* IDEFileTextSettings.h */,
172188
180F24D61B119866009ACE49 /* IDEIssueAnnotationProvider.h */,
189+
18D87F9C1B8899E800D27B29 /* IDESourceCodeComparisonEditor.h */,
173190
1812C3911A77A7CF00E2CFB3 /* IDESourceCodeDocument.h */,
174191
184C117E1A740F8A002A7C65 /* IDESourceCodeEditor.h */,
175192
184C117F1A740F8A002A7C65 /* IDESourceCodeEditorContainerView.h */,
176193
184C11801A740F8A002A7C65 /* IDEViewController.h */,
194+
18AFA6CF1B8083BB005D23E1 /* IDEWorkspaceTabController.h */,
195+
18AFA6CE1B807E5F005D23E1 /* IDEWorkspaceWindowController.h */,
177196
);
178197
path = "Xcode Headers";
179198
sourceTree = "<group>";
@@ -240,6 +259,8 @@
240259
18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */,
241260
1809FF8D1AED1A730058D946 /* NSScroller+SCXcodeMinimap.h */,
242261
1809FF8E1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m */,
262+
18E75A241B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.h */,
263+
18E75A251B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.m */,
243264
18FE09BC1707639E00118FEB /* Supporting Files */,
244265
184C11701A740F8A002A7C65 /* Xcode Headers */,
245266
);
@@ -327,6 +348,7 @@
327348
18ECB80E1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m in Sources */,
328349
1819E4291AA1FB5900C344F2 /* SCXcodeMinimapScrollView.m in Sources */,
329350
18E577FC1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m in Sources */,
351+
18E75A261B80B3190082AA24 /* IDEEditorArea+SCXcodeMinimap.m in Sources */,
330352
1809FF8F1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m in Sources */,
331353
);
332354
runOnlyForDeploymentPostprocessing = 0;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// IDEEditorArea+SCXcodeMinimap.h
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 8/16/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import"IDEEditorArea.h"
10+
11+
@protocol IDEEditorAreaMinimapDelegate;
12+
13+
@interfaceIDEEditorArea (SCXcodeMinimap)
14+
15+
@property (nonatomic,weak)id<IDEEditorAreaMinimapDelegate> minimapDelegate;
16+
17+
@end
18+
19+
@protocolIDEEditorAreaMinimapDelegate <NSObject>
20+
21+
- (void)editorAreaDidChangeEditorMode:(IDEEditorArea *)editorArea;
22+
23+
@end
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
//
2+
// IDEEditorArea+SCXcodeMinimap.m
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 8/16/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import"IDEEditorArea+SCXcodeMinimap.h"
10+
#import"SCXcodeMinimapCommon.h"
11+
12+
staticvoid *IDEEditorAreaEditorModeObservingContext = &IDEEditorAreaEditorModeObservingContext;
13+
14+
@implementationIDEEditorArea (SCXcodeMinimap)
15+
16+
+ (void)load
17+
{
18+
sc_swizzleInstanceMethod([selfclass],@selector(viewDidInstall),@selector(sc_viewDidInstall));
19+
sc_swizzleInstanceMethod([selfclass],@selector(viewWillUninstall),@selector(sc_viewWillUninstall));
20+
}
21+
22+
- (id<IDEEditorAreaMinimapDelegate>)minimapDelegate
23+
{
24+
returnobjc_getAssociatedObject(self,@selector(minimapDelegate));
25+
}
26+
27+
- (void)setMinimapDelegate:(id<IDEEditorAreaMinimapDelegate>)minimapDelegate
28+
{
29+
objc_setAssociatedObject(self,@selector(minimapDelegate), minimapDelegate,OBJC_ASSOCIATION_ASSIGN);
30+
}
31+
32+
- (void)sc_viewDidInstall
33+
{
34+
[selfaddObserver:selfforKeyPath:@"editorMode"options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNewcontext:IDEEditorAreaEditorModeObservingContext];
35+
36+
[selfsc_viewDidInstall];
37+
}
38+
39+
- (void)sc_viewWillUninstall
40+
{
41+
[selfremoveObserver:selfforKeyPath:@"editorMode"];
42+
43+
[selfsc_viewWillUninstall];
44+
}
45+
46+
- (void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary *)changecontext:(void *)context
47+
{
48+
if(context == IDEEditorAreaEditorModeObservingContext) {
49+
if([self.minimapDelegaterespondsToSelector:@selector(editorAreaDidChangeEditorMode:)]) {
50+
[self.minimapDelegateeditorAreaDidChangeEditorMode:self];
51+
}
52+
}
53+
}
54+
55+
@end

‎SCXcodeMinimap/SCXcodeMinimapView.m

Lines changed: 97 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
#import"SCXcodeMinimapSelectionView.h"
1313

1414
#import"IDESourceCodeEditor+SCXcodeMinimap.h"
15-
#import"IDEEditorDocument.h"
15+
#import"IDESourceCodeComparisonEditor.h"
16+
#import"IDESourceCodeDocument.h"
17+
#import"DVTFilePath.h"
1618

1719
#import"DVTTextStorage.h"
1820
#import"DVTLayoutManager+SCXcodeMinimap.h"
@@ -40,6 +42,12 @@
4042

4143
#import"NSScroller+SCXcodeMinimap.h"
4244

45+
#import"IDEWorkspaceWindowController.h"
46+
#import"IDEWorkspaceTabController.h"
47+
#import"IDEEditorArea+SCXcodeMinimap.h"
48+
#import"IDEEditorModeViewController.h"
49+
#import"IDEEditorContext.h"
50+
4351
typedefNS_ENUM(NSUInteger, SCXcodeMinimapAnnotationType) {
4452
SCXcodeMinimapAnnotationTypeUndefined,
4553
SCXcodeMinimapAnnotationTypeTypeWarning,
@@ -70,9 +78,13 @@ @interface SCXcodeMinimapView () < NSLayoutManagerDelegate,
7078
DBGBreakpointAnnotationProviderDelegate,
7179
IDEIssueAnnotationProviderDelegate,
7280
DVTLayoutManagerMinimapDelegate,
73-
IDESourceCodeEditorSearchResultsDelegate >
81+
IDESourceCodeEditorSearchResultsDelegate,
82+
IDEEditorAreaMinimapDelegate >
7483

7584
@property (nonatomic,weak) IDESourceCodeEditor *editor;
85+
86+
@property (nonatomic,weak) IDEEditorArea *editorArea;
87+
7688
@property (nonatomic,strong) DVTSourceTextView *editorTextView;
7789

7890
@property (nonatomic,strong) SCXcodeMinimapScrollView *scrollView;
@@ -120,7 +132,7 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
120132
[self.editorsetSearchResultsDelegate:self];
121133

122134
self.editorTextView = editor.textView;
123-
135+
124136
[selfsetWantsLayer:YES];
125137
[selfsetAutoresizingMask:NSViewMinXMargin | NSViewMinYMargin | NSViewWidthSizable | NSViewHeightSizable];
126138

@@ -137,7 +149,7 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
137149
[self.scrollViewsetVerticalScrollElasticity:NSScrollElasticityNone];
138150
[selfaddSubview:self.scrollView];
139151

140-
self.textView = [[DVTSourceTextViewalloc]init];
152+
self.textView = [[DVTSourceTextViewalloc]initWithFrame:CGRectZero];
141153

142154
NSTextStorage *storage = self.editorTextView.textStorage;
143155
[self.textViewsetTextStorage:storage];
@@ -191,7 +203,7 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
191203

192204
__weaktypeof(self) weakSelf = self;
193205
[self.notificationObserversaddObject:[[NSNotificationCenterdefaultCenter]addObserverForName:SCXcodeMinimapShouldDisplayChangeNotificationobject:nilqueue:nilusingBlock:^(NSNotification *note) {
194-
[weakSelfsetVisible:[[[NSUserDefaultsstandardUserDefaults]objectForKey:SCXcodeMinimapShouldDisplayKey]boolValue]];
206+
[weakSelftoggleVisibility];
195207
}]];
196208

197209
[self.notificationObserversaddObject:[[NSNotificationCenterdefaultCenter]addObserverForName:SCXcodeMinimapZoomLevelChangeNotificationobject:nilqueue:nilusingBlock:^(NSNotification *note) {
@@ -241,7 +253,7 @@ - (instancetype)initWithEditor:(IDESourceCodeEditor *)editor
241253
}]];
242254

243255
[self.notificationObserversaddObject:[[NSNotificationCenterdefaultCenter]addObserverForName:SCXcodeMinimapAutohideChangeNotificationobject:nilqueue:nilusingBlock:^(NSNotification *note) {
244-
[selftryShowing];
256+
[selftoggleVisibility];
245257
}]];
246258

247259
[self.notificationObserversaddObject:[[NSNotificationCenterdefaultCenter]addObserverForName:SCXcodeMinimapThemeChangeNotificationobject:nilqueue:nilusingBlock:^(NSNotification *note) {
@@ -268,23 +280,29 @@ - (void)viewDidMoveToWindow
268280
return;
269281
}
270282

271-
[selftryShowing];
283+
self.editorArea = [selfgetEditorArea];
284+
[self.editorAreasetMinimapDelegate:self];
285+
286+
[selftoggleVisibility];
272287
}
273288

274-
- (void)tryShowing
289+
- (void)toggleVisibility
275290
{
291+
BOOL visible = [[[NSUserDefaultsstandardUserDefaults]objectForKey:SCXcodeMinimapShouldDisplayKey]boolValue];
276292
BOOL shouldAutohide = [[[NSUserDefaultsstandardUserDefaults]objectForKey:SCXcodeMinimapShouldAutohideKey]boolValue];
277293

278-
if(shouldAutohide) {
279-
NSRange visibleEditorRange = [self.editorTextViewvisibleCharacterRange];
280-
if(NSEqualRanges(visibleEditorRange,NSMakeRange(0, self.textView.string.length))) {
281-
return;
294+
if(shouldAutohide && visible) {
295+
if(self.editorArea ==nil || self.editorArea.editorMode) {
296+
visible =NO;
297+
}else {
298+
NSRange visibleEditorRange = [self.editorTextViewvisibleCharacterRange];
299+
if(NSEqualRanges(visibleEditorRange,NSMakeRange(0, self.textView.string.length))) {
300+
visible =NO;
301+
}
282302
}
283303
}
284304

285-
dispatch_async(dispatch_get_main_queue(), ^{
286-
[selfsetVisible:[[[NSUserDefaultsstandardUserDefaults]objectForKey:SCXcodeMinimapShouldDisplayKey]boolValue]];
287-
});
305+
[selfsetVisible:visible];
288306
}
289307

290308
#pragma mark - Show/Hide
@@ -463,6 +481,13 @@ - (void)foldingManager:(DVTFoldingManager *)foldingManager didUnfoldRange:(NSRan
463481
[selfupdateOffset];
464482
}
465483

484+
#pragma mark - IDEEditorAreaMinimapDelegate
485+
486+
- (void)editorAreaDidChangeEditorMode:(IDEEditorArea *)editorArea
487+
{
488+
[selftoggleVisibility];
489+
}
490+
466491
#pragma mark - DBGBreakpointAnnotationProviderDelegate
467492

468493
- (void)breakpointAnnotationProviderDidChangeBreakpoints:(DBGBreakpointAnnotationProvider *)annotationProvider
@@ -693,9 +718,12 @@ - (void)updateTheme
693718
- (void)updateSize
694719
{
695720
CGFloat zoomLevel = [[[NSUserDefaultsstandardUserDefaults]objectForKey:SCXcodeMinimapZoomLevelKey]doubleValue];
696-
697721
CGFloat minimapWidth = (self.hidden ?0.0f : self.editor.containerView.bounds.size.width * zoomLevel);
698722

723+
if(CGRectGetWidth(self.bounds) == minimapWidth) {
724+
return;
725+
}
726+
699727
NSRect editorScrollViewFrame = self.editor.scrollView.frame;
700728
editorScrollViewFrame.size.width = self.editor.scrollView.superview.frame.size.width - minimapWidth;
701729
self.editor.scrollView.frame = editorScrollViewFrame;
@@ -784,4 +812,57 @@ - (void)invalidateMinimap
784812
}
785813
}
786814

815+
- (IDEEditorArea *)getEditorArea
816+
{
817+
IDEWorkspaceWindowController *windowController = [IDEWorkspaceWindowControllerworkspaceWindowControllerForWindow:self.window];
818+
if(!windowController) {
819+
returnnil;
820+
}
821+
IDEWorkspaceTabController *tabController =nil;
822+
823+
for(IDEWorkspaceTabController *someTabController in windowController.workspaceTabControllers) {
824+
825+
NSView *superview = self.superview;
826+
while (superview) {
827+
if([superviewisEqual:someTabController.view]) {
828+
tabController = someTabController;
829+
break;
830+
}
831+
832+
superview = superview.superview;
833+
}
834+
835+
if(tabController) {
836+
break;
837+
}
838+
}
839+
840+
if(!tabController) {
841+
returnnil;
842+
}
843+
844+
if([tabController.editorArea.primaryEditorContext.editorisKindOfClass:[IDESourceCodeEditorclass]]) {
845+
846+
IDEEditorDocument *document = self.editor.sourceCodeDocument;
847+
IDEEditorDocument *primaryDocument = tabController.editorArea.primaryEditorDocument;
848+
IDEEditorDocument *alternateDocument = tabController.editorArea.editorModeViewController.selectedAlternateEditorContext.editor.document;
849+
850+
if([documentisEqualTo:primaryDocument] || [documentisEqualTo:alternateDocument] ||
851+
[document.filePath.fileNameisEqualToString:primaryDocument.filePath.fileName] ||
852+
[document.filePath.fileNameisEqualToString:alternateDocument.filePath.fileName]) {
853+
return tabController.editorArea;
854+
}
855+
856+
}elseif([tabController.editorArea.primaryEditorContext.editorisKindOfClass:[IDESourceCodeComparisonEditorclass]]) {
857+
858+
IDESourceCodeComparisonEditor *editor = (IDESourceCodeComparisonEditor *)tabController.editorArea.primaryEditorContext.editor;
859+
860+
if([editor.primaryDocumentisEqualTo:self.editor.sourceCodeDocument] || [editor.secondaryDocumentisEqualTo:self.editor.sourceCodeDocument]) {
861+
return tabController.editorArea;
862+
}
863+
}
864+
865+
returnnil;
866+
}
867+
787868
@end

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp