mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 16:26:08 +03:00
apprt/gtk: stylistic changes
This commit is contained in:
@ -664,32 +664,27 @@ pub fn getContentScale(self: *const Surface) !apprt.ContentScale {
|
|||||||
const gtk_scale: f32 = @floatFromInt(c.gtk_widget_get_scale_factor(@ptrCast(self.gl_area)));
|
const gtk_scale: f32 = @floatFromInt(c.gtk_widget_get_scale_factor(@ptrCast(self.gl_area)));
|
||||||
|
|
||||||
// If we are on X11, we also have to scale using Xft.dpi
|
// If we are on X11, we also have to scale using Xft.dpi
|
||||||
const xft_dpi_scale = if (x11.is_current_display_server()) getXftDpiScale() else 1.0;
|
const xft_dpi_scale = if (!x11.is_current_display_server()) 1.0 else xft_scale: {
|
||||||
|
// Here we use GTK to retrieve gtk-xft-dpi, which is Xft.dpi multiplied
|
||||||
|
// by 1024. See https://docs.gtk.org/gtk4/property.Settings.gtk-xft-dpi.html
|
||||||
|
const settings = c.gtk_settings_get_default();
|
||||||
|
|
||||||
|
var value: c.GValue = std.mem.zeroes(c.GValue);
|
||||||
|
defer c.g_value_unset(&value);
|
||||||
|
_ = c.g_value_init(&value, c.G_TYPE_INT);
|
||||||
|
c.g_object_get_property(@ptrCast(@alignCast(settings)), "gtk-xft-dpi", &value);
|
||||||
|
const gtk_xft_dpi = c.g_value_get_int(&value);
|
||||||
|
|
||||||
|
// As noted above Xft.dpi is multiplied by 1024, so we divide by 1024,
|
||||||
|
// then divide by the default value of Xft.dpi (96) to derive a scale
|
||||||
|
const xft_dpi: f32 = @floatFromInt(@divExact(gtk_xft_dpi, 1024));
|
||||||
|
break :xft_scale xft_dpi / 96;
|
||||||
|
};
|
||||||
|
|
||||||
const scale = gtk_scale * xft_dpi_scale;
|
const scale = gtk_scale * xft_dpi_scale;
|
||||||
|
|
||||||
return .{ .x = scale, .y = scale };
|
return .{ .x = scale, .y = scale };
|
||||||
}
|
}
|
||||||
|
|
||||||
fn getXftDpiScale() f32 {
|
|
||||||
// Here we use GTK to retrieve gtk-xft-dpi, which is Xft.dpi multiplied by 1024
|
|
||||||
// See https://docs.gtk.org/gtk4/property.Settings.gtk-xft-dpi.html
|
|
||||||
const settings = c.gtk_settings_get_default();
|
|
||||||
|
|
||||||
var value: c.GValue = std.mem.zeroes(c.GValue);
|
|
||||||
defer c.g_value_unset(&value);
|
|
||||||
_ = c.g_value_init(&value, c.G_TYPE_INT);
|
|
||||||
|
|
||||||
c.g_object_get_property(@ptrCast(@alignCast(settings)), "gtk-xft-dpi", &value);
|
|
||||||
const gtk_xft_dpi = c.g_value_get_int(&value);
|
|
||||||
|
|
||||||
// Scale the value back to obtain Xft.dpi
|
|
||||||
const xft_dpi = @divExact(gtk_xft_dpi, 1024);
|
|
||||||
|
|
||||||
// Divide by the default value of Xft.dpi (96) to derive a scale
|
|
||||||
return @as(f32, @floatFromInt(xft_dpi)) / 96.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn getSize(self: *const Surface) !apprt.SurfaceSize {
|
pub fn getSize(self: *const Surface) !apprt.SurfaceSize {
|
||||||
return self.size;
|
return self.size;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user