Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 237b41f

Browse files
committed
Fixed all Gtk memory leaks exercised by D2Hitman's recent thread.
svn path=/trunk/matplotlib/; revision=6411
1 parent 07f8eeb commit 237b41f

1 file changed

Lines changed: 22 additions & 28 deletions

File tree

lib/matplotlib/backends/backend_gtk.py

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -538,16 +538,6 @@ def __init__(self, canvas, window):
538538
NavigationToolbar2.__init__(self, canvas)
539539
self._idle_draw_id = 0
540540

541-
self.connect("destroy", self.destroy)
542-
543-
def destroy(self, *args):
544-
gtk.Toolbar.destroy(self)
545-
self.fileselect.destroy()
546-
self.tooltips.destroy()
547-
self.canvas.destroy()
548-
if self._idle_draw_id != 0:
549-
gobject.remove_source(self._idle_draw_id)
550-
551541
def set_message(self, s):
552542
if self._idle_draw_id == 0:
553543
self.message.set_label(s)
@@ -635,11 +625,6 @@ def _init_toolbar2_2(self):
635625
self.append_widget(self.message, None, None)
636626
self.message.show()
637627

638-
self.fileselect = FileSelection(title='Save the figure',
639-
parent=self.win,)
640-
641-
642-
643628
def _init_toolbar2_4(self):
644629
basedir = os.path.join(matplotlib.rcParams['datapath'],'images')
645630
self.tooltips = gtk.Tooltips()
@@ -670,15 +655,19 @@ def _init_toolbar2_4(self):
670655

671656
self.show_all()
672657

673-
self.fileselect = FileChooserDialog(
674-
title='Save the figure',
675-
parent=self.win,
676-
filetypes=self.canvas.get_supported_filetypes(),
677-
default_filetype=self.canvas.get_default_filetype())
678-
658+
def get_filechooser(self):
659+
if gtk.pygtk_version >= (2,4,0):
660+
return FileChooserDialog(
661+
title='Save the figure',
662+
parent=self.win,
663+
filetypes=self.canvas.get_supported_filetypes(),
664+
default_filetype=self.canvas.get_default_filetype())
665+
else:
666+
return FileSelection(title='Save the figure',
667+
parent=self.win,)
679668

680669
def save_figure(self, button):
681-
fname, format = self.fileselect.get_filename_from_user()
670+
fname, format = self.get_filechooser().get_filename_from_user()
682671
if fname:
683672
try:
684673
self.canvas.print_figure(fname, format=format)
@@ -781,11 +770,6 @@ def __init__(self, canvas, window):
781770
self.show_all()
782771
self.update()
783772

784-
def destroy(*args):
785-
self.fileselect.destroy()
786-
del self.fileselect
787-
self.connect("destroy", destroy)
788-
789773
def _create_toolitems_2_4(self):
790774
# use the GTK+ 2.4 GtkToolbar API
791775
iconSize = gtk.ICON_SIZE_SMALL_TOOLBAR
@@ -970,9 +954,19 @@ def zoomy(self, button, direction):
970954
self.canvas.draw()
971955
return True
972956

957+
def get_filechooser(self):
958+
if gtk.pygtk_version >= (2,4,0):
959+
return FileChooserDialog(
960+
title='Save the figure',
961+
parent=self.win,
962+
filetypes=self.canvas.get_supported_filetypes(),
963+
default_filetype=self.canvas.get_default_filetype())
964+
else:
965+
return FileSelection(title='Save the figure',
966+
parent=self.win)
973967

974968
def save_figure(self, button):
975-
fname, format = self.fileselect.get_filename_from_user()
969+
fname, format = self.get_filechooser().get_filename_from_user()
976970
if fname:
977971
try:
978972
self.canvas.print_figure(fname, format=format)

0 commit comments

Comments
 (0)