T-572 修复封面画廊方向键焦点

This commit is contained in:
chengma
2026-07-09 15:44:14 +08:00
parent 77e9bf0f5d
commit b88f170b8b
3 changed files with 84 additions and 13 deletions
+51 -1
View File
@@ -2472,7 +2472,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
dialog.candidate_buttons[canonicals[0]].setFocus()
event = QKeyEvent(QKeyEvent.KeyPress, gui.Qt.Key_Down, gui.Qt.NoModifier)
dialog.keyPressEvent(event)
QApplication.sendEvent(dialog.candidate_buttons[canonicals[0]], event)
self.assertTrue(event.isAccepted())
self.assertEqual(tasks[1].id, dialog.task.id)
@@ -2481,6 +2481,56 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_cover_gallery_arrow_keys_switch_when_button_has_focus(self):
with self.make_temp_dir() as temp_dir:
cfg, account, tasks, canonicals, _archives = self._cover_gallery_task_set(temp_dir, count=2)
dialog = CoverGalleryDialog(
tasks[0],
cfg["image_dir"],
cfg["db_path"],
account=account,
visible_tasks=tasks,
task_index=0,
account_by_alias={"alias-a": account},
)
self.addCleanup(dialog.close)
dialog.next_button.setFocus()
event = QKeyEvent(QKeyEvent.KeyPress, gui.Qt.Key_Down, gui.Qt.NoModifier)
QApplication.sendEvent(dialog.next_button, event)
self.assertTrue(event.isAccepted())
self.assertEqual(tasks[1].id, dialog.task.id)
self.assertEqual(canonicals[1], dialog.selected_path)
self.assert_removed(temp_dir)
def test_cover_gallery_arrow_keys_do_not_switch_when_text_input_has_focus(self):
with self.make_temp_dir() as temp_dir:
cfg, account, tasks, _canonicals, _archives = self._cover_gallery_task_set(temp_dir, count=2)
dialog = CoverGalleryDialog(
tasks[0],
cfg["image_dir"],
cfg["db_path"],
account=account,
visible_tasks=tasks,
task_index=0,
account_by_alias={"alias-a": account},
)
self.addCleanup(dialog.close)
input_widget = QLineEdit(dialog)
event = QKeyEvent(QKeyEvent.KeyPress, gui.Qt.Key_Down, gui.Qt.NoModifier)
with mock.patch(
"app.gui.tabs.generate.QApplication.focusWidget",
return_value=input_widget,
):
QApplication.sendEvent(input_widget, event)
self.assertEqual(tasks[0].id, dialog.task.id)
self.assert_removed(temp_dir)
def test_cover_gallery_unsaved_switch_save_discard_and_cancel_paths(self):
with self.make_temp_dir() as temp_dir:
cfg, account, tasks, canonicals, archives = self._cover_gallery_task_set(temp_dir, count=2)