Hack to close a window that is colorizing.

This commit is contained in:
Guido van Rossum 1999-01-12 22:09:57 +00:00
parent 5cc3129260
commit 5051f4f80d
2 changed files with 20 additions and 8 deletions

View File

@ -91,7 +91,9 @@ class ColorDelegator(Delegator):
if __debug__: print "schedule colorizing" if __debug__: print "schedule colorizing"
self.after_id = self.after(1, self.recolorize) 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: if self.after_id:
after_id = self.after_id after_id = self.after_id
self.after_id = None self.after_id = None
@ -99,6 +101,11 @@ class ColorDelegator(Delegator):
self.after_cancel(after_id) self.after_cancel(after_id)
self.allow_colorizing = 0 self.allow_colorizing = 0
self.stop_colorizing = 1 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): def toggle_colorize_event(self, event):
if self.after_id: if self.after_id:
@ -140,6 +147,10 @@ class ColorDelegator(Delegator):
if self.allow_colorizing and self.tag_nextrange("TODO", "1.0"): if self.allow_colorizing and self.tag_nextrange("TODO", "1.0"):
if __debug__: print "reschedule colorizing" if __debug__: print "reschedule colorizing"
self.after_id = self.after(1, self.recolorize) 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): def recolorize_main(self):
next = "1.0" next = "1.0"

View File

@ -408,7 +408,8 @@ class EditorWindow:
text = self.text text = self.text
top = self.getlineno("@0,0") top = self.getlineno("@0,0")
bot = self.getlineno("@0,65535") 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']) height = int(text['height'])
bot = top + height - 1 bot = top + height - 1
return top, bot return top, bot
@ -429,15 +430,15 @@ class EditorWindow:
self.top.tkraise() self.top.tkraise()
reply = self.maybesave() reply = self.maybesave()
if reply != "cancel": if reply != "cancel":
if self.color and self.color.colorizing:
self.color.close()
self.top.bell()
return "cancel"
if self.close_hook: if self.close_hook:
self.close_hook() self.close_hook()
colorizing = 0
if self.color: if self.color:
self.color.close() # Cancel colorization colorizing = self.color.colorizing
self.top.destroy() doh = colorizing and self.top
self.color.close(doh) # Cancel colorization
if not colorizing:
self.top.destroy()
return reply return reply
def load_extensions(self): def load_extensions(self):