summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-01-30 18:14:16 -0800
committerGitHub <noreply@github.com>2020-01-30 18:14:16 -0800
commit83d3202b92fb4c2fc6df5b035d57f3a1cf715f20 (patch)
treec66a342804fa1c9ebd25a1f1dfa83753160b4435
parentb841633cc2d7619cf4a7db108d91b14926450a6e (diff)
downloadcpython-git-83d3202b92fb4c2fc6df5b035d57f3a1cf715f20.tar.gz
bpo-38792: Remove IDLE shell calltip before new prompt. (GH-17150)
Previously, a calltip might be left after SyntaxError, KeyboardInterrupt, or Shell Restart. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> Co-authored-by: Tal Einat <taleinat+github@gmail.com> (cherry picked from commit bfdeaa37b3df7466624c17f9450d2bd1c3d95edf) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
-rw-r--r--Lib/idlelib/NEWS.txt3
-rw-r--r--Lib/idlelib/calltip.py4
-rw-r--r--Lib/idlelib/editor.py2
-rwxr-xr-xLib/idlelib/pyshell.py1
-rw-r--r--Misc/NEWS.d/next/IDLE/2019-11-13-23-51-39.bpo-38792.xhTC5a.rst2
5 files changed, 9 insertions, 3 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 4d2dd6d7ff..1fc9e0f309 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,9 @@ Released on 2019-12-16?
======================================
+bpo-38792: Close a shell calltip if a :exc:`KeyboardInterrupt`
+or shell restart occurs. Patch by Zackery Spytz.
+
bpo-30780: Add remaining configdialog tests for buttons and
highlights and keys tabs.
diff --git a/Lib/idlelib/calltip.py b/Lib/idlelib/calltip.py
index a3dda2678b..2e0db60d47 100644
--- a/Lib/idlelib/calltip.py
+++ b/Lib/idlelib/calltip.py
@@ -33,7 +33,7 @@ class Calltip:
# See __init__ for usage
return calltip_w.CalltipWindow(self.text)
- def _remove_calltip_window(self, event=None):
+ def remove_calltip_window(self, event=None):
if self.active_calltip:
self.active_calltip.hidetip()
self.active_calltip = None
@@ -55,7 +55,7 @@ class Calltip:
self.open_calltip(False)
def open_calltip(self, evalfuncs):
- self._remove_calltip_window()
+ self.remove_calltip_window()
hp = HyperParser(self.editwin, "insert")
sur_paren = hp.get_surrounding_brackets('(')
diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py
index c9f1a1625c..04c786dc52 100644
--- a/Lib/idlelib/editor.py
+++ b/Lib/idlelib/editor.py
@@ -328,7 +328,7 @@ class EditorWindow(object):
text.bind("<<run-module>>", scriptbinding.run_module_event)
text.bind("<<run-custom>>", scriptbinding.run_custom_event)
text.bind("<<do-rstrip>>", self.Rstrip(self).do_rstrip)
- ctip = self.Calltip(self)
+ self.ctip = ctip = self.Calltip(self)
text.bind("<<try-open-calltip>>", ctip.try_open_calltip_event)
#refresh-calltip must come after paren-closed to work right
text.bind("<<refresh-calltip>>", ctip.refresh_calltip_event)
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index 065122dec7..d5b310ffd7 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -1292,6 +1292,7 @@ class PyShell(OutputWindow):
self.text.insert("end-1c", "\n")
self.text.mark_set("iomark", "end-1c")
self.set_line_and_column()
+ self.ctip.remove_calltip_window()
def write(self, s, tags=()):
try:
diff --git a/Misc/NEWS.d/next/IDLE/2019-11-13-23-51-39.bpo-38792.xhTC5a.rst b/Misc/NEWS.d/next/IDLE/2019-11-13-23-51-39.bpo-38792.xhTC5a.rst
new file mode 100644
index 0000000000..9aa2f0ffdd
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2019-11-13-23-51-39.bpo-38792.xhTC5a.rst
@@ -0,0 +1,2 @@
+Close an IDLE shell calltip if a :exc:`KeyboardInterrupt`
+or shell restart occurs. Patch by Zackery Spytz.