diff --git a/clients/apple/macOS/VoiceCatMac/Windows/MainWindowController.swift b/clients/apple/macOS/VoiceCatMac/Windows/MainWindowController.swift index f8f524d..de5446a 100644 --- a/clients/apple/macOS/VoiceCatMac/Windows/MainWindowController.swift +++ b/clients/apple/macOS/VoiceCatMac/Windows/MainWindowController.swift @@ -125,6 +125,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { let innerSplit = NSSplitView() innerSplit.isVertical = false innerSplit.dividerStyle = .thin + innerSplit.translatesAutoresizingMaskIntoConstraints = false let channelPanel = buildChannelPanel() let userPanel = buildUserPanel() @@ -137,6 +138,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { let rightSplit = NSSplitView() rightSplit.isVertical = false rightSplit.dividerStyle = .thin + rightSplit.translatesAutoresizingMaskIntoConstraints = false let chatPanel = buildChatPanel() let activityPanel = buildActivityPanel() rightSplit.addArrangedSubview(chatPanel) @@ -178,6 +180,17 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { composeBar.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), composeBar.heightAnchor.constraint(equalToConstant: 36), ]) + + // Set initial divider positions so panels get reasonable space instead of + // collapsing to zero. These are applied after the window is on screen. + DispatchQueue.main.async { [weak self, weak outerSplit, weak innerSplit, weak rightSplit] in + // outerSplit is vertical (left|right): divide at 40% from left + outerSplit?.setPosition(360, ofDividerAt: 0) + // innerSplit is horizontal (channels on top, users below): divide at 60% from top + innerSplit?.setPosition(260, ofDividerAt: 0) + // rightSplit is horizontal (chat on top, activity below): divide at 70% from top + rightSplit?.setPosition(280, ofDividerAt: 0) + } } private func buildChannelPanel() -> NSView { @@ -195,6 +208,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { sv.documentView = channelOutlineView sv.hasVerticalScroller = true sv.borderType = .noBorder + sv.translatesAutoresizingMaskIntoConstraints = false let menu = NSMenu() menu.delegate = self @@ -221,6 +235,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { sv.documentView = userTableView sv.hasVerticalScroller = true sv.borderType = .noBorder + sv.translatesAutoresizingMaskIntoConstraints = false return sv } @@ -233,6 +248,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { sv.documentView = chatTextView sv.hasVerticalScroller = true sv.borderType = .noBorder + sv.translatesAutoresizingMaskIntoConstraints = false return sv } @@ -248,6 +264,7 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { sv.documentView = activityTableView sv.hasVerticalScroller = true sv.borderType = .noBorder + sv.translatesAutoresizingMaskIntoConstraints = false return sv } @@ -365,6 +382,8 @@ final class MainWindowController: NSWindowController, NSWindowDelegate { levelMeter.widthAnchor.constraint(equalToConstant: 100), devicePicker.widthAnchor.constraint(greaterThanOrEqualToConstant: 160), + + panel.heightAnchor.constraint(equalToConstant: 96), ]) return panel }