mirror of https://github.com/python/cpython
[ 1621265 ] Auto-completion list placement
Move AC window below input line unless not enough space, then put it above. Patch: Tal Einat
This commit is contained in:
parent
f30ff3b8fd
commit
ca30acfea8
|
@ -215,13 +215,22 @@ class AutoCompleteWindow:
|
|||
if not self.is_active():
|
||||
return
|
||||
# Position the completion list window
|
||||
text = self.widget
|
||||
text.see(self.startindex)
|
||||
x, y, cx, cy = text.bbox(self.startindex)
|
||||
acw = self.autocompletewindow
|
||||
self.widget.see(self.startindex)
|
||||
x, y, cx, cy = self.widget.bbox(self.startindex)
|
||||
acw.wm_geometry("+%d+%d" % (x + self.widget.winfo_rootx(),
|
||||
y + self.widget.winfo_rooty() \
|
||||
-acw.winfo_height()))
|
||||
|
||||
acw_width, acw_height = acw.winfo_width(), acw.winfo_height()
|
||||
text_width, text_height = text.winfo_width(), text.winfo_height()
|
||||
new_x = text.winfo_rootx() + min(x, max(0, text_width - acw_width))
|
||||
new_y = text.winfo_rooty() + y
|
||||
if (text_height - (y + cy) >= acw_height # enough height below
|
||||
or y < acw_height): # not enough height above
|
||||
# place acw below current line
|
||||
new_y += cy
|
||||
else:
|
||||
# place acw above current line
|
||||
new_y -= acw_height
|
||||
acw.wm_geometry("+%d+%d" % (new_x, new_y))
|
||||
|
||||
def hide_event(self, event):
|
||||
if not self.is_active():
|
||||
|
|
|
@ -3,6 +3,9 @@ What's New in IDLE 2.6a1?
|
|||
|
||||
*Release date: XX-XXX-200X*
|
||||
|
||||
- AutoCompleteWindow moved below input line, will move above if there
|
||||
isn't enough space. Patch 1621265 Tal Einat
|
||||
|
||||
- Calltips now 'handle' tuples in the argument list (display '<tuple>' :)
|
||||
Suggested solution by Christos Georgiou, Bug 791968.
|
||||
|
||||
|
|
Loading…
Reference in New Issue