Skip to content

Commit 2eebb11

Browse files
committedSep 12, 2023
🐛 Copy and paste experience of the title
1 parent fdd0947 commit 2eebb11

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed
 

‎Mac/View/TitleTextField.swift

+24-5
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,33 @@ class TitleTextField: NSTextField {
66
public var restoreResponder: NSResponder?
77

88
override func performKeyEquivalent(with event: NSEvent) -> Bool {
9+
let pasteboard = NSPasteboard.general
10+
911
if event.modifierFlags.contains(.command),
1012
event.keyCode == kVK_ANSI_C,
11-
!event.modifierFlags.contains(.shift),
12-
!event.modifierFlags.contains(.control),
13-
!event.modifierFlags.contains(.option) {
14-
let pasteboard = NSPasteboard.general
13+
let selectedRange = currentEditor()?.selectedRange,
14+
selectedRange.length > 0
15+
{
16+
// Processing copy commands
17+
let selectedString = (stringValue as NSString).substring(with: selectedRange)
1518
pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil)
16-
pasteboard.setString(stringValue, forType: NSPasteboard.PasteboardType.string)
19+
pasteboard.setString(selectedString, forType: NSPasteboard.PasteboardType.string)
20+
}
21+
22+
// Checks if Command + V was pressed and the current NSTextField is the first responder.
23+
if event.modifierFlags.contains(.command),
24+
event.keyCode == kVK_ANSI_V,
25+
window?.firstResponder == currentEditor()
26+
{
27+
if let items = pasteboard.pasteboardItems {
28+
for item in items {
29+
if let string = item.string(forType: .string) {
30+
let noNewlineString = string.replacingOccurrences(of: "\n", with: " ")
31+
pasteboard.clearContents()
32+
pasteboard.setString(noNewlineString, forType: .string)
33+
}
34+
}
35+
}
1736
}
1837

1938
return super.performKeyEquivalent(with: event)

0 commit comments

Comments
 (0)