diff --git a/src/calibre/gui2/chat_widget.py b/src/calibre/gui2/chat_widget.py
index 74720e0cd6..64eb599ad2 100644
--- a/src/calibre/gui2/chat_widget.py
+++ b/src/calibre/gui2/chat_widget.py
@@ -122,6 +122,9 @@ class Input(QWidget):
b.clicked.connect(self.send_requested)
l.addWidget(b, alignment=Qt.AlignmentFlag.AlignCenter)
+ def setFocus(self, reason) -> None:
+ self.text_input.setFocus(reason)
+
@property
def value(self) -> str:
return self.text_input.value
@@ -161,6 +164,9 @@ class ChatWidget(QWidget):
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
self.line_spacing = self.browser.fontMetrics().lineSpacing()
+ def setFocus(self, reason) -> None:
+ self.input.setFocus(reason)
+
def wrap_content_in_padding_table(self, html: str, background_color: str = '') -> str:
style = f'style="background-color: {background_color}"' if background_color else ''
return f'''
'''
diff --git a/src/calibre/gui2/dialogs/llm_book.py b/src/calibre/gui2/dialogs/llm_book.py
index 85e2451f28..dcd34d414b 100644
--- a/src/calibre/gui2/dialogs/llm_book.py
+++ b/src/calibre/gui2/dialogs/llm_book.py
@@ -259,7 +259,7 @@ class LLMBookDialog(Dialog):
self.llm.close_requested.connect(self.accept)
l.addWidget(llm)
self.bb.setVisible(False)
- self.llm.result_display.input.text_input.setFocus(Qt.FocusReason.OtherFocusReason)
+ self.llm.result_display.input.setFocus(Qt.FocusReason.OtherFocusReason)
def sizeHint(self):
return QSize(600, 750)
diff --git a/src/calibre/gui2/llm.py b/src/calibre/gui2/llm.py
index 0b1258bc90..6a0d9404ec 100644
--- a/src/calibre/gui2/llm.py
+++ b/src/calibre/gui2/llm.py
@@ -240,6 +240,9 @@ class ConverseWidget(QWidget):
self.show_initial_message()
self.update_cost()
+ def setFocus(self, reason) -> None:
+ self.result_display.input.setFocus(reason)
+
def language_instruction(self):
lang = ui_language_as_english()
return f'If you can speak in {lang}, then respond in {lang}.'