From 3bb3fb3be09d472a43cdc3d9d9578bd49f3dfb8c Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 25 Apr 2021 13:07:58 +0300 Subject: bpo-43655: Tkinter and IDLE dialog windows are now recognized as dialogs by window managers on macOS and X Window (#25187) --- Lib/tkinter/filedialog.py | 2 ++ Lib/tkinter/simpledialog.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) (limited to 'Lib/tkinter') diff --git a/Lib/tkinter/filedialog.py b/Lib/tkinter/filedialog.py index 3ed93eb8c1..600d0bd49f 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 a66fbd6cb9..538bbfc318 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 -- cgit v1.2.1