From 784ea93e33a4a9bc79adb18e8c0357a68fe05f37 Mon Sep 17 00:00:00 2001 From: TRAE Agent Date: Fri, 25 Sep 2026 22:28:39 +0800 Subject: [PATCH] Fix #715: Enable completions in input_dialog and other dialogs The _create_app function was creating a Layout directly from the dialog, without including CompletionsMenu floats. This meant that even when a completer was passed to input_dialog (and internally to TextArea), the completion popup menu would never appear. Fix this by wrapping the dialog in a FloatContainer with a CompletionsMenu float, matching how PromptSession sets up its layout. This makes the completer parameter work as expected for input_dialog. Fixes #715 --- src/prompt_toolkit/shortcuts/dialogs.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/prompt_toolkit/shortcuts/dialogs.py b/src/prompt_toolkit/shortcuts/dialogs.py index 6d008353e..a7c436d00 100644 --- a/src/prompt_toolkit/shortcuts/dialogs.py +++ b/src/prompt_toolkit/shortcuts/dialogs.py @@ -14,9 +14,10 @@ from prompt_toolkit.key_binding.bindings.focus import focus_next, focus_previous from prompt_toolkit.key_binding.defaults import load_key_bindings from prompt_toolkit.key_binding.key_bindings import KeyBindings, merge_key_bindings -from prompt_toolkit.layout import Layout +from prompt_toolkit.layout import Float, FloatContainer, Layout from prompt_toolkit.layout.containers import AnyContainer, HSplit from prompt_toolkit.layout.dimension import Dimension as D +from prompt_toolkit.layout.menus import CompletionsMenu, MultiColumnCompletionsMenu from prompt_toolkit.styles import BaseStyle from prompt_toolkit.validation import Validator from prompt_toolkit.widgets import ( @@ -318,7 +319,22 @@ def _create_app(dialog: AnyContainer, style: BaseStyle | None) -> Application[An bindings.add("s-tab")(focus_previous) return Application( - layout=Layout(dialog), + layout=Layout( + FloatContainer( + content=dialog, + floats=[ + Float( + xcursor=True, + ycursor=True, + transparent=True, + content=CompletionsMenu( + max_height=16, + scroll_offset=1, + ), + ), + ], + ) + ), key_bindings=merge_key_bindings([load_key_bindings(), bindings]), mouse_support=True, style=style,