From df0643b1a447446eec8a592f3534da3f57402114 Mon Sep 17 00:00:00 2001 From: Vulcalien Date: Sat, 27 Aug 2022 22:06:00 +0200 Subject: [PATCH] Notebook rotate: keep tab position and label --- terminatorlib/paned.py | 4 ++-- terminatorlib/window.py | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/terminatorlib/paned.py b/terminatorlib/paned.py index bf944160..86ca3cd2 100644 --- a/terminatorlib/paned.py +++ b/terminatorlib/paned.py @@ -424,7 +424,7 @@ class Paned(Container): """We don't want focus, we want a Terminal to have it""" self.get_child1().grab_focus() - def rotate_recursive(self, parent, w, h, clockwise): + def rotate_recursive(self, parent, w, h, clockwise, metadata=None): """ Recursively rotate "self" into a new paned that'll have "w" x "h" size. Attach it to "parent". @@ -458,7 +458,7 @@ class Paned(Container): w2 = max(w - w1 - handle_size, 0) container.set_pos(pos) - parent.add(container) + parent.add(container, metadata=metadata) if maker.isinstance(children[0], 'Terminal'): children[0].get_parent().remove(children[0]) diff --git a/terminatorlib/window.py b/terminatorlib/window.py index f4830aaf..eadb0aba 100644 --- a/terminatorlib/window.py +++ b/terminatorlib/window.py @@ -597,8 +597,17 @@ class Window(Container, Gtk.Window): # If our child is a Notebook, reset to work from its visible child if maker.isinstance(child, 'Notebook'): - pagenum = child.get_current_page() - child = child.get_nth_page(pagenum) + notebook = child + + pagenum = notebook.get_current_page() + child = notebook.get_nth_page(pagenum) + + metadata = { + 'tabnum': pagenum, + 'label': notebook.get_tab_label(child).get_label() + } + else: + metadata = None if maker.isinstance(child, 'Paned'): parent = child.get_parent() @@ -606,7 +615,7 @@ class Window(Container, Gtk.Window): # otherwise _sometimes_ we get incorrect values. alloc = child.get_allocation() parent.remove(child) - child.rotate_recursive(parent, alloc.width, alloc.height, clockwise) + child.rotate_recursive(parent, alloc.width, alloc.height, clockwise, metadata) self.show_all() while Gtk.events_pending():