[Python-checkins] bpo-37177: make IDLE's search dialogs transient (GH-13869)

Miss Islington (bot) webhook-mailer at python.org
Fri Jun 7 02:37:36 EDT 2019


https://github.com/python/cpython/commit/685b806549cc956aeeb3a57fe15ee5a4d1704aed
commit: 685b806549cc956aeeb3a57fe15ee5a4d1704aed
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019年06月06日T23:37:32-07:00
summary:
bpo-37177: make IDLE's search dialogs transient (GH-13869)
This avoids the search dialogs being hidden behind the editor window.
(cherry picked from commit 554450fb4e95066e825bdb4a2d544a490daeebdc)
Co-authored-by: Tal Einat <taleinat at gmail.com>
files:
A Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst
M Lib/idlelib/idle_test/test_searchbase.py
M Lib/idlelib/searchbase.py
diff --git a/Lib/idlelib/idle_test/test_searchbase.py b/Lib/idlelib/idle_test/test_searchbase.py
index 6dd4d7933737..e08268fde257 100644
--- a/Lib/idlelib/idle_test/test_searchbase.py
+++ b/Lib/idlelib/idle_test/test_searchbase.py
@@ -4,7 +4,7 @@
 
 import unittest
 from test.support import requires
-from tkinter import Tk
+from tkinter import Text, Tk, Toplevel
 from tkinter.ttk import Frame
 from idlelib import searchengine as se
 from idlelib import searchbase as sdb
@@ -47,14 +47,15 @@ def test_open_and_close(self):
 # open calls create_widgets, which needs default_command
 self.dialog.default_command = None
 
- # Since text parameter of .open is not used in base class,
- # pass dummy 'text' instead of tk.Text().
- self.dialog.open('text')
+ toplevel = Toplevel(self.root)
+ self.addCleanup(toplevel.destroy)
+ text = Text(toplevel)
+ self.dialog.open(text)
 self.assertEqual(self.dialog.top.state(), 'normal')
 self.dialog.close()
 self.assertEqual(self.dialog.top.state(), 'withdrawn')
 
- self.dialog.open('text', searchphrase="hello")
+ self.dialog.open(text, searchphrase="hello")
 self.assertEqual(self.dialog.ent.get(), 'hello')
 self.dialog.close()
 
diff --git a/Lib/idlelib/searchbase.py b/Lib/idlelib/searchbase.py
index 4ed94f186b04..6fba0b8e583f 100644
--- a/Lib/idlelib/searchbase.py
+++ b/Lib/idlelib/searchbase.py
@@ -54,6 +54,7 @@ def open(self, text, searchphrase=None):
 else:
 self.top.deiconify()
 self.top.tkraise()
+ self.top.transient(text.winfo_toplevel())
 if searchphrase:
 self.ent.delete(0,"end")
 self.ent.insert("end",searchphrase)
@@ -66,6 +67,7 @@ def close(self, event=None):
 "Put dialog away for later use."
 if self.top:
 self.top.grab_release()
+ self.top.transient('')
 self.top.withdraw()
 
 def create_widgets(self):
diff --git a/Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst b/Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst
new file mode 100644
index 000000000000..74e48eef89a6
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst
@@ -0,0 +1,2 @@
+Properly 'attach' search dialogs to their main window so that they behave
+like other dialogs and do not get hidden behind their main window.


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /