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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
10 additions and
5 deletions
-
Lib/idlelib/idle_test/test_searchbase.py
-
Lib/idlelib/searchbase.py
-
Misc/NEWS.d/next/IDLE/2019-06-07-00-17-41.bpo-37177.voU6pQ.rst
|
|
|
@ -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() |
|
|
|
|
|
|
|
|
|
|
|
@ -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): |
|
|
|
|
|
|
|
@ -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. |