mirror of
https://github.com/wez/wezterm.git
synced 2024-11-23 23:21:08 +03:00
gui: try harder to deal with tiling wm resizing + dpi changes
refs: #695
This commit is contained in:
parent
5a9bd14d89
commit
9617c742cf
@ -311,19 +311,6 @@ impl TermWindow {
|
|||||||
config::wezterm_version(),
|
config::wezterm_version(),
|
||||||
);
|
);
|
||||||
self.render_state.replace(gl);
|
self.render_state.replace(gl);
|
||||||
/*
|
|
||||||
// Update dimensions: the goal here is to factor in the dpi and font
|
|
||||||
// size adjusted GUI window dimensions and apply those to the dimensions
|
|
||||||
// of the pty in the Mux layer.
|
|
||||||
let dims = self.dimensions.clone();
|
|
||||||
self.apply_dimensions(
|
|
||||||
&dims,
|
|
||||||
Some(resize::RowsAndCols {
|
|
||||||
rows: self.terminal_size.rows as _,
|
|
||||||
cols: self.terminal_size.cols as _,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
log::error!("failed to create OpenGLRenderState: {}", err);
|
log::error!("failed to create OpenGLRenderState: {}", err);
|
||||||
|
@ -205,8 +205,21 @@ impl super::TermWindow {
|
|||||||
|
|
||||||
#[allow(clippy::float_cmp)]
|
#[allow(clippy::float_cmp)]
|
||||||
pub fn scaling_changed(&mut self, dimensions: Dimensions, font_scale: f64, window: &Window) {
|
pub fn scaling_changed(&mut self, dimensions: Dimensions, font_scale: f64, window: &Window) {
|
||||||
let scale_changed =
|
fn dpi_adjusted(n: usize, dpi: usize) -> f32 {
|
||||||
dimensions.dpi != self.dimensions.dpi || font_scale != self.fonts.get_font_scale();
|
n as f32 / dpi as f32
|
||||||
|
}
|
||||||
|
|
||||||
|
// Distinguish between eg: dpi being detected as double the initial dpi (where
|
||||||
|
// the pixel dimensions don't change), and the dpi change being detected, but
|
||||||
|
// where the window manager also decides to tile/resize the window.
|
||||||
|
// In the latter case, we don't want to preserve the terminal rows/cols.
|
||||||
|
let simple_dpi_change = dimensions.dpi != self.dimensions.dpi
|
||||||
|
&& dpi_adjusted(dimensions.pixel_height, dimensions.dpi)
|
||||||
|
== dpi_adjusted(self.dimensions.pixel_height, self.dimensions.dpi)
|
||||||
|
&& dpi_adjusted(dimensions.pixel_width, dimensions.dpi)
|
||||||
|
== dpi_adjusted(self.dimensions.pixel_width, self.dimensions.dpi);
|
||||||
|
|
||||||
|
let scale_changed = simple_dpi_change || font_scale != self.fonts.get_font_scale();
|
||||||
|
|
||||||
let scale_changed_cells = if scale_changed {
|
let scale_changed_cells = if scale_changed {
|
||||||
let cell_dims = self.current_cell_dimensions();
|
let cell_dims = self.current_cell_dimensions();
|
||||||
|
Loading…
Reference in New Issue
Block a user