]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Log view: Allow resizing horizontally
authorRoopesh Chander <roop@roopc.net>
Sat, 1 Jun 2019 14:35:31 +0000 (20:05 +0530)
committerRoopesh Chander <roop@roopc.net>
Tue, 4 Jun 2019 10:18:42 +0000 (15:48 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/View/LogViewCell.swift
WireGuard/WireGuard/UI/macOS/ViewController/LogViewController.swift

index 1e2312a1ce4f9daa2b1cc36e20ef61a3ffd6befb..c1c6cc54ee18b968d3775c5005fcef48ba81ac1c 100644 (file)
@@ -3,13 +3,25 @@
 
 import Cocoa
 
-class LogViewCell: NSTextField {
+class LogViewCell: NSTableCellView {
+    var text: String = "" {
+        didSet { textField?.stringValue = text }
+    }
+
     init() {
         super.init(frame: .zero)
-        isSelectable = false
-        isEditable = false
-        isBordered = false
-        backgroundColor = .clear
+
+        let textField = NSTextField(wrappingLabelWithString: "")
+        addSubview(textField)
+        textField.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            textField.leadingAnchor.constraint(equalTo: self.leadingAnchor),
+            textField.trailingAnchor.constraint(equalTo: self.trailingAnchor),
+            textField.topAnchor.constraint(equalTo: self.topAnchor),
+            textField.bottomAnchor.constraint(equalTo: self.bottomAnchor)
+        ])
+
+        self.textField = textField
     }
 
     required init?(coder: NSCoder) {
@@ -17,19 +29,19 @@ class LogViewCell: NSTextField {
     }
 
     override func prepareForReuse() {
-        stringValue = ""
-        preferredMaxLayoutWidth = 0
+        textField?.stringValue = ""
     }
 }
 
 class LogViewTimestampCell: LogViewCell {
     override init() {
         super.init()
-        maximumNumberOfLines = 1
-        lineBreakMode = .byClipping
-        preferredMaxLayoutWidth = 0
-        setContentCompressionResistancePriority(.defaultHigh, for: .vertical)
-        setContentHuggingPriority(.defaultLow, for: .vertical)
+        if let textField = textField {
+            textField.maximumNumberOfLines = 1
+            textField.lineBreakMode = .byClipping
+            textField.setContentCompressionResistancePriority(.defaultHigh, for: .vertical)
+            textField.setContentHuggingPriority(.defaultLow, for: .vertical)
+        }
     }
 
     required init?(coder: NSCoder) {
@@ -40,10 +52,12 @@ class LogViewTimestampCell: LogViewCell {
 class LogViewMessageCell: LogViewCell {
     override init() {
         super.init()
-        maximumNumberOfLines = 0
-        lineBreakMode = .byWordWrapping
-        setContentCompressionResistancePriority(.required, for: .vertical)
-        setContentHuggingPriority(.required, for: .vertical)
+        if let textField = textField {
+            textField.maximumNumberOfLines = 0
+            textField.lineBreakMode = .byWordWrapping
+            textField.setContentCompressionResistancePriority(.required, for: .vertical)
+            textField.setContentHuggingPriority(.required, for: .vertical)
+        }
     }
 
     required init?(coder: NSCoder) {
index 088d161dca1274b4fe97acb3fad315e5bf258ad0..6666c226c49877d5777879db80e50d50a5dfd792 100644 (file)
@@ -146,7 +146,8 @@ class LogViewController: NSViewController {
         ])
 
         NSLayoutConstraint.activate([
-            containerView.widthAnchor.constraint(equalToConstant: 640),
+            containerView.widthAnchor.constraint(greaterThanOrEqualToConstant: 640),
+            containerView.widthAnchor.constraint(lessThanOrEqualToConstant: 1200),
             containerView.heightAnchor.constraint(greaterThanOrEqualToConstant: 240)
         ])
 
@@ -250,12 +251,11 @@ extension LogViewController: NSTableViewDelegate {
     func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
         if LogColumn.time.isRepresenting(tableColumn: tableColumn) {
             let cell: LogViewTimestampCell = tableView.dequeueReusableCell()
-            cell.stringValue = logEntries[row].timestamp
+            cell.text = logEntries[row].timestamp
             return cell
         } else if LogColumn.logMessage.isRepresenting(tableColumn: tableColumn) {
             let cell: LogViewMessageCell = tableView.dequeueReusableCell()
-            cell.stringValue = logEntries[row].message
-            cell.preferredMaxLayoutWidth = tableColumn?.width ?? 0
+            cell.text = logEntries[row].message
             return cell
         } else {
             fatalError()