Skip to content

Commit 721389c

Browse files
committed
Fixed SwiftLint and PR issues
1 parent 85f4656 commit 721389c

File tree

11 files changed

+97
-215
lines changed

11 files changed

+97
-215
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,6 @@
458458
6CB9144B29BEC7F100BC47F2 /* (null) in Sources */ = {isa = PBXBuildFile; };
459459
6CB94CFE2C9F1C9A00E8651C /* TextView+LSPRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CB94CFD2C9F1C9A00E8651C /* TextView+LSPRange.swift */; };
460460
6CB94D032CA1205100E8651C /* AsyncAlgorithms in Frameworks */ = {isa = PBXBuildFile; productRef = 6CB94D022CA1205100E8651C /* AsyncAlgorithms */; };
461-
6CBA0D512A1BF524002C6FAA /* SegmentedControlImproved.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBA0D502A1BF524002C6FAA /* SegmentedControlImproved.swift */; };
462461
6CBD1BC62978DE53006639D5 /* Font+Caption3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBD1BC52978DE53006639D5 /* Font+Caption3.swift */; };
463462
6CBE1CFB2B71DAA6003AC32E /* Loopable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBE1CFA2B71DAA6003AC32E /* Loopable.swift */; };
464463
6CC00A8B2CBEF150004E8134 /* CodeEditSourceEditor in Frameworks */ = {isa = PBXBuildFile; productRef = 6CC00A8A2CBEF150004E8134 /* CodeEditSourceEditor */; };
@@ -527,6 +526,8 @@
527526
B607184C2B17E037009CDAB4 /* SourceControlStashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B607184B2B17E037009CDAB4 /* SourceControlStashView.swift */; };
528527
B60BE8BD297A167600841125 /* AcknowledgementRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60BE8BC297A167600841125 /* AcknowledgementRowView.swift */; };
529528
B6152B802ADAE421004C6012 /* CodeEditWindowControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6152B7F2ADAE421004C6012 /* CodeEditWindowControllerExtensions.swift */; };
529+
B616EA882D651ADA00DF9029 /* ScrollOffsetPreferenceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B616EA872D651ADA00DF9029 /* ScrollOffsetPreferenceKey.swift */; };
530+
B616EA892D651ADA00DF9029 /* OverlayButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B616EA862D651ADA00DF9029 /* OverlayButtonStyle.swift */; };
530531
B61A606129F188AB009B43F9 /* ExternalLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = B61A606029F188AB009B43F9 /* ExternalLink.swift */; };
531532
B61A606929F4481A009B43F9 /* MonospacedFontPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B61A606829F4481A009B43F9 /* MonospacedFontPicker.swift */; };
532533
B61DA9DF29D929E100BF4A43 /* GeneralSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B61DA9DE29D929E100BF4A43 /* GeneralSettingsView.swift */; };
@@ -1154,7 +1155,6 @@
11541155
6CABB1A029C5593800340467 /* SearchPanelView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchPanelView.swift; sourceTree = "<group>"; };
11551156
6CB52DC82AC8DC3E002E75B3 /* CEWorkspaceFileManager+FileManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CEWorkspaceFileManager+FileManagement.swift"; sourceTree = "<group>"; };
11561157
6CB94CFD2C9F1C9A00E8651C /* TextView+LSPRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TextView+LSPRange.swift"; sourceTree = "<group>"; };
1157-
6CBA0D502A1BF524002C6FAA /* SegmentedControlImproved.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedControlImproved.swift; sourceTree = "<group>"; };
11581158
6CBD1BC52978DE53006639D5 /* Font+Caption3.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Caption3.swift"; sourceTree = "<group>"; };
11591159
6CBE1CFA2B71DAA6003AC32E /* Loopable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Loopable.swift; sourceTree = "<group>"; };
11601160
6CC17B502C43311900834E2C /* ProjectNavigatorViewController+NSOutlineViewDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProjectNavigatorViewController+NSOutlineViewDataSource.swift"; sourceTree = "<group>"; };
@@ -1220,6 +1220,8 @@
12201220
B607184B2B17E037009CDAB4 /* SourceControlStashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceControlStashView.swift; sourceTree = "<group>"; };
12211221
B60BE8BC297A167600841125 /* AcknowledgementRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AcknowledgementRowView.swift; sourceTree = "<group>"; };
12221222
B6152B7F2ADAE421004C6012 /* CodeEditWindowControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeEditWindowControllerExtensions.swift; sourceTree = "<group>"; };
1223+
B616EA862D651ADA00DF9029 /* OverlayButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayButtonStyle.swift; sourceTree = "<group>"; };
1224+
B616EA872D651ADA00DF9029 /* ScrollOffsetPreferenceKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollOffsetPreferenceKey.swift; sourceTree = "<group>"; };
12231225
B61A606029F188AB009B43F9 /* ExternalLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalLink.swift; sourceTree = "<group>"; };
12241226
B61A606829F4481A009B43F9 /* MonospacedFontPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonospacedFontPicker.swift; sourceTree = "<group>"; };
12251227
B61DA9DE29D929E100BF4A43 /* GeneralSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralSettingsView.swift; sourceTree = "<group>"; };
@@ -2117,6 +2119,7 @@
21172119
587B9D7529300ABD00AC7927 /* CodeEditUI */ = {
21182120
isa = PBXGroup;
21192121
children = (
2122+
B616EA8A2D651B0A00DF9029 /* Styles */,
21202123
587B9D8629300ABD00AC7927 /* Views */,
21212124
);
21222125
path = CodeEditUI;
@@ -2132,17 +2135,14 @@
21322135
B65B10FA2B08B054002852CF /* Divided.swift */,
21332136
587B9D8B29300ABD00AC7927 /* EffectView.swift */,
21342137
587B9D9029300ABD00AC7927 /* HelpButton.swift */,
2135-
B67DB0F82AFDF638002DC647 /* IconButtonStyle.swift */,
2136-
B67DB0FB2AFDF71F002DC647 /* IconToggleStyle.swift */,
2138+
B616EA872D651ADA00DF9029 /* ScrollOffsetPreferenceKey.swift */,
21372139
587B9D8D29300ABD00AC7927 /* SearchPanel.swift */,
21382140
6CABB1A029C5593800340467 /* SearchPanelView.swift */,
21392141
61816B822C81DC2C00C71BF7 /* SearchField.swift */,
2140-
611028C72C8DC7F100DFD845 /* MenuWithButtonStyle.swift */,
21412142
587B9D8929300ABD00AC7927 /* PanelDivider.swift */,
21422143
B67DB0EE2AF3E381002DC647 /* PaneTextField.swift */,
21432144
587B9D8E29300ABD00AC7927 /* PressActionsModifier.swift */,
21442145
587B9D8829300ABD00AC7927 /* SegmentedControl.swift */,
2145-
6CBA0D502A1BF524002C6FAA /* SegmentedControlImproved.swift */,
21462146
587B9D8C29300ABD00AC7927 /* SettingsTextEditor.swift */,
21472147
587B9D8F29300ABD00AC7927 /* ToolbarBranchPicker.swift */,
21482148
B6DCDAC52CCDE2B90099FBF9 /* InstantPopoverModifier.swift */,
@@ -3271,6 +3271,17 @@
32713271
path = Views;
32723272
sourceTree = "<group>";
32733273
};
3274+
B616EA8A2D651B0A00DF9029 /* Styles */ = {
3275+
isa = PBXGroup;
3276+
children = (
3277+
B67DB0F82AFDF638002DC647 /* IconButtonStyle.swift */,
3278+
B67DB0FB2AFDF71F002DC647 /* IconToggleStyle.swift */,
3279+
B616EA862D651ADA00DF9029 /* OverlayButtonStyle.swift */,
3280+
611028C72C8DC7F100DFD845 /* MenuWithButtonStyle.swift */,
3281+
);
3282+
path = Styles;
3283+
sourceTree = "<group>";
3284+
};
32743285
B61DA9DD29D929BF00BF4A43 /* Pages */ = {
32753286
isa = PBXGroup;
32763287
children = (
@@ -4297,7 +4308,6 @@
42974308
611192082B08CCFD00D4459B /* SearchIndexer+Terms.swift in Sources */,
42984309
B67DBB902CD5EA77007F4F18 /* GlobPattern.swift in Sources */,
42994310
28B8F884280FFE4600596236 /* NSTableView+Background.swift in Sources */,
4300-
6CBA0D512A1BF524002C6FAA /* SegmentedControlImproved.swift in Sources */,
43014311
58F2EB06292FB2B0004A9BDE /* KeybindingsSettings.swift in Sources */,
43024312
618725A12C29EFCC00987354 /* SchemeDropDownView.swift in Sources */,
43034313
587B9E8E29301D8F00AC7927 /* BitBucketRepositoryRouter.swift in Sources */,
@@ -4648,6 +4658,8 @@
46484658
613899BC2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift in Sources */,
46494659
611192002B08CCD700D4459B /* SearchIndexer+Memory.swift in Sources */,
46504660
587B9E8129301D8F00AC7927 /* PublicKey.swift in Sources */,
4661+
B616EA882D651ADA00DF9029 /* ScrollOffsetPreferenceKey.swift in Sources */,
4662+
B616EA892D651ADA00DF9029 /* OverlayButtonStyle.swift in Sources */,
46514663
6CCEE7F52D2C91F700B2B854 /* UtilityAreaTerminalPicker.swift in Sources */,
46524664
611191FE2B08CCD200D4459B /* SearchIndexer+File.swift in Sources */,
46534665
B69D3EE52C5F54B3005CF43A /* TasksPopoverMenuItem.swift in Sources */,
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import SwiftUI
2+
3+
/// A button style for overlay buttons (like close, action buttons in notifications)
4+
struct OverlayButtonStyle: ButtonStyle {
5+
@Environment(\.isEnabled) private var isEnabled
6+
@Environment(\.controlActiveState) private var controlActive
7+
8+
func makeBody(configuration: Configuration) -> some View {
9+
configuration.label
10+
.foregroundColor(
11+
isEnabled
12+
? (configuration.isPressed
13+
? .primary.opacity(0.3)
14+
: (controlActive == .inactive
15+
? .primary.opacity(0.5)
16+
: .primary.opacity(0.7)))
17+
: .primary.opacity(0.3)
18+
)
19+
.padding(4)
20+
.contentShape(Rectangle())
21+
}
22+
}
23+
24+
extension ButtonStyle where Self == OverlayButtonStyle {
25+
/// A button style for overlay buttons
26+
static var overlay: OverlayButtonStyle {
27+
OverlayButtonStyle()
28+
}
29+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import SwiftUI
2+
3+
/// Tracks scroll offset in scrollable views
4+
struct ScrollOffsetPreferenceKey: PreferenceKey {
5+
typealias Value = CGFloat
6+
static var defaultValue = CGFloat.zero
7+
static func reduce(value: inout Value, nextValue: () -> Value) {
8+
value += nextValue()
9+
}
10+
}

CodeEdit/Features/CodeEditUI/Views/SegmentedControlImproved.swift

Lines changed: 0 additions & 145 deletions
This file was deleted.

CodeEdit/Features/Notifications/NotificationManager.swift

Lines changed: 26 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -59,23 +59,10 @@ final class NotificationManager: NSObject, ObservableObject {
5959
actionButtonTitle: actionButtonTitle,
6060
action: action,
6161
isSticky: isSticky,
62-
isRead: false // Always start as unread
62+
isRead: false
6363
)
6464

65-
DispatchQueue.main.async { [weak self] in
66-
self?.notifications.append(notification)
67-
68-
// Always notify workspaces of new notification
69-
NotificationCenter.default.post(
70-
name: .init("NewNotificationAdded"),
71-
object: notification
72-
)
73-
74-
// Additionally show system notification when app is in background
75-
if self?.isAppActive != true {
76-
self?.showSystemNotification(notification)
77-
}
78-
}
65+
postNotification(notification)
7966
}
8067

8168
/// Posts a new notification
@@ -103,20 +90,7 @@ final class NotificationManager: NSObject, ObservableObject {
10390
isSticky: isSticky
10491
)
10592

106-
DispatchQueue.main.async { [weak self] in
107-
self?.notifications.append(notification)
108-
109-
// Always notify workspaces of new notification
110-
NotificationCenter.default.post(
111-
name: .init("NewNotificationAdded"),
112-
object: notification
113-
)
114-
115-
// Additionally show system notification when app is in background
116-
if self?.isAppActive != true {
117-
self?.showSystemNotification(notification)
118-
}
119-
}
93+
postNotification(notification)
12094
}
12195

12296
/// Posts a new notification
@@ -150,20 +124,7 @@ final class NotificationManager: NSObject, ObservableObject {
150124
isSticky: isSticky
151125
)
152126

153-
DispatchQueue.main.async { [weak self] in
154-
self?.notifications.append(notification)
155-
156-
// Always notify workspaces of new notification
157-
NotificationCenter.default.post(
158-
name: .init("NewNotificationAdded"),
159-
object: notification
160-
)
161-
162-
// Additionally show system notification when app is in background
163-
if self?.isAppActive != true {
164-
self?.showSystemNotification(notification)
165-
}
166-
}
127+
postNotification(notification)
167128
}
168129

169130
/// Dismisses a specific notification
@@ -208,13 +169,33 @@ final class NotificationManager: NSObject, ObservableObject {
208169
)
209170
}
210171

211-
@objc private func handleAppDidBecomeActive() {
172+
@objc
173+
private func handleAppDidBecomeActive() {
212174
isAppActive = true
213175
// Remove any system notifications when app becomes active
214176
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
215177
}
216178

217-
@objc private func handleAppDidResignActive() {
179+
@objc
180+
private func handleAppDidResignActive() {
218181
isAppActive = false
219182
}
183+
184+
/// Posts a notification to workspaces and system
185+
private func postNotification(_ notification: CENotification) {
186+
DispatchQueue.main.async { [weak self] in
187+
self?.notifications.append(notification)
188+
189+
// Always notify workspaces of new notification
190+
NotificationCenter.default.post(
191+
name: .init("NewNotificationAdded"),
192+
object: notification
193+
)
194+
195+
// Additionally show system notification when app is in background
196+
if self?.isAppActive != true {
197+
self?.showSystemNotification(notification)
198+
}
199+
}
200+
}
220201
}

0 commit comments

Comments
 (0)