Browse Source

bpo-37177: make IDLE's search dialogs transient (GH-13869)

This avoids the search dialogs being hidden behind the editor window.
pull/13881/head
Tal Einat 7 years ago
committed by GitHub
parent
commit
554450fb4e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      Lib/idlelib/idle_test/test_searchbase.py
  2. 2
      Lib/idlelib/searchbase.py
  3. 2
      Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst

11
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 @@ class SearchDialogBaseTest(unittest.TestCase):
# 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()

2
Lib/idlelib/searchbase.py

@ -54,6 +54,7 @@ class SearchDialogBase:
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 @@ class SearchDialogBase:
"Put dialog away for later use."
if self.top:
self.top.grab_release()
self.top.transient('')
self.top.withdraw()
def create_widgets(self):

2
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.
Loading…
Cancel
Save