Switch focus to results view when a search starts

This commit is contained in:
Kovid Goyal 2022-06-09 10:14:55 +05:30
parent eba1b4f05e
commit b6f0ff41bf
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -236,7 +236,7 @@ class ResultsModel(QAbstractItemModel):
if item is None: if item is None:
return 0 return 0
if isinstance(item, Results): if isinstance(item, Results):
return Qt.ItemFlag.ItemIsEnabled return Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
return Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemNeverHasChildren return Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemNeverHasChildren
def data_for_book(self, item, role): def data_for_book(self, item, role):
@ -265,12 +265,16 @@ class ResultsView(QTreeView):
self.m = ResultsModel(self) self.m = ResultsModel(self)
self.m.search_complete.connect(self.search_complete) self.m.search_complete.connect(self.search_complete)
self.m.search_started.connect(self.search_started) self.m.search_started.connect(self.search_started)
self.m.search_started.connect(self.focus_self)
self.m.query_failed.connect(self.query_failed, type=Qt.ConnectionType.QueuedConnection) self.m.query_failed.connect(self.query_failed, type=Qt.ConnectionType.QueuedConnection)
self.m.matches_found.connect(self.matches_found) self.m.matches_found.connect(self.matches_found)
self.setModel(self.m) self.setModel(self.m)
self.delegate = SearchDelegate(self) self.delegate = SearchDelegate(self)
self.setItemDelegate(self.delegate) self.setItemDelegate(self.delegate)
def focus_self(self):
self.setFocus(Qt.FocusReason.OtherFocusReason)
def query_failed(self, query, err_msg): def query_failed(self, query, err_msg):
error_dialog(self, _('Invalid search query'), _( error_dialog(self, _('Invalid search query'), _(
'The search query: {query} was not understood. See <a href="{fts_url}">here</a> for details on the' 'The search query: {query} was not understood. See <a href="{fts_url}">here</a> for details on the'