Make creation of window_id_map generic

This commit is contained in:
Kovid Goyal 2025-08-04 16:27:21 +05:30
parent 16e659c477
commit bdf3b9300e
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C

View file

@ -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