Merge branch 'copilot/fix-issue-10146' of https://github.com/kovidgoyal/kitty
Fixes #10146
This commit is contained in:
commit
6202fb7847
2 changed files with 16 additions and 1 deletions
|
|
@ -181,6 +181,8 @@ Detailed list of changes
|
|||
0.47.4 [2026-06-15]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Wayland: Fix first OS window being a few cells too small when :opt:`initial_window_width`/:opt:`initial_window_height` are set in cells and a fractional display scale is in use (:iss:`10146`)
|
||||
|
||||
- Linux: Fix a regression in the previous release that broke rendering of bitmap color fonts (:pull:`10145`)
|
||||
|
||||
- Linux: Allow fake italics defined via a matrix in fontconfig settings to work for fonts like Fira Code that do not ship with an italic face (:pull:`10120`)
|
||||
|
|
|
|||
15
kitty/glfw.c
15
kitty/glfw.c
|
|
@ -1850,8 +1850,21 @@ create_os_window(PyObject UNUSED *self, PyObject *args, PyObject *kw) {
|
|||
// this can happen if the window is moved by the OS to a different monitor when shown or with fractional scales on Wayland
|
||||
// it can also happen with layer shell windows if the callback is
|
||||
// called before the window is fully created
|
||||
xdpi = n_xdpi; ydpi = n_ydpi;
|
||||
xdpi = n_xdpi; ydpi = n_ydpi; xscale = n_xscale; yscale = n_yscale;
|
||||
fonts_data = load_fonts_data(OPT(font_size), xdpi, ydpi);
|
||||
// Re-compute the window size with the updated scale/font metrics. This matters when
|
||||
// the initial size is specified in cells: the first window on Wayland is created with
|
||||
// scale=1 because fractional scale is only sent by the compositor after the surface
|
||||
// exists, so the cell dimensions used for the initial size calculation were wrong.
|
||||
PyObject *new_size = PyObject_CallFunction(get_window_size, "IIddff", fonts_data->fcm.cell_width, fonts_data->fcm.cell_height, fonts_data->logical_dpi_x, fonts_data->logical_dpi_y, xscale, yscale);
|
||||
if (new_size != NULL) {
|
||||
int new_width = PyLong_AsLong(PyTuple_GET_ITEM(new_size, 0)), new_height = PyLong_AsLong(PyTuple_GET_ITEM(new_size, 1));
|
||||
Py_DECREF(new_size);
|
||||
if (!PyErr_Occurred() && (new_width != width || new_height != height)) {
|
||||
glfwSetWindowSize(glfw_window, new_width, new_height);
|
||||
width = new_width; height = new_height;
|
||||
} else PyErr_Clear();
|
||||
} else PyErr_Clear();
|
||||
}
|
||||
}
|
||||
if (is_first_window) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue