diff --git a/docs/changelog.rst b/docs/changelog.rst index 5961a1192..905f234bb 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -69,6 +69,9 @@ Detailed list of changes - hints kitten: Allow copying matches to named buffers (:disc:`6073`) +- Fix overlay windows not inheriting the per-window padding and margin settings + of their parents (:iss:`6063`) + 0.27.1 [2023-02-07] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kitty/layout/base.py b/kitty/layout/base.py index 39ba3922d..bc2ddc72b 100644 --- a/kitty/layout/base.py +++ b/kitty/layout/base.py @@ -282,9 +282,12 @@ class Layout: self, all_windows: WindowList, window: WindowType, location: Optional[str] = None, overlay_for: Optional[int] = None, put_overlay_behind: bool = False ) -> None: - if overlay_for is not None and overlay_for in all_windows: - all_windows.add_window(window, group_of=overlay_for, head_of_group=put_overlay_behind) - return + if overlay_for is not None: + underlay = all_windows.id_map.get(overlay_for) + if underlay is not None: + window.margin, window.padding = underlay.margin.copy(), underlay.padding.copy() + all_windows.add_window(window, group_of=overlay_for, head_of_group=put_overlay_behind) + return if location == 'neighbor': location = 'after' self.add_non_overlay_window(all_windows, window, location) diff --git a/kitty/window.py b/kitty/window.py index 0fd85a42e..a3040fccf 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -508,6 +508,9 @@ class EdgeWidths: def serialize(self) -> Dict[str, Optional[float]]: return {'left': self.left, 'right': self.right, 'top': self.top, 'bottom': self.bottom} + def copy(self) -> 'EdgeWidths': + return EdgeWidths(self.serialize()) + class GlobalWatchers: