Keybind UI fixes
1. Don't clear the description text cell if selected; clear the actual keybind text instead. 2. Header texts are now correct. 3. Make the keybind dialog model and usable with dark mode
This commit is contained in:
@@ -6,15 +6,15 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the 86Box distribution.
|
* This file is part of the 86Box distribution.
|
||||||
*
|
*
|
||||||
* Device configuration UI code.
|
* Keybind dialog
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Authors: Joakim L. Gilje <jgilje@jgilje.net>
|
* Authors: Cathode Ray Dude
|
||||||
* Cacodemon345
|
* Cacodemon345
|
||||||
*
|
*
|
||||||
* Copyright 2021 Joakim L. Gilje
|
* Copyright 2025 Cathode Ray Dude
|
||||||
* Copyright 2022 Cacodemon345
|
* Copyright 2025 Cacodemon345
|
||||||
*/
|
*/
|
||||||
#include "qt_keybind.hpp"
|
#include "qt_keybind.hpp"
|
||||||
#include "ui_qt_keybind.h"
|
#include "ui_qt_keybind.h"
|
||||||
@@ -85,12 +85,13 @@ bool KeyBinder::eventFilter(QObject *obj, QEvent *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QKeySequence
|
QKeySequence
|
||||||
KeyBinder::BindKey(QString CurValue)
|
KeyBinder::BindKey(QWidget* widget, QString CurValue)
|
||||||
{
|
{
|
||||||
KeyBinder kb;
|
KeyBinder kb(widget);
|
||||||
kb.setWindowTitle("Bind Key");
|
kb.setWindowTitle("Bind Key");
|
||||||
kb.setFixedSize(kb.minimumSizeHint());
|
kb.setFixedSize(kb.minimumSizeHint());
|
||||||
kb.findChild<QKeySequenceEdit*>()->setKeySequence(QKeySequence::fromString(CurValue));
|
kb.findChild<QKeySequenceEdit*>()->setKeySequence(QKeySequence::fromString(CurValue));
|
||||||
|
kb.setEnabled(true);
|
||||||
|
|
||||||
if (kb.exec() == QDialog::Accepted) {
|
if (kb.exec() == QDialog::Accepted) {
|
||||||
QKeySequenceEdit *seq = kb.findChild<QKeySequenceEdit*>();
|
QKeySequenceEdit *seq = kb.findChild<QKeySequenceEdit*>();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
explicit KeyBinder(QWidget *parent = nullptr);
|
explicit KeyBinder(QWidget *parent = nullptr);
|
||||||
~KeyBinder() override;
|
~KeyBinder() override;
|
||||||
|
|
||||||
static QKeySequence BindKey(QString CurValue);
|
static QKeySequence BindKey(QWidget* widget, QString CurValue);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::KeyBinder *ui;
|
Ui::KeyBinder *ui;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ SettingsInput::SettingsInput(QWidget *parent)
|
|||||||
keyTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
keyTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
QStringList headers;
|
QStringList headers;
|
||||||
//headers << "Action" << "Bound key";
|
//headers << "Action" << "Bound key";
|
||||||
keyTable->setHorizontalHeaderLabels(headers);
|
keyTable->setHorizontalHeaderLabels(horizontalHeader);
|
||||||
keyTable->verticalHeader()->setVisible(false);
|
keyTable->verticalHeader()->setVisible(false);
|
||||||
keyTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
keyTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||||
keyTable->setSelectionBehavior(QAbstractItemView::SelectRows);
|
keyTable->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
@@ -201,7 +201,7 @@ SettingsInput::on_tableKeys_doubleClicked(int row, int col)
|
|||||||
QTableWidgetItem *cell = ui->tableKeys->item(row,1);
|
QTableWidgetItem *cell = ui->tableKeys->item(row,1);
|
||||||
if (!cell) return;
|
if (!cell) return;
|
||||||
|
|
||||||
QKeySequence keyseq = KeyBinder::BindKey(cell->text());
|
QKeySequence keyseq = KeyBinder::BindKey(this, cell->text());
|
||||||
if (keyseq != false) {
|
if (keyseq != false) {
|
||||||
// If no change was made, don't change anything.
|
// If no change was made, don't change anything.
|
||||||
if (keyseq.toString(QKeySequence::NativeText) == cell->text()) return;
|
if (keyseq.toString(QKeySequence::NativeText) == cell->text()) return;
|
||||||
@@ -247,7 +247,7 @@ void
|
|||||||
SettingsInput::on_pushButtonClearBind_Clicked()
|
SettingsInput::on_pushButtonClearBind_Clicked()
|
||||||
{
|
{
|
||||||
// Wipe bind
|
// Wipe bind
|
||||||
QTableWidgetItem *cell = ui->tableKeys->currentItem();
|
QTableWidgetItem *cell = ui->tableKeys->item(ui->tableKeys->currentRow(), 1);
|
||||||
if (!cell) return;
|
if (!cell) return;
|
||||||
|
|
||||||
cell->setText("");
|
cell->setText("");
|
||||||
|
|||||||
Reference in New Issue
Block a user