diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-10-08 19:55:44 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-10-08 19:55:44 -0400 |
| commit | de48d430eca4042f48be461fe5dc70d7e75d5596 (patch) | |
| tree | bb8c617ff5e5e6c43f1531718f610f27dbf533a9 /src | |
| parent | 0ea975248b8cdb8319d3a366616f8d852726f83c (diff) | |
fixed tab order
fixed list items being selected, but not focused, which broke keyboard nav
Diffstat (limited to 'src')
| -rw-r--r-- | src/editexecutablesdialog.cpp | 27 | ||||
| -rw-r--r-- | src/editexecutablesdialog.h | 1 | ||||
| -rw-r--r-- | src/editexecutablesdialog.ui | 11 |
3 files changed, 30 insertions, 9 deletions
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp index b56fdc41..b58531e5 100644 --- a/src/editexecutablesdialog.cpp +++ b/src/editexecutablesdialog.cpp @@ -81,7 +81,7 @@ EditExecutablesDialog::EditExecutablesDialog(OrganizerCore& oc, int sel, QWidget setDirty(false); if (sel >= 0 && sel < ui->list->count()) { - ui->list->item(sel)->setSelected(true); + selectIndex(sel); } auto* m = new QMenu; @@ -205,6 +205,14 @@ void EditExecutablesDialog::setDirty(bool b) } } +void EditExecutablesDialog::selectIndex(int i) +{ + if (i >= 0 && i < ui->list->count()) { + ui->list->selectionModel()->setCurrentIndex( + ui->list->model()->index(i, 0), QItemSelectionModel::ClearAndSelect); + } +} + QListWidgetItem* EditExecutablesDialog::selectedItem() { const auto selection = ui->list->selectedItems(); @@ -243,7 +251,7 @@ void EditExecutablesDialog::fillList() // select the first one in the list, if any if (ui->list->count() > 0) { - ui->list->item(0)->setSelected(true); + selectIndex(0); } else { updateUI(nullptr, nullptr); } @@ -459,13 +467,14 @@ void EditExecutablesDialog::move(QListWidgetItem* item, int direction) return; } - const auto row = ui->list->row(item); + const auto oldRow = ui->list->row(item); + const auto newRow = oldRow + (direction > 0 ? 1 : -1); // removing item - ui->list->takeItem(row); - ui->list->insertItem(row + (direction > 0 ? 1 : -1), item); - item->setSelected(true); + ui->list->takeItem(oldRow); + ui->list->insertItem(newRow, item); + selectIndex(newRow); setDirty(true); } @@ -530,10 +539,10 @@ void EditExecutablesDialog::on_remove_clicked() if (currentRow >= ui->list->count()) { // that was the last item, select the new list item, if any if (ui->list->count() > 0) { - ui->list->item(ui->list->count() - 1)->setSelected(true); + selectIndex(ui->list->count() - 1); } } else { - ui->list->item(currentRow)->setSelected(true); + selectIndex(currentRow); } setDirty(true); @@ -689,8 +698,8 @@ void EditExecutablesDialog::addNew(Executable e) auto* item = createListItem(e); ui->list->addItem(item); - item->setSelected(true); + selectIndex(ui->list->count() - 1); setDirty(true); } diff --git a/src/editexecutablesdialog.h b/src/editexecutablesdialog.h index 949aff66..c8be0bf6 100644 --- a/src/editexecutablesdialog.h +++ b/src/editexecutablesdialog.h @@ -227,6 +227,7 @@ private: bool isTitleConflicting(const QString& s);
void commitChanges();
void setDirty(bool b);
+ void selectIndex(int i);
void addFromFile();
void addEmpty();
diff --git a/src/editexecutablesdialog.ui b/src/editexecutablesdialog.ui index 64d5140d..5f7fee09 100644 --- a/src/editexecutablesdialog.ui +++ b/src/editexecutablesdialog.ui @@ -478,14 +478,25 @@ Right now the only case I know of where this needs to be overwritten is for the </layout>
</widget>
<tabstops>
+ <tabstop>add</tabstop>
+ <tabstop>remove</tabstop>
+ <tabstop>up</tabstop>
+ <tabstop>down</tabstop>
+ <tabstop>reset</tabstop>
+ <tabstop>list</tabstop>
+ <tabstop>title</tabstop>
<tabstop>binary</tabstop>
<tabstop>browseBinary</tabstop>
<tabstop>workingDirectory</tabstop>
<tabstop>browseWorkingDirectory</tabstop>
+ <tabstop>arguments</tabstop>
<tabstop>overwriteSteamAppID</tabstop>
<tabstop>steamAppID</tabstop>
<tabstop>createFilesInMod</tabstop>
<tabstop>mods</tabstop>
+ <tabstop>forceLoadLibraries</tabstop>
+ <tabstop>configureLibraries</tabstop>
+ <tabstop>useApplicationIcon</tabstop>
</tabstops>
<resources>
<include location="resources.qrc"/>
|
