Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Lib/idlelib/idle_test/test_stackviewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ def test_init(self):
isi(stackviewer.sc, ScrolledCanvas)
isi(stackviewer.item, stackviewer.StackTreeItem)
isi(stackviewer.node, TreeNode)
top = stackviewer.sc.frame.winfo_toplevel()
self.assertEqual(top.winfo_class(), 'Idle')


if __name__ == '__main__':
Expand Down
5 changes: 5 additions & 0 deletions Lib/idlelib/idle_test/test_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ def test_init(self):
win = window.ListedToplevel(self.root)
self.assertIn(win, window.registry)
self.assertEqual(win.focused_widget, win)
self.assertEqual(win.winfo_class(), 'Idle')

def test_init_class_override(self):
win = window.ListedToplevel(self.root, class_='Other')
self.assertEqual(win.winfo_class(), 'Other')


if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/pyshell.py
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,7 @@ def remote_stack_viewer(self):
return
item = debugobj_r.StubObjectTreeItem(self.rpcclt, oid)
from idlelib.tree import ScrolledCanvas, TreeNode
top = Toplevel(self.tkconsole.root)
top = Toplevel(self.tkconsole.root, class_='Idle')
theme = idleConf.CurrentTheme()
background = idleConf.GetHighlight(theme, 'normal')['background']
sc = ScrolledCanvas(top, bg=background, highlightthickness=0)
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/stackviewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
def StackBrowser(root, exc, flist=None, top=None):
global sc, item, node # For testing.
if top is None:
top = tk.Toplevel(root)
top = tk.Toplevel(root, class_='Idle')
sc = ScrolledCanvas(top, bg="white", highlightthickness=0)
sc.frame.pack(expand=1, fill="both")
item = StackTreeItem(exc, flist)
Expand Down
4 changes: 4 additions & 0 deletions Lib/idlelib/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ def call_callbacks(self):
class ListedToplevel(Toplevel):

def __init__(self, master, **kw):
# Set the WM_CLASS property so that X11 window managers group and
# label IDLE's windows under 'Idle' instead of the default
# 'Toplevel' (gh-66331). It matches the class name passed to Tk().
kw.setdefault('class_', 'Idle')
Toplevel.__init__(self, master, kw)
registry.add(self)
self.focused_widget = self
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Set the ``WM_CLASS`` window property of IDLE's windows to ``Idle`` on X11,
so that window managers group and label them correctly instead of using the
default ``Toplevel``.
Loading