Index: tools/manager.py =================================================================== RCS file: /cvs/gnome/gedit/plugins/externaltools/tools/manager.py,v retrieving revision 1.2 diff -u -p -r1.2 manager.py --- tools/manager.py 21 Jan 2006 16:40:09 -0000 1.2 +++ tools/manager.py 7 Feb 2006 22:32:49 -0000 @@ -100,7 +100,7 @@ class Manager: for item in self.tools: self.model.append([item.get('label'), item]) - self.model.connect('row-changed', self.on_tools_model_row_changed) + self.row_changed_id = self.model.connect('row-changed', self.on_tools_model_row_changed) def __init_tools_view(self): # Tools column @@ -112,7 +112,7 @@ class Manager: self.view.append_column(column) renderer.connect('edited', self.on_view_label_cell_edited) - self.view.get_selection().connect('changed', self.on_view_selection_changed, None) + self.selection_changed_id = self.view.get_selection().connect('changed', self.on_view_selection_changed, None) def __init_combobox(self, name): combo = self[name] @@ -181,19 +181,26 @@ class Manager: Manager.combobox_items['applicability'][0][0])) self['title'].set_label(_('Edit tool %s:') % node.get('label')) - def on_new_tool_button_clicked(self, button): self.save_current_tool() + + # block handlers while inserting a new item + self.model.handler_block(self.row_changed_id) + self.view.get_selection().handler_block(self.selection_changed_id) + self.current_node = et.Element('tool'); self.current_node.set('label', _('New tool')) self.tools.root.append(self.current_node) piter = self.model.append([self.current_node.get('label'), self.current_node]) - self.view.set_cursor(self.model.get_path(piter), + self.view.set_cursor(self.model.get_path(piter), self.view.get_column(self.LABEL_COLUMN), True) self.fill_fields() - + + self.view.get_selection().handler_unblock(self.selection_changed_id) + self.model.handler_unblock(self.row_changed_id) + def on_remove_tool_button_clicked(self, button): piter, node = self.get_selected_tool() self.tools.root.remove(node)