]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[ 1621265 ] Auto-completion list placement
authorKurt B. Kaiser <kbk@shore.net>
Wed, 7 Feb 2007 03:39:41 +0000 (03:39 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Wed, 7 Feb 2007 03:39:41 +0000 (03:39 +0000)
Move AC window below input line unless not enough space, then put it above.
Patch: Tal Einat

Lib/idlelib/AutoCompleteWindow.py
Lib/idlelib/NEWS.txt

index d02a69539aede838690586b085674059194efc5b..05cd42aecf5d02fb922766cd8c83df76eb2cd4d4 100644 (file)
@@ -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():
index ec6a5b1852460c4b9b4a15c86ab732fc9cb56224..52c7f00a8ffcf35470ce840be505f1b3ff0a495c 100644 (file)
@@ -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.