summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/idlelib/config_key.py2
-rw-r--r--Lib/idlelib/query.py10
-rw-r--r--Lib/idlelib/searchbase.py2
-rw-r--r--Lib/tkinter/filedialog.py2
-rw-r--r--Lib/tkinter/simpledialog.py12
-rw-r--r--Misc/NEWS.d/next/IDLE/2021-04-04-20-52-07.bpo-43655.HSyaKH.rst2
-rw-r--r--Misc/NEWS.d/next/Library/2021-04-04-20-51-19.bpo-43655.LwGy8R.rst2
7 files changed, 25 insertions, 7 deletions
diff --git a/Lib/idlelib/config_key.py b/Lib/idlelib/config_key.py
index 7510aa9..9ca3a15 100644
--- a/Lib/idlelib/config_key.py
+++ b/Lib/idlelib/config_key.py
@@ -4,6 +4,7 @@ Dialog for building Tkinter accelerator key bindings
from tkinter import Toplevel, Listbox, StringVar, TclError
from tkinter.ttk import Frame, Button, Checkbutton, Entry, Label, Scrollbar
from tkinter import messagebox
+from tkinter.simpledialog import _setup_dialog
import string
import sys
@@ -63,6 +64,7 @@ class GetKeysDialog(Toplevel):
self.resizable(height=False, width=False)
self.title(title)
self.transient(parent)
+ _setup_dialog(self)
self.grab_set()
self.protocol("WM_DELETE_WINDOW", self.cancel)
self.parent = parent
diff --git a/Lib/idlelib/query.py b/Lib/idlelib/query.py
index 015fc7a..fefa5aa 100644
--- a/Lib/idlelib/query.py
+++ b/Lib/idlelib/query.py
@@ -28,6 +28,7 @@ from tkinter import Toplevel, StringVar, BooleanVar, W, E, S
from tkinter.ttk import Frame, Button, Entry, Label, Checkbutton
from tkinter import filedialog
from tkinter.font import Font
+from tkinter.simpledialog import _setup_dialog
class Query(Toplevel):
"""Base class for getting verified answer from a user.
@@ -60,13 +61,8 @@ class Query(Toplevel):
if not _utest: # Otherwise fail when directly run unittest.
self.grab_set()
- windowingsystem = self.tk.call('tk', 'windowingsystem')
- if windowingsystem == 'aqua':
- try:
- self.tk.call('::tk::unsupported::MacWindowStyle', 'style',
- self._w, 'moveableModal', '')
- except:
- pass
+ _setup_dialog(self)
+ if self._windowingsystem == 'aqua':
self.bind("<Command-.>", self.cancel)
self.bind('<Key-Escape>', self.cancel)
self.protocol("WM_DELETE_WINDOW", self.cancel)
diff --git a/Lib/idlelib/searchbase.py b/Lib/idlelib/searchbase.py
index fbef87a..64ed50c 100644
--- a/Lib/idlelib/searchbase.py
+++ b/Lib/idlelib/searchbase.py
@@ -2,6 +2,7 @@
from tkinter import Toplevel
from tkinter.ttk import Frame, Entry, Label, Button, Checkbutton, Radiobutton
+from tkinter.simpledialog import _setup_dialog
class SearchDialogBase:
@@ -83,6 +84,7 @@ class SearchDialogBase:
top.protocol("WM_DELETE_WINDOW", self.close)
top.wm_title(self.title)
top.wm_iconname(self.icon)
+ _setup_dialog(top)
self.top = top
self.frame = Frame(top, padding="5px")
self.frame.grid(sticky="nwes")
diff --git a/Lib/tkinter/filedialog.py b/Lib/tkinter/filedialog.py
index 3ed93eb..600d0bd 100644
--- a/Lib/tkinter/filedialog.py
+++ b/Lib/tkinter/filedialog.py
@@ -24,6 +24,7 @@ from tkinter import (
)
from tkinter.dialog import Dialog
from tkinter import commondialog
+from tkinter.simpledialog import _setup_dialog
dialogstates = {}
@@ -62,6 +63,7 @@ class FileDialog:
self.top = Toplevel(master)
self.top.title(title)
self.top.iconname(title)
+ _setup_dialog(self.top)
self.botframe = Frame(self.top)
self.botframe.pack(side=BOTTOM, fill=X)
diff --git a/Lib/tkinter/simpledialog.py b/Lib/tkinter/simpledialog.py
index a66fbd6..538bbfc 100644
--- a/Lib/tkinter/simpledialog.py
+++ b/Lib/tkinter/simpledialog.py
@@ -40,6 +40,9 @@ class SimpleDialog:
if title:
self.root.title(title)
self.root.iconname(title)
+
+ _setup_dialog(self.root)
+
self.message = Message(self.root, text=text, aspect=400)
self.message.pack(expand=1, fill=BOTH)
self.frame = Frame(self.root)
@@ -115,6 +118,8 @@ class Dialog(Toplevel):
if title:
self.title(title)
+ _setup_dialog(self)
+
self.parent = parent
self.result = None
@@ -252,6 +257,13 @@ def _place_window(w, parent=None):
w.wm_deiconify() # Become visible at the desired location
+def _setup_dialog(w):
+ if w._windowingsystem == "aqua":
+ w.tk.call("::tk::unsupported::MacWindowStyle", "style",
+ w, "moveableModal", "")
+ elif w._windowingsystem == "x11":
+ w.wm_attributes("-type", "dialog")
+
# --------------------------------------------------------------------
# convenience dialogues
diff --git a/Misc/NEWS.d/next/IDLE/2021-04-04-20-52-07.bpo-43655.HSyaKH.rst b/Misc/NEWS.d/next/IDLE/2021-04-04-20-52-07.bpo-43655.HSyaKH.rst
new file mode 100644
index 0000000..105ec92
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2021-04-04-20-52-07.bpo-43655.HSyaKH.rst
@@ -0,0 +1,2 @@
+IDLE dialog windows are now recognized as dialogs by window managers on
+macOS and X Window.
diff --git a/Misc/NEWS.d/next/Library/2021-04-04-20-51-19.bpo-43655.LwGy8R.rst b/Misc/NEWS.d/next/Library/2021-04-04-20-51-19.bpo-43655.LwGy8R.rst
new file mode 100644
index 0000000..7916d22
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-04-04-20-51-19.bpo-43655.LwGy8R.rst
@@ -0,0 +1,2 @@
+:mod:`tkinter` dialog windows are now recognized as dialogs by window
+managers on macOS and X Window.