mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-10-12 04:46:15 +00:00
macos: fixed width for downloading/extracting, better padding
This commit is contained in:
@@ -131,8 +131,8 @@ fileprivate struct UpdateOverlay: View {
|
|||||||
HStack {
|
HStack {
|
||||||
Spacer()
|
Spacer()
|
||||||
UpdatePill(model: appDelegate.updateViewModel)
|
UpdatePill(model: appDelegate.updateViewModel)
|
||||||
.padding(.bottom, 12)
|
.padding(.bottom, 9)
|
||||||
.padding(.trailing, 12)
|
.padding(.trailing, 9)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -547,9 +547,10 @@ extension TerminalWindow {
|
|||||||
@ObservedObject var model: UpdateViewModel
|
@ObservedObject var model: UpdateViewModel
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
// We use the same top/trailing padding so that it hugs the same.
|
||||||
UpdatePill(model: model)
|
UpdatePill(model: model)
|
||||||
.padding(.top, viewModel.accessoryTopPadding)
|
.padding(.top, viewModel.accessoryTopPadding)
|
||||||
.padding(.trailing, 10)
|
.padding(.trailing, viewModel.accessoryTopPadding)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,6 +8,9 @@ struct UpdatePill: View {
|
|||||||
/// Whether the update popover is currently visible
|
/// Whether the update popover is currently visible
|
||||||
@State private var showPopover = false
|
@State private var showPopover = false
|
||||||
|
|
||||||
|
/// The font used for the pill text
|
||||||
|
private let textFont = NSFont.systemFont(ofSize: 11, weight: .medium)
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
if !model.state.isIdle {
|
if !model.state.isIdle {
|
||||||
pillButton
|
pillButton
|
||||||
@@ -43,8 +46,9 @@ struct UpdatePill: View {
|
|||||||
.frame(width: 14, height: 14)
|
.frame(width: 14, height: 14)
|
||||||
|
|
||||||
Text(model.text)
|
Text(model.text)
|
||||||
.font(.system(size: 11, weight: .medium))
|
.font(Font(textFont))
|
||||||
.lineLimit(1)
|
.lineLimit(1)
|
||||||
|
.frame(width: textWidth)
|
||||||
}
|
}
|
||||||
.padding(.horizontal, 8)
|
.padding(.horizontal, 8)
|
||||||
.padding(.vertical, 4)
|
.padding(.vertical, 4)
|
||||||
@@ -58,4 +62,11 @@ struct UpdatePill: View {
|
|||||||
.buttonStyle(.plain)
|
.buttonStyle(.plain)
|
||||||
.help(model.text)
|
.help(model.text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Calculated width for the text to prevent resizing during progress updates
|
||||||
|
private var textWidth: CGFloat? {
|
||||||
|
let attributes: [NSAttributedString.Key: Any] = [.font: textFont]
|
||||||
|
let size = (model.maxWidthText as NSString).size(withAttributes: attributes)
|
||||||
|
return size.width
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,19 @@ class UpdateViewModel: ObservableObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The maximum width text for states that show progress.
|
||||||
|
/// Used to prevent the pill from resizing as percentages change.
|
||||||
|
var maxWidthText: String {
|
||||||
|
switch state {
|
||||||
|
case .downloading:
|
||||||
|
return "Downloading: 100%"
|
||||||
|
case .extracting:
|
||||||
|
return "Preparing: 100%"
|
||||||
|
default:
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The SF Symbol icon name for the current update state.
|
/// The SF Symbol icon name for the current update state.
|
||||||
/// Returns nil for idle, downloading, and extracting states.
|
/// Returns nil for idle, downloading, and extracting states.
|
||||||
var iconName: String? {
|
var iconName: String? {
|
||||||
|
Reference in New Issue
Block a user