From 40f0df9d321a25abc163bfc7569ba9d8c12939f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 1 Sep 2008 11:37:33 +0200 Subject: [PATCH] Improve tab history for issue297 --- tryton/gui/main.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tryton/gui/main.py b/tryton/gui/main.py index 0ddcab6702..3fcb4cd5eb 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -66,6 +66,7 @@ class Main(object): self.notebook.show() self.pages = [] + self.previous_pages = {} self.current_page = 0 self.last_page = 0 @@ -525,6 +526,9 @@ class Main(object): return True def win_add(self, page): + previous_page_id = self.notebook.get_current_page() + previous_widget = self.notebook.get_nth_page(previous_page_id) + self.previous_pages[page] = previous_widget self.pages.append(page) hbox = gtk.HBox() name = page.name @@ -612,9 +616,25 @@ class Main(object): self.notebook.remove_page(page_id) self.sb_set() + next_page_id = -1 + to_pop = [] + for i in self.previous_pages: + if self.previous_pages[i] == page_widget: + to_pop.append(i) + if i.widget == page_widget: + if self.previous_pages[i]: + next_page_id = self.notebook.page_num( + self.previous_pages[i]) + to_pop.append(i) + to_pop.reverse() + for i in to_pop: + self.previous_pages.pop(i) + if hasattr(page, 'destroy'): page.destroy() del page + + self.notebook.set_current_page(next_page_id) return self.notebook.get_current_page() != -1 def _wid_get(self):