Merged revisions 88003 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r88003 | ned.deily | 2011-01-14 20:37:12 -0800 (Fri, 14 Jan 2011) | 5 lines

  #10907: Warn OS X 10.6 IDLE users to use ActiveState Tcl/Tk 8.5,
          rather than the currently problematic Apple-supplied one,
          when running with the 64-/32-bit installer variant.
........
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index acae420..0c95df4 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -1432,6 +1432,13 @@
             shell.interp.prepend_syspath(script)
             shell.interp.execfile(script)
 
+    # Check for problematic OS X Tk versions and print a warning message
+    # in the IDLE shell window; this is less intrusive than always opening
+    # a separate window.
+    tkversionwarning = macosxSupport.tkVersionWarning(root)
+    if tkversionwarning:
+        shell.interp.runcommand(''.join(("print('", tkversionwarning, "')")))
+
     root.mainloop()
     root.destroy()
 
diff --git a/Lib/idlelib/macosxSupport.py b/Lib/idlelib/macosxSupport.py
index 4438bd2..722ac54 100644
--- a/Lib/idlelib/macosxSupport.py
+++ b/Lib/idlelib/macosxSupport.py
@@ -34,6 +34,23 @@
                          'AppKit' not in root.tk.call('winfo', 'server', '.'))
     return _carbonaquatk
 
+def tkVersionWarning(root):
+    """
+    Returns a string warning message if the Tk version in use appears to
+    be one known to cause problems with IDLE.  The Apple Cocoa-based Tk 8.5
+    that was shipped with Mac OS X 10.6.
+    """
+
+    if (runningAsOSXApp() and
+            ('AppKit' in root.tk.call('winfo', 'server', '.')) and
+            (root.tk.call('info', 'patchlevel') == '8.5.7') ):
+        return (r"WARNING: The version of Tcl/Tk (8.5.7) in use may"
+                r" be unstable.\n"
+                r"Visit http://www.python.org/download/mac/tcltk/"
+                r" for current information.")
+    else:
+        return False
+
 def addOpenEventSupport(root, flist):
     """
     This ensures that the application will respont to open AppleEvents, which