<div dir="ltr"><div><div>Showing a textbox and a menu at once is wonky, and I didn't understand at all how it worked until spending 20 min reading the source, so I think it's safe to say tahat very few people do.<br>Keypresses only affect the top-most menu, but they generally are also interpreted by the textbox, except the textbox is not affected if the menu suspends gameplay.<br></div><div>(Interestingly, opening a menu is the only way to suspend choicebox cursor controls)<br></div><div><br></div><div>So, if not suspending gameplay, pressing enter will cause both the textbox to close and the menu to activate... unless the selected menu item is one of the builtin menus, in which case the enter keypress will be cleared when leaving the menu, so that the textbox doesn't close.<br></div><div><br></div>Even worse, when showing a textbox with a choice box at the same time as a menu the arrows keys affect both of them! This clearly should be fixed, but I think the Enter behaviour is bad too.<br></div><div><div><br></div><div>Currently you can give the menu sole focus by setting it to suspend gameplay, and you can give the textbox focus by setting "No player control of menu", although then you need to use a script to close the menu.<br><br></div><div>Clearly to change anything we need a backcompat bit, but it's not easy to see what to change to. I want to simplify, not make it make complicated.<br>I think we need to track whether the textbox or the menu has focus (whichever was opened last), and maybe even (virtually) put the textbox in the menu stack.<br></div><div>So if a menu is opened from a textbox, or a textbox from a menu, then it takes focus; but we also will want a way to override that; maybe the 'No controls' menu bit can be repurposed.</div><div><br></div><div>Also, maybe we should think ahead to the possible ability to have mutliple textboxes open at once, on a stack.<br></div><div><br></div><div>(I also think it's strange that ESC doesn't advance textbox, so would like to add a backcompat or pref bitset for that.)<br></div></div></div>