summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2011-02-13 22:28:35 +0100
committerFlorent Le Coz <louiz@louiz.org>2011-02-13 22:28:35 +0100
commitac99467965ba04282b6dbc63c5c04ab91ba1b007 (patch)
tree306bf55c98f4ad80ca014f47be453f1a67fca38a
parent6ed087a65c1e7fdc020f11b5247a8feeac7b3517 (diff)
downloadpoezio-ac99467965ba04282b6dbc63c5c04ab91ba1b007.tar.gz
poezio-ac99467965ba04282b6dbc63c5c04ab91ba1b007.tar.bz2
poezio-ac99467965ba04282b6dbc63c5c04ab91ba1b007.tar.xz
poezio-ac99467965ba04282b6dbc63c5c04ab91ba1b007.zip
Make the tab collectable by remove self references when closing
them.
-rw-r--r--src/core.py2
-rw-r--r--src/room.py1
-rw-r--r--src/tabs.py3
-rw-r--r--src/text_buffer.py7
-rw-r--r--src/windows.py4
5 files changed, 15 insertions, 2 deletions
diff --git a/src/core.py b/src/core.py
index 41ec12f2..98d2a7fa 100644
--- a/src/core.py
+++ b/src/core.py
@@ -1303,6 +1303,8 @@ class Core(object):
tab.on_close()
self.tabs.remove(tab)
self.rotate_rooms_left()
+ del tab.key_func # Remove self references
+ del tab.commands # and make the object collectable
del tab
def move_separator(self):
diff --git a/src/room.py b/src/room.py
index 9bb9f721..29986142 100644
--- a/src/room.py
+++ b/src/room.py
@@ -123,4 +123,3 @@ class Room(TextBuffer):
nb = window.build_new_message(message)
if window.pos != 0:
window.scroll_up(nb)
-
diff --git a/src/tabs.py b/src/tabs.py
index ecb53ab9..3c91fc14 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -210,6 +210,9 @@ class Tab(object):
"""
pass
+ def __del__(self):
+ log.debug('Closing tab %s' % self.__class__.__name__)
+
class ChatTab(Tab):
"""
A tab containing a chat of any type.
diff --git a/src/text_buffer.py b/src/text_buffer.py
index 828b344c..9285a433 100644
--- a/src/text_buffer.py
+++ b/src/text_buffer.py
@@ -36,7 +36,7 @@ class TextBuffer(object):
self.messages = [] # Message objects
self.windows = [] # we keep track of one or more windows
# so we can pass the new messages to them, as they are added, so
- # they (the windows) can built the lines from the new message
+ # they (the windows) can build the lines from the new message
def add_window(self, win):
self.windows.append(win)
@@ -55,3 +55,8 @@ class TextBuffer(object):
if window.pos != 0:
window.scroll_up(nb)
+ def del_window(self, win):
+ self.windows.remove(win)
+
+ def __del__(self):
+ log.debug('** Deleting %s messages from textbuffer' % (len(self.messages)))
diff --git a/src/windows.py b/src/windows.py
index dfb75006..c46b60e3 100644
--- a/src/windows.py
+++ b/src/windows.py
@@ -637,6 +637,10 @@ class TextWin(Win):
for message in room.messages:
self.build_new_message(message)
+ def __del__(self):
+ log.debug('** TextWin: deleting %s built lines' % (len(self.built_lines)))
+ del self.built_lines
+
class HelpText(Win):
"""
A Window just displaying a read-only message.