Fixed issue #2638: Show a window constructed with tkSimpleDialog.Dialog only

after it is has been populated and properly configured in order to prevent
window flashing.
This commit is contained in:
Guilherme Polo 2009-03-07 02:14:38 +00:00
parent 3768b2f4ce
commit 15d57653f1
2 changed files with 10 additions and 2 deletions

View file

@ -46,6 +46,7 @@ class Dialog(Toplevel):
''' '''
Toplevel.__init__(self, parent) Toplevel.__init__(self, parent)
self.withdraw() # remain invisible for now
# If the master is not viewable, don't # If the master is not viewable, don't
# make the child transient, or else it # make the child transient, or else it
# would be opened withdrawn # would be opened withdrawn
@ -65,8 +66,6 @@ class Dialog(Toplevel):
self.buttonbox() self.buttonbox()
self.wait_visibility() # window needs to be visible for the grab
self.grab_set()
if not self.initial_focus: if not self.initial_focus:
self.initial_focus = self self.initial_focus = self
@ -77,8 +76,13 @@ class Dialog(Toplevel):
self.geometry("+%d+%d" % (parent.winfo_rootx()+50, self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
parent.winfo_rooty()+50)) parent.winfo_rooty()+50))
self.deiconify() # become visibile now
self.initial_focus.focus_set() self.initial_focus.focus_set()
# wait for window to appear on screen before calling grab_set
self.wait_visibility()
self.grab_set()
self.wait_window(self) self.wait_window(self)
def destroy(self): def destroy(self):

View file

@ -168,6 +168,10 @@ Core and Builtins
Library Library
------- -------
- Issue #2638: Show a window constructed with tkSimpleDialog.Dialog only after
it is has been populated and properly configured in order to prevent
window flashing.
- Issue #4792: Prevent a segfault in _tkinter by using the - Issue #4792: Prevent a segfault in _tkinter by using the
guaranteed to be safe interp argument given to the PythonCmd in place of guaranteed to be safe interp argument given to the PythonCmd in place of
the Tcl interpreter taken from a PythonCmd_ClientData. the Tcl interpreter taken from a PythonCmd_ClientData.