https://github.com/python/cpython/commit/6fe746d702bfeeafbde1e9df2b1b5e061808fbb5
commit: 6fe746d702bfeeafbde1e9df2b1b5e061808fbb5
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: terryjreedy <[email protected]>
date: 2024-10-07T19:25:26Z
summary:

[3.13] gh-122392: IDLE - Fix overlapping lines in browsers (GH-122392) 
(GH-124975) (#125061)

gh-122392: IDLE - Fix overlapping lines in browsers (GH-122392) (GH-124975)

Increase currently inadequate vertical spacing for the IDLE browsers (path,
module, and stack) on high-resolution monitors.
---------

(cherry picked from commit c5df1cb7bde7e86f046196b0e34a0b90f8fc11de)

Co-authored-by: Zhikang Yan <[email protected]>
Co-authored-by: Terry Jan Reedy <[email protected]>

files:
A Misc/NEWS.d/next/IDLE/2024-10-04-15-34-34.gh-issue-122392.V8K3w2.rst
M Lib/idlelib/tree.py

diff --git a/Lib/idlelib/tree.py b/Lib/idlelib/tree.py
index 0726d7e23660f6..182ce7189614da 100644
--- a/Lib/idlelib/tree.py
+++ b/Lib/idlelib/tree.py
@@ -83,6 +83,8 @@ def wheel_event(event, widget=None):
 
 class TreeNode:
 
+    dy = 0
+
     def __init__(self, canvas, parent, item):
         self.canvas = canvas
         self.parent = parent
@@ -199,23 +201,22 @@ def update(self):
 
     def draw(self, x, y):
         # XXX This hard-codes too many geometry constants!
-        dy = 20
         self.x, self.y = x, y
         self.drawicon()
         self.drawtext()
         if self.state != 'expanded':
-            return y + dy
+            return y + TreeNode.dy
         # draw children
         if not self.children:
             sublist = self.item._GetSubList()
             if not sublist:
                 # _IsExpandable() was mistaken; that's allowed
-                return y+17
+                return y + TreeNode.dy
             for item in sublist:
                 child = self.__class__(self.canvas, self, item)
                 self.children.append(child)
         cx = x+20
-        cy = y + dy
+        cy = y + TreeNode.dy
         cylast = 0
         for child in self.children:
             cylast = cy
@@ -289,6 +290,11 @@ def drawtext(self):
             self.label.bind("<Button-4>", lambda e: wheel_event(e, 
self.canvas))
             self.label.bind("<Button-5>", lambda e: wheel_event(e, 
self.canvas))
         self.text_id = id
+        if TreeNode.dy == 0:
+            # The first row doesn't matter what the dy is, just measure its
+            # size to get the value of the subsequent dy
+            coords = self.canvas.bbox(id)
+            TreeNode.dy = max(20, coords[3] - coords[1] - 3)
 
     def select_or_edit(self, event=None):
         if self.selected and self.item.IsEditable():
diff --git 
a/Misc/NEWS.d/next/IDLE/2024-10-04-15-34-34.gh-issue-122392.V8K3w2.rst 
b/Misc/NEWS.d/next/IDLE/2024-10-04-15-34-34.gh-issue-122392.V8K3w2.rst
new file mode 100644
index 00000000000000..541f6212794ef2
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2024-10-04-15-34-34.gh-issue-122392.V8K3w2.rst
@@ -0,0 +1,2 @@
+Increase currently inadequate vertical spacing for the IDLE browsers (path,
+module, and stack) on high-resolution monitors.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to