summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/editexecutablesdialog.cpp27
-rw-r--r--src/editexecutablesdialog.h1
-rw-r--r--src/editexecutablesdialog.ui11
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"/>