CommonClient: keep command input focus after enter and allow tabbing between inputs

This commit is contained in:
Fabian Dill 2021-11-21 05:47:19 +01:00
parent 47c5c407ef
commit 4f00f5509f
1 changed files with 12 additions and 2 deletions

14
kvui.py
View File

@ -198,7 +198,8 @@ class GameManager(App):
# top part # top part
server_label = ServerLabel() server_label = ServerLabel()
connect_layout.add_widget(server_label) connect_layout.add_widget(server_label)
self.server_connect_bar = TextInput(text="archipelago.gg", size_hint_y=None, height=30, multiline=False) self.server_connect_bar = TextInput(text="archipelago.gg", size_hint_y=None, height=30, multiline=False,
write_tab=False)
self.server_connect_bar.bind(on_text_validate=self.connect_button_action) self.server_connect_bar.bind(on_text_validate=self.connect_button_action)
connect_layout.add_widget(self.server_connect_bar) connect_layout.add_widget(self.server_connect_bar)
self.server_connect_button = Button(text="Connect", size=(100, 30), size_hint_y=None, size_hint_x=None) self.server_connect_button = Button(text="Connect", size=(100, 30), size_hint_y=None, size_hint_x=None)
@ -235,8 +236,14 @@ class GameManager(App):
info_button = Button(height=30, text="Command:", size_hint_x=None) info_button = Button(height=30, text="Command:", size_hint_x=None)
info_button.bind(on_release=self.command_button_action) info_button.bind(on_release=self.command_button_action)
bottom_layout.add_widget(info_button) bottom_layout.add_widget(info_button)
textinput = TextInput(size_hint_y=None, height=30, multiline=False) textinput = TextInput(size_hint_y=None, height=30, multiline=False, write_tab=False)
textinput.bind(on_text_validate=self.on_message) textinput.bind(on_text_validate=self.on_message)
def text_focus(event):
"""Needs to be set via delay, as unfocusing happens after on_message"""
textinput.focus = True
textinput.text_focus = text_focus
bottom_layout.add_widget(textinput) bottom_layout.add_widget(textinput)
self.grid.add_widget(bottom_layout) self.grid.add_widget(bottom_layout)
self.commandprocessor("/help") self.commandprocessor("/help")
@ -289,6 +296,9 @@ class GameManager(App):
self.ctx.input_queue.put_nowait(input_text) self.ctx.input_queue.put_nowait(input_text)
elif input_text: elif input_text:
self.commandprocessor(input_text) self.commandprocessor(input_text)
Clock.schedule_once(textinput.text_focus)
except Exception as e: except Exception as e:
logging.getLogger("Client").exception(e) logging.getLogger("Client").exception(e)