mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 16:56:09 +03:00
Merge pull request #1932 from ghostty-org/urllen
macOS: URL preview limited to one line, truncate
This commit is contained in:
@ -153,12 +153,28 @@ extension Ghostty {
|
|||||||
let padding: CGFloat = 3
|
let padding: CGFloat = 3
|
||||||
ZStack {
|
ZStack {
|
||||||
HStack {
|
HStack {
|
||||||
|
Spacer()
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Spacer()
|
Spacer()
|
||||||
|
|
||||||
Text(verbatim: url)
|
Text(verbatim: url)
|
||||||
.padding(.init(top: padding, leading: padding, bottom: padding, trailing: padding))
|
.padding(.init(top: padding, leading: padding, bottom: padding, trailing: padding))
|
||||||
.background(.background)
|
.background(.background)
|
||||||
|
.lineLimit(1)
|
||||||
|
.truncationMode(.middle)
|
||||||
|
.opacity(isHoveringURLLeft ? 1 : 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HStack {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Text(verbatim: url)
|
||||||
|
.padding(.init(top: padding, leading: padding, bottom: padding, trailing: padding))
|
||||||
|
.background(.background)
|
||||||
|
.lineLimit(1)
|
||||||
|
.truncationMode(.middle)
|
||||||
.opacity(isHoveringURLLeft ? 0 : 1)
|
.opacity(isHoveringURLLeft ? 0 : 1)
|
||||||
.onHover(perform: { hovering in
|
.onHover(perform: { hovering in
|
||||||
isHoveringURLLeft = hovering
|
isHoveringURLLeft = hovering
|
||||||
@ -166,18 +182,6 @@ extension Ghostty {
|
|||||||
}
|
}
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
|
|
||||||
HStack {
|
|
||||||
Spacer()
|
|
||||||
VStack(alignment: .leading) {
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Text(verbatim: url)
|
|
||||||
.padding(.init(top: padding, leading: padding, bottom: padding, trailing: padding))
|
|
||||||
.background(.background)
|
|
||||||
.opacity(isHoveringURLLeft ? 1 : 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,6 +224,7 @@ pub const URLWidget = struct {
|
|||||||
pub fn init(surface: *const Surface, str: [:0]const u8) URLWidget {
|
pub fn init(surface: *const Surface, str: [:0]const u8) URLWidget {
|
||||||
// Create the left
|
// Create the left
|
||||||
const left = c.gtk_label_new(str.ptr);
|
const left = c.gtk_label_new(str.ptr);
|
||||||
|
c.gtk_label_set_ellipsize(@ptrCast(left), c.PANGO_ELLIPSIZE_MIDDLE);
|
||||||
c.gtk_widget_add_css_class(@ptrCast(left), "view");
|
c.gtk_widget_add_css_class(@ptrCast(left), "view");
|
||||||
c.gtk_widget_add_css_class(@ptrCast(left), "url-overlay");
|
c.gtk_widget_add_css_class(@ptrCast(left), "url-overlay");
|
||||||
c.gtk_widget_set_halign(left, c.GTK_ALIGN_START);
|
c.gtk_widget_set_halign(left, c.GTK_ALIGN_START);
|
||||||
@ -232,6 +233,7 @@ pub const URLWidget = struct {
|
|||||||
|
|
||||||
// Create the right
|
// Create the right
|
||||||
const right = c.gtk_label_new(str.ptr);
|
const right = c.gtk_label_new(str.ptr);
|
||||||
|
c.gtk_label_set_ellipsize(@ptrCast(right), c.PANGO_ELLIPSIZE_MIDDLE);
|
||||||
c.gtk_widget_add_css_class(@ptrCast(right), "hidden");
|
c.gtk_widget_add_css_class(@ptrCast(right), "hidden");
|
||||||
c.gtk_widget_add_css_class(@ptrCast(right), "view");
|
c.gtk_widget_add_css_class(@ptrCast(right), "view");
|
||||||
c.gtk_widget_add_css_class(@ptrCast(right), "url-overlay");
|
c.gtk_widget_add_css_class(@ptrCast(right), "url-overlay");
|
||||||
|
Reference in New Issue
Block a user