From bdf3b9300e172ff4b3cb499a2fb9a959d3856a5a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 4 Aug 2025 16:27:21 +0530 Subject: [PATCH] Make creation of window_id_map generic --- kitty/layout/base.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/kitty/layout/base.py b/kitty/layout/base.py index ed4b65562..4e4f8e92c 100644 --- a/kitty/layout/base.py +++ b/kitty/layout/base.py @@ -4,7 +4,7 @@ from collections.abc import Generator, Iterable, Iterator, Sequence from functools import partial from itertools import repeat -from typing import Any, NamedTuple +from typing import Any, Callable, NamedTuple from kitty.borders import BorderColor from kitty.constants import serialize_user_var_name @@ -216,6 +216,18 @@ def distribute_indexed_bias(base_bias: Sequence[float], index_bias_map: dict[int return normalize_biases(ans) +def create_window_id_map_for_unserialize(all_windows: WindowList, serialize_user_var_name: str = serialize_user_var_name) -> dict[int, int]: + window_id_map = {} + for w in all_windows: + k = w.user_vars.pop(serialize_user_var_name, None) + if k is not None: + try: + window_id_map[int(k)] = w.id + except Exception: + pass + return window_id_map + + class Layout: name: str = '' @@ -450,18 +462,11 @@ class Layout: def unserialize( self, s: dict[str, Any], all_windows: WindowList, - serialize_user_var_name: str = serialize_user_var_name + window_id_mapper: Callable[[WindowList], dict[int, int]] = create_window_id_map_for_unserialize, ) -> bool: if s.get('class') != self.__class__.__name__: return False - window_id_map = {} - for w in all_windows: - k = w.user_vars.pop(serialize_user_var_name, None) - if k is not None: - try: - window_id_map[int(k)] = w.id - except Exception: - pass + window_id_map = create_window_id_map_for_unserialize(all_windows) m = all_windows.unserialize_layout_state(s['all_windows'], window_id_map) if m is None: return False