Teach Notebook how to hoover itself since it might be called during drag&drop, and refactor its suicide detection into that function
This commit is contained in:
parent
4ed18d8a63
commit
36631b20e4
|
@ -134,17 +134,7 @@ class Notebook(Container, gtk.Notebook):
|
||||||
dbg('Notebook::wrapcloseterm: called on %s' % widget)
|
dbg('Notebook::wrapcloseterm: called on %s' % widget)
|
||||||
if self.closeterm(widget):
|
if self.closeterm(widget):
|
||||||
dbg('Notebook::wrapcloseterm: closeterm succeeded')
|
dbg('Notebook::wrapcloseterm: closeterm succeeded')
|
||||||
if self.get_n_pages() == 1:
|
self.hoover()
|
||||||
dbg('Notebook::wrapcloseterm: last page, removing self')
|
|
||||||
child = self.get_nth_page(0)
|
|
||||||
self.remove_page(0)
|
|
||||||
parent = self.get_parent()
|
|
||||||
parent.remove(self)
|
|
||||||
parent.add(child)
|
|
||||||
del(self)
|
|
||||||
else:
|
|
||||||
dbg('Notebook::wrapcloseterm: %d pages remain' %
|
|
||||||
self.get_n_pages())
|
|
||||||
else:
|
else:
|
||||||
dbg('Notebook::wrapcloseterm: closeterm failed')
|
dbg('Notebook::wrapcloseterm: closeterm failed')
|
||||||
|
|
||||||
|
@ -249,6 +239,25 @@ class Notebook(Container, gtk.Notebook):
|
||||||
|
|
||||||
label.set_label(text)
|
label.set_label(text)
|
||||||
|
|
||||||
|
def hoover(self):
|
||||||
|
"""Clean up any empty tabs and if we only have one tab left, die"""
|
||||||
|
numpages = self.get_n_pages()
|
||||||
|
while numpages > 0:
|
||||||
|
numpages = numpages - 1
|
||||||
|
page = self.get_nth_page(numpages)
|
||||||
|
if not page:
|
||||||
|
dbg('Removing empty page: %d' % numpages)
|
||||||
|
self.remove_page(numpages)
|
||||||
|
|
||||||
|
if self.get_n_pages() == 1:
|
||||||
|
dbg('Last page, removing self')
|
||||||
|
child = self.get_nth_page(0)
|
||||||
|
self.remove_page(0)
|
||||||
|
parent = self.get_parent()
|
||||||
|
parent.remove(self)
|
||||||
|
parent.add(child)
|
||||||
|
del(self)
|
||||||
|
|
||||||
class TabLabel(gtk.HBox):
|
class TabLabel(gtk.HBox):
|
||||||
"""Class implementing a label widget for Notebook tabs"""
|
"""Class implementing a label widget for Notebook tabs"""
|
||||||
notebook = None
|
notebook = None
|
||||||
|
|
Loading…
Reference in New Issue