]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-128014: Fix passing default='' to the tkinter method wm_iconbitmap() ...
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 2 Jan 2025 16:21:00 +0000 (18:21 +0200)
committerGitHub <noreply@github.com>
Thu, 2 Jan 2025 16:21:00 +0000 (16:21 +0000)
(cherry picked from commit 58e9f95c4aa970db32a94b9152b51ede22f823bd)

Co-authored-by: Zhikang Yan <2951256653@qq.com>
Lib/test/test_tkinter/test_misc.py
Lib/tkinter/__init__.py
Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst [new file with mode: 0644]

index 81866993435a0c19868c3b11d64c8ce77102df74..bb6f7824ea746b8c07f5e834db1a0d3b1f80f278 100644 (file)
@@ -3,7 +3,8 @@ import unittest
 import tkinter
 import enum
 from test import support
-from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest
+from test.test_tkinter.support import (AbstractTkTest, AbstractDefaultRootTest,
+                                       requires_tk, get_tk_patchlevel)
 
 support.requires('gui')
 
@@ -392,6 +393,34 @@ class MiscTest(AbstractTkTest, unittest.TestCase):
         self.assertEqual(widget.selection_get(), '\u20ac\0abc\x00def')
 
 
+class WmTest(AbstractTkTest, unittest.TestCase):
+
+    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):
 
     def test_focus(self):
index ac70d965f305d554a5b66b3f6494a83c4f3ff4e4..ac78c04efc5833be87957444649be27427d3810e 100644 (file)
@@ -2150,7 +2150,7 @@ class Wm:
         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)
diff --git a/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst b/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst
new file mode 100644 (file)
index 0000000..ef339a2
--- /dev/null
@@ -0,0 +1,2 @@
+Fix resetting the default window icon by passing ``default=''`` to the
+:mod:`tkinter` method :meth:`!wm_iconbitmap`.