summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhikang Yan <2951256653@qq.com>2024-10-07 18:52:09 (GMT)
committerGitHub <noreply@github.com>2024-10-07 18:52:09 (GMT)
commitc5df1cb7bde7e86f046196b0e34a0b90f8fc11de (patch)
tree8ae2d57dea662d18d9892d0a18b81e7badeec282
parent7ffe94fb242fd51bb07c7f0d31e94efeea3619d4 (diff)
downloadcpython-c5df1cb7bde7e86f046196b0e34a0b90f8fc11de.zip
cpython-c5df1cb7bde7e86f046196b0e34a0b90f8fc11de.tar.gz
cpython-c5df1cb7bde7e86f046196b0e34a0b90f8fc11de.tar.bz2
gh-122392: IDLE - Fix overlapping lines in browsers (#122392) (#124975)
Increase currently inadequate vertical spacing for the IDLE browsers (path, module, and stack) on high-resolution monitors. --------- Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
-rw-r--r--Lib/idlelib/tree.py14
-rw-r--r--Misc/NEWS.d/next/IDLE/2024-10-04-15-34-34.gh-issue-122392.V8K3w2.rst2
2 files changed, 12 insertions, 4 deletions
diff --git a/Lib/idlelib/tree.py b/Lib/idlelib/tree.py
index 0726d7e..182ce71 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 @@ class TreeNode:
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 @@ class TreeNode:
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 0000000..541f621
--- /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.