summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-01-12 22:09:57 (GMT)
committerGuido van Rossum <guido@python.org>1999-01-12 22:09:57 (GMT)
commit5051f4f80dc001219218c49a5db4a37d821783a7 (patch)
tree6783ee419cd5cea509e9d50e38d2bf656be7989b /Tools
parent5cc3129260e33c6a736c78a07f4df1b3cc06e206 (diff)
downloadcpython-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.py13
-rw-r--r--Tools/idle/EditorWindow.py15
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):