|
|
@@ -78,6 +78,7 @@ class AssistantTUI(App):
|
|
|
self._seen_questions_epoch = 0
|
|
|
self._show_questions = False
|
|
|
self._lower_view = "hidden"
|
|
|
+ self._maximized_input = None
|
|
|
self._seen_view = "triage"
|
|
|
self._timer = None
|
|
|
self._last_seg_title = ""
|
|
|
@@ -335,6 +336,7 @@ class AssistantTUI(App):
|
|
|
return None
|
|
|
|
|
|
def _set_maximized_inputs(self, input_id: str | None) -> None:
|
|
|
+ self._maximized_input = input_id
|
|
|
if input_id is None:
|
|
|
self.ALLOW_IN_MAXIMIZED_VIEW = ".__never__"
|
|
|
self.query_one("#command", Input).display = True
|
|
|
@@ -342,7 +344,39 @@ class AssistantTUI(App):
|
|
|
return
|
|
|
self.ALLOW_IN_MAXIMIZED_VIEW = "#inputs"
|
|
|
self.query_one("#command", Input).display = input_id == "command"
|
|
|
- self.query_one("#chat-input", Input).display = input_id == "chat"
|
|
|
+ self.query_one("#chat-input", Input).display = input_id == "chat-input"
|
|
|
+
|
|
|
+ def _maximized_pane_widget(self):
|
|
|
+ maximized = self.screen.maximized
|
|
|
+ if maximized is None:
|
|
|
+ return None
|
|
|
+ if maximized.id == "main":
|
|
|
+ for pane_id in ("triage", "chat", "output"):
|
|
|
+ if self.query(f"#{pane_id}") and self.query_one(f"#{pane_id}").display:
|
|
|
+ return self.query_one(f"#{pane_id}")
|
|
|
+ return None
|
|
|
+ return maximized
|
|
|
+
|
|
|
+ def action_focus_next(self) -> None:
|
|
|
+ self._maximized_focus(1)
|
|
|
+
|
|
|
+ def action_focus_previous(self) -> None:
|
|
|
+ self._maximized_focus(-1)
|
|
|
+
|
|
|
+ def _maximized_focus(self, direction: int) -> None:
|
|
|
+ if self.screen.maximized is None or self._maximized_input is None:
|
|
|
+ if direction > 0:
|
|
|
+ self.screen.focus_next()
|
|
|
+ else:
|
|
|
+ self.screen.focus_previous()
|
|
|
+ return
|
|
|
+ input_widget = self.query_one(f"#{self._maximized_input}", Input)
|
|
|
+ if self.focused is input_widget:
|
|
|
+ pane = self._maximized_pane_widget()
|
|
|
+ if pane is not None:
|
|
|
+ pane.focus()
|
|
|
+ return
|
|
|
+ input_widget.focus()
|
|
|
|
|
|
def _restore_panes(self) -> None:
|
|
|
self._set_maximized_inputs(None)
|
|
|
@@ -358,7 +392,7 @@ class AssistantTUI(App):
|
|
|
if pane is None:
|
|
|
return
|
|
|
if pane.id == "chat":
|
|
|
- self._set_maximized_inputs("chat")
|
|
|
+ self._set_maximized_inputs("chat-input")
|
|
|
elif pane.id == "output":
|
|
|
self._set_maximized_inputs("command")
|
|
|
else:
|