diff options
author | Guido van Rossum <guido@python.org> | 1999-01-12 22:09:57 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1999-01-12 22:09:57 (GMT) |
commit | 5051f4f80dc001219218c49a5db4a37d821783a7 (patch) | |
tree | 6783ee419cd5cea509e9d50e38d2bf656be7989b /Tools | |
parent | 5cc3129260e33c6a736c78a07f4df1b3cc06e206 (diff) | |
download | cpython-5051f4f80dc001219218c49a5db4a37d821783a7.zip cpython-5051f4f80dc001219218c49a5db4a37d821783a7.tar.gz cpython-5051f4f80dc001219218c49a5db4a37d821783a7.tar.bz2 |
Hack to close a window that is colorizing.
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/idle/ColorDelegator.py | 13 | ||||
-rw-r--r-- | Tools/idle/EditorWindow.py | 15 |
2 files changed, 20 insertions, 8 deletions
diff --git a/Tools/idle/ColorDelegator.py b/Tools/idle/ColorDelegator.py index 357358f..8e4667a 100644 --- a/Tools/idle/ColorDelegator.py +++ b/Tools/idle/ColorDelegator.py @@ -91,7 +91,9 @@ class ColorDelegator(Delegator): if __debug__: print "schedule colorizing" self.after_id = self.after(1, self.recolorize) - def close(self): + close_when_done = None # Window to be closed when done colorizing + + def close(self, close_when_done=None): if self.after_id: after_id = self.after_id self.after_id = None @@ -99,6 +101,11 @@ class ColorDelegator(Delegator): self.after_cancel(after_id) self.allow_colorizing = 0 self.stop_colorizing = 1 + if close_when_done: + if not self.colorizing: + close_when_done.destroy() + else: + self.close_when_done = close_when_done def toggle_colorize_event(self, event): if self.after_id: @@ -140,6 +147,10 @@ class ColorDelegator(Delegator): if self.allow_colorizing and self.tag_nextrange("TODO", "1.0"): if __debug__: print "reschedule colorizing" self.after_id = self.after(1, self.recolorize) + if self.close_when_done: + top = self.close_when_done + self.close_when_done = None + top.destroy() def recolorize_main(self): next = "1.0" diff --git a/Tools/idle/EditorWindow.py b/Tools/idle/EditorWindow.py index 8c0ba00..f3dacde 100644 --- a/Tools/idle/EditorWindow.py +++ b/Tools/idle/EditorWindow.py @@ -408,7 +408,8 @@ class EditorWindow: text = self.text top = self.getlineno("@0,0") bot = self.getlineno("@0,65535") - if top == bot: + if top == bot and text.winfo_height() == 1: + # Geometry manager hasn't run yet height = int(text['height']) bot = top + height - 1 return top, bot @@ -429,15 +430,15 @@ class EditorWindow: self.top.tkraise() reply = self.maybesave() if reply != "cancel": - if self.color and self.color.colorizing: - self.color.close() - self.top.bell() - return "cancel" if self.close_hook: self.close_hook() + colorizing = 0 if self.color: - self.color.close() # Cancel colorization - self.top.destroy() + colorizing = self.color.colorizing + doh = colorizing and self.top + self.color.close(doh) # Cancel colorization + if not colorizing: + self.top.destroy() return reply def load_extensions(self): |