From bf804f18d4e0cccc109c19f2156ee32a861b987e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Mon, 8 Apr 2019 22:43:09 +0200 Subject: [PATCH] Fix memory leak with spell checker - Dont shadow widgets destroy() - Dont bind spell checker to class attribute, this prevents its finalize Fixes #8822 --- gajim/chat_control_base.py | 7 +++---- gajim/message_textview.py | 5 ----- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/gajim/chat_control_base.py b/gajim/chat_control_base.py index 7ad093c46..2fa6cf210 100644 --- a/gajim/chat_control_base.py +++ b/gajim/chat_control_base.py @@ -323,7 +323,6 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): self.set_emoticon_popover() # Attach speller - self.spell_checker = None self.set_speller() self.conv_textview.tv.show() @@ -474,15 +473,15 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): if gspell_lang is None: return - self.spell_checker = Gspell.Checker.new(gspell_lang) + spell_checker = Gspell.Checker.new(gspell_lang) spell_buffer = Gspell.TextBuffer.get_from_gtk_text_buffer( self.msg_textview.get_buffer()) - spell_buffer.set_spell_checker(self.spell_checker) + spell_buffer.set_spell_checker(spell_checker) spell_view = Gspell.TextView.get_from_gtk_text_view(self.msg_textview) spell_view.set_inline_spell_checking(False) spell_view.set_enable_language_menu(True) - self.spell_checker.connect('notify::language', self.on_language_changed) + spell_checker.connect('notify::language', self.on_language_changed) def get_speller_language(self): per_type = 'contacts' diff --git a/gajim/message_textview.py b/gajim/message_textview.py index 3433f5f8e..1f5e3b54f 100644 --- a/gajim/message_textview.py +++ b/gajim/message_textview.py @@ -17,8 +17,6 @@ # You should have received a copy of the GNU General Public License # along with Gajim. If not, see . -import gc - from gi.repository import Gtk from gi.repository import GLib from gi.repository import GObject @@ -408,9 +406,6 @@ class MessageTextView(Gtk.TextView): self.add_child_at_anchor(image, anchor) buffer_.insert_at_cursor(' ') - def destroy(self): - GLib.idle_add(gc.collect) - def clear(self, widget=None): """ Clear text in the textview