mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-28 19:21:38 +02:00
DRYer
This commit is contained in:
@@ -3079,10 +3079,7 @@ class Boss:
|
|||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
overlay_for = 0
|
target_tab.attach_windows(src_tab.detach_window(window))
|
||||||
for detached_window in src_tab.detach_window(window):
|
|
||||||
target_tab.attach_window(detached_window, overlay_for=overlay_for)
|
|
||||||
overlay_for = detached_window.id
|
|
||||||
self._cleanup_tab_after_window_removal(src_tab)
|
self._cleanup_tab_after_window_removal(src_tab)
|
||||||
target_tab.make_active()
|
target_tab.make_active()
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ from collections import deque
|
|||||||
from collections.abc import Callable, Generator, Iterable, Iterator, Sequence
|
from collections.abc import Callable, Generator, Iterable, Iterator, Sequence
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
from operator import attrgetter
|
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
Deque,
|
Deque,
|
||||||
@@ -733,12 +732,16 @@ class Tab: # {{{
|
|||||||
prev = x
|
prev = x
|
||||||
return prev
|
return prev
|
||||||
|
|
||||||
def remove_window(self, window: Window, destroy: bool = True) -> None:
|
def remove_window(self, window: Window, destroy: bool = True, do_post_removal_update: bool = True) -> None:
|
||||||
self.windows.remove_window(window)
|
self.windows.remove_window(window)
|
||||||
if destroy:
|
if destroy:
|
||||||
remove_window(self.os_window_id, self.id, window.id)
|
remove_window(self.os_window_id, self.id, window.id)
|
||||||
else:
|
else:
|
||||||
detach_window(self.os_window_id, self.id, window.id)
|
detach_window(self.os_window_id, self.id, window.id)
|
||||||
|
if do_post_removal_update:
|
||||||
|
self.post_window_removal_update()
|
||||||
|
|
||||||
|
def post_window_removal_update(self) -> None:
|
||||||
self.mark_tab_bar_dirty()
|
self.mark_tab_bar_dirty()
|
||||||
self.relayout()
|
self.relayout()
|
||||||
active_window = self.active_window
|
active_window = self.active_window
|
||||||
@@ -747,16 +750,22 @@ class Tab: # {{{
|
|||||||
|
|
||||||
def detach_window(self, window: Window) -> tuple[Window, ...]:
|
def detach_window(self, window: Window) -> tuple[Window, ...]:
|
||||||
windows = list(self.windows.windows_in_group_of(window))
|
windows = list(self.windows.windows_in_group_of(window))
|
||||||
windows.sort(key=attrgetter('id')) # since ids increase in order of creation
|
|
||||||
for w in reversed(windows):
|
for w in reversed(windows):
|
||||||
self.remove_window(w, destroy=False)
|
self.remove_window(w, destroy=False, do_post_removal_update=False)
|
||||||
|
self.post_window_removal_update()
|
||||||
return tuple(windows)
|
return tuple(windows)
|
||||||
|
|
||||||
def attach_window(self, window: Window, overlay_for: int = 0) -> None:
|
def attach_window(self, window: Window, overlay_for: int | None = None) -> None:
|
||||||
window.change_tab(self)
|
window.change_tab(self)
|
||||||
attach_window(self.os_window_id, self.id, window.id)
|
attach_window(self.os_window_id, self.id, window.id)
|
||||||
self._add_window(window, overlay_for=overlay_for)
|
self._add_window(window, overlay_for=overlay_for)
|
||||||
|
|
||||||
|
def attach_windows(self, windows: Iterable[Window]) -> None:
|
||||||
|
overlay_for: int | None = None
|
||||||
|
for window in windows:
|
||||||
|
self.attach_window(window, overlay_for)
|
||||||
|
overlay_for = window.id
|
||||||
|
|
||||||
def set_active_window(self, x: Window | int, for_keep_focus: Window | None = None) -> None:
|
def set_active_window(self, x: Window | int, for_keep_focus: Window | None = None) -> None:
|
||||||
self.windows.set_active_window_group_for(x, for_keep_focus=for_keep_focus)
|
self.windows.set_active_window_group_for(x, for_keep_focus=for_keep_focus)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user