Index: scripts/trac-admin
===================================================================
--- scripts/trac-admin	(revision 1014)
+++ scripts/trac-admin	(working copy)
@@ -349,6 +349,9 @@
         self.db_execsql("UPDATE ticket SET component='%s' WHERE component='%s'"
                         % (newname,name), cursor)
         cnx.commit()
+        if self.__env.get_config('ticket', 'default_component') == name:
+            self.__env.set_config('ticket', 'default_component', newname)
+            self.__env.save_config()
 
     def _do_component_remove(self, name):
         cnx = self.db_open()
@@ -359,6 +362,10 @@
             raise Exception("No such component '%s'" % name)
         data = self.db_execsql("DELETE FROM component WHERE name='%s'"
                                % (name))
+        data = self.db_execsql("UPDATE ticket SET component = '' WHERE component = '%s'" % name)
+        if self.__env.get_config('ticket', 'default_component') == name:
+            self.__env.set_config('ticket', 'default_component', '')
+            self.__env.save_config()
 
     def _do_component_set_owner(self, name, owner):
         cnx = self.db_open()
@@ -783,6 +790,11 @@
             raise Exception, "No such value '%s'" % name
         data = self.db_execsql("UPDATE enum SET name='%(newname)s'" 
                                " WHERE type='%(type)s' AND name='%(name)s'" % d)
+        if self.__env.get_config('ticket', 'default_' + type) == name:
+            self.__env.set_config('ticket', 'default_' + type, newname)
+            self.__env.save_config()
+        data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'"
+                               " WHERE %(type)s='%(name)s'" % d)
 
     def _do_enum_remove(self, type, name):
         data = self.db_execsql("SELECT name FROM enum" 
@@ -791,6 +803,13 @@
             raise Exception, "No such value '%s'" % name
         data = self.db_execsql("DELETE FROM enum WHERE type='%s' AND name='%s'"
                                % (type, name))
+        if self.__env.get_config('ticket', 'default_' + type) == name:
+            self.__env.set_config('ticket', 'default_' + type, '')
+            self.__env.save_config()
+        newname = self.__env.get_config('ticket', 'default_' + type)
+        d = {'name':name, 'newname':newname, 'type':type}
+        data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'"
+                               " WHERE %(type)s='%(name)s'" % d)
 
 
     ## Milestone
@@ -876,6 +895,11 @@
             raise Exception, "No such %s '%s'" % (type, name)
         data = self.db_execsql("UPDATE %(type)s SET name='%(newname)s'" 
                                " WHERE name='%(name)s'" % d)
+        data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'"
+                               " WHERE %(type)s='%(name)s'" % d)
+        if self.__env.get_config('ticket', 'default_' + type) == name:
+            self.__env.set_config('ticket', 'default_' + type, newname)
+            self.__env.save_config()
 
     def _do_mile_ver_add(self, type, name):
         sql = ("INSERT INTO %(type)s('name', 'time') "
@@ -891,6 +915,11 @@
             raise Exception, "No such %s '%s'" % (type, name)
         data = self.db_execsql("DELETE FROM %(type)s" 
                                " WHERE name='%(name)s'" % d)
+        data = self.db_execsql("UPDATE ticket SET %(type)s=''"
+                               " WHERE %(type)s='%(name)s'" % d)
+        if self.__env.get_config('ticket', 'default_' + type) == name:
+            self.__env.set_config('ticket', 'default_' + type, '')
+            self.__env.save_config()
 
     def _do_mile_ver_time(self, type, name, t):
         d = {'name':name, 'type':type}
Index: trac/Milestone.py
===================================================================
--- trac/Milestone.py	(revision 1014)
+++ trac/Milestone.py	(working copy)
@@ -166,12 +166,18 @@
                                       'milestone %s' % (id, target))
                     cursor.execute ('UPDATE ticket SET milestone = %s '
                                     'WHERE milestone = %s', target, id)
+                    if self.env.get_config('ticket', 'default_milestone') == id:
+                        self.env.set_config('ticket', 'default_milestone', target)
+                        self.env.save_config()
                 else:
                     self.env.log.info('Resetting milestone field of all '
                                       'tickets associated with milestone %s'
                                       % id)
                     cursor.execute ('UPDATE ticket SET milestone = NULL '
                                     'WHERE milestone = %s', id)
+                    if self.env.get_config('ticket', 'default_milestone') == id:
+                        self.env.set_config('ticket', 'default_milestone', '')
+                        self.env.save_config()
             self.env.log.debug('Deleting milestone %s' % id)
             cursor.execute("DELETE FROM milestone WHERE name = %s", id)
             self.db.commit()
@@ -192,6 +198,10 @@
                            "descr = %s WHERE name = %s",
                            name, date, descr, id)
             self.db.commit()
+            if self.env.get_config('ticket', 'default_milestone') == id:
+                self.env.set_config('ticket', 'default_milestone', name)
+                self.env.save_config()
+
             self.req.redirect(self.env.href.milestone(name))
         else:
             self.req.redirect(self.env.href.milestone(id))

