@@ -329,24 +329,32 @@ def do_activate(self):
329329 self ._sourcetree .show_line_numbers = self .show_line_numbers
330330 self ._sourcetree .expand_rows = self .expand_rows
331331 self ._sourcetree .sort_list = self .sort_list
332-
333332 panel = self .window .get_side_panel ()
334333 panel .add_item (self ._sourcetree , "SymbolBrowserPlugin" , "Source Code" , self .icon )
335- self ._sourcetree .connect ("focus" , self .on_sourcetree_focus )
336-
334+ self ._handlers = []
335+ hid = self ._sourcetree .connect ("focus" , self .on_sourcetree_focus )
336+ self ._handlers .append ((self ._sourcetree , hid ))
337337 if self .ctags_version is not None :
338- self ._sourcetree .connect ('tag-activated' , self .on_tag_activated )
339- self .window .connect ("active-tab-state-changed" , self .on_tab_state_changed )
340- self .window .connect ("active-tab-changed" , self .on_active_tab_changed )
341- self .window .connect ("tab-removed" , self .on_tab_removed )
338+ hid = self ._sourcetree .connect ('tag-activated' , self .on_tag_activated )
339+ self ._handlers .append ((self ._sourcetree , hid ))
340+ hid = self .window .connect ("active-tab-state-changed" , self .on_tab_state_changed )
341+ self ._handlers .append ((self .window , hid ))
342+ hid = self .window .connect ("active-tab-changed" , self .on_active_tab_changed )
343+ self ._handlers .append ((self .window , hid ))
344+ hid = self .window .connect ("tab-removed" , self .on_tab_removed )
345+ self ._handlers .append ((self .window , hid ))
342346 else :
343347 self ._sourcetree .set_sensitive (False )
344348
345349 def do_deactivate (self ):
346350 """ Deactivate the plugin """
347351 self ._log .debug ("Deactivating plugin" )
352+ for obj , hid in self ._handlers :
353+ obj .disconnect (hid )
354+ self ._handlers = None
348355 pane = self .window .get_side_panel ()
349356 pane .remove_item (self ._sourcetree )
357+ self ._sourcetree = None
350358
351359 def _has_settings_schema (self ):
352360 schemas = Gio .Settings .list_schemas ()
0 commit comments