diff --git a/Tools/idle/WidgetRedirector.py b/Tools/idle/WidgetRedirector.py index b11b0e40472..b49ccf1c590 100644 --- a/Tools/idle/WidgetRedirector.py +++ b/Tools/idle/WidgetRedirector.py @@ -18,11 +18,9 @@ def __repr__(self): return "WidgetRedirector(%s<%s>)" % (self.widget.__class__.__name__, self.widget._w) - def __del__(self): - self.close() - def close(self): - self.dict = {} + for name in self.dict.keys(): + self.unregister(name) widget = self.widget; del self.widget orig = self.orig; del self.orig tk = widget.tk @@ -39,6 +37,16 @@ def register(self, name, function): setattr(self.widget, name, function) return previous + def unregister(self, name): + if self.dict.has_key(name): + function = self.dict[name] + del self.dict[name] + if hasattr(self.widget, name): + delattr(self.widget, name) + return function + else: + return None + def dispatch(self, cmd, *args): m = self.dict.get(cmd) try: