1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-25 14:05:41 -05:00

Fix specifying 0 lines/columns in config file

The logic during the initial spawning of the window was a bit twisted
up. This has been resolved and it should all work properly now, even
without a resize event at startup.

This fixes #1781.
This commit is contained in:
Christian Duerr 2018-11-13 06:32:40 +00:00 committed by GitHub
parent d05d16f023
commit a68ce7a0e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -152,28 +152,34 @@ impl Display {
let dimensions = options.dimensions()
.unwrap_or_else(|| config.dimensions());
debug_assert!(dimensions.columns_u32() > 0);
debug_assert!(dimensions.lines_u32() > 0);
let width = cell_width as u32 * dimensions.columns_u32();
let height = cell_height as u32 * dimensions.lines_u32();
let mut padding_x = f64::from(config.padding().x) * dpr;
let mut padding_y = f64::from(config.padding().y) * dpr;
padding_x = padding_x + (f64::from(width) - 2. * padding_x) % f64::from(cell_width) / 2.;
padding_y = padding_y + (f64::from(height) - 2. * padding_y) % f64::from(cell_height) / 2.;
padding_x = padding_x.floor();
padding_y = padding_y.floor();
viewport_size = PhysicalSize::new(
f64::from(width) + 2. * padding_x,
f64::from(height) + 2. * padding_y,
);
if dimensions.columns_u32() > 0 && dimensions.lines_u32() > 0 {
// Calculate new size based on cols/lines specified in config
let width = cell_width as u32 * dimensions.columns_u32();
let height = cell_height as u32 * dimensions.lines_u32();
padding_x = padding_x.floor();
padding_y = padding_y.floor();
viewport_size = PhysicalSize::new(
f64::from(width) + 2. * padding_x,
f64::from(height) + 2. * padding_y,
);
} else {
// Make sure additional padding is spread evenly
let cw = f64::from(cell_width);
let ch = f64::from(cell_height);
padding_x = (padding_x + (viewport_size.width - 2. * padding_x) % cw / 2.).floor();
padding_y = (padding_y + (viewport_size.height - 2. * padding_y) % ch / 2.).floor();
}
window.set_inner_size(viewport_size.to_logical(dpr));
renderer.resize(viewport_size, padding_x as f32, padding_y as f32);
info!("Cell Size: ({} x {})", cell_width, cell_height);
info!("Padding: ({} x {})", padding_x, padding_y);
let size_info = SizeInfo {
dpr,