From 0a751263c18ef17b65c704792d896362dec5cc6b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 20 Jul 2026 19:58:00 +0530 Subject: [PATCH] Revert 946867b as it breaks window sizing on some compositors Fixes #10268 --- docs/changelog.rst | 5 +++++ kitty/glfw.c | 15 +-------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 03859e755..fa34d0b3b 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -179,6 +179,11 @@ consumption to do the same tasks. Detailed list of changes ------------------------------------- +0.48.1 [future] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Wayland: fix a regression in the previous release that broke window sizing on Hyprland with fractional scales and an initial specified size (:iss:`10268`) + 0.48.0 [2026-07-18] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kitty/glfw.c b/kitty/glfw.c index fe8a8be68..77c054ecb 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -1888,21 +1888,8 @@ 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; xscale = n_xscale; yscale = n_yscale; + xdpi = n_xdpi; ydpi = n_ydpi; 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) {