Skip to content

Commit

Permalink
gh-128014: Fix passing default='' to the tkinter method wm_iconbitmap…
Browse files Browse the repository at this point in the history
…() (GH-128015)

Co-authored-by: Serhiy Storchaka <[email protected]>
  • Loading branch information
Xiaokang2022 and serhiy-storchaka authored Jan 2, 2025
1 parent c9d2bc6 commit 58e9f95
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 2 deletions.
28 changes: 27 additions & 1 deletion Lib/test/test_tkinter/test_misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from tkinter import TclError
import enum
from test import support
from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest, requires_tk
from test.test_tkinter.support import (AbstractTkTest, AbstractDefaultRootTest,
requires_tk, get_tk_patchlevel)

support.requires('gui')

Expand Down Expand Up @@ -554,6 +555,31 @@ def test_wm_attribute(self):
self.assertEqual(w.wm_attributes('alpha'),
1.0 if self.wantobjects else '1.0')

def test_wm_iconbitmap(self):
t = tkinter.Toplevel(self.root)
self.assertEqual(t.wm_iconbitmap(), '')
t.wm_iconbitmap('hourglass')
bug = False
if t._windowingsystem == 'aqua':
# Tk bug 13ac26b35dc55f7c37f70b39d59d7ef3e63017c8.
patchlevel = get_tk_patchlevel(t)
if patchlevel < (8, 6, 17) or (9, 0) <= patchlevel < (9, 0, 2):
bug = True
if not bug:
self.assertEqual(t.wm_iconbitmap(), 'hourglass')
self.assertEqual(self.root.wm_iconbitmap(), '')
t.wm_iconbitmap('')
self.assertEqual(t.wm_iconbitmap(), '')

if t._windowingsystem == 'win32':
t.wm_iconbitmap(default='hourglass')
self.assertEqual(t.wm_iconbitmap(), 'hourglass')
self.assertEqual(self.root.wm_iconbitmap(), '')
t.wm_iconbitmap(default='')
self.assertEqual(t.wm_iconbitmap(), '')

t.destroy()


class EventTest(AbstractTkTest, unittest.TestCase):

Expand Down
2 changes: 1 addition & 1 deletion Lib/tkinter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2265,7 +2265,7 @@ def wm_iconbitmap(self, bitmap=None, default=None):
explicitly. DEFAULT can be the relative path to a .ico file
(example: root.iconbitmap(default='myicon.ico') ). See Tk
documentation for more information."""
if default:
if default is not None:
return self.tk.call('wm', 'iconbitmap', self._w, '-default', default)
else:
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix resetting the default window icon by passing ``default=''`` to the
:mod:`tkinter` method :meth:`!wm_iconbitmap`.

0 comments on commit 58e9f95

Please sign in to comment.