Allow arrow key movement, fix auto-focus
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
parent
c343036d3b
commit
a2d0d5a71d
@ -1,8 +1,11 @@
|
|||||||
#include "VersionSelectWidget.h"
|
#include "VersionSelectWidget.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QEvent>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QKeyEvent>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QHeaderView>
|
|
||||||
|
|
||||||
#include "VersionProxyModel.h"
|
#include "VersionProxyModel.h"
|
||||||
|
|
||||||
@ -45,6 +48,7 @@ VersionSelectWidget::VersionSelectWidget(bool focusSearch, QWidget* parent)
|
|||||||
} else
|
} else
|
||||||
listView->scrollTo(listView->selectionModel()->currentIndex(), QAbstractItemView::PositionAtCenter);
|
listView->scrollTo(listView->selectionModel()->currentIndex(), QAbstractItemView::PositionAtCenter);
|
||||||
});
|
});
|
||||||
|
search->installEventFilter(this);
|
||||||
|
|
||||||
sneakyProgressBar = new QProgressBar(this);
|
sneakyProgressBar = new QProgressBar(this);
|
||||||
sneakyProgressBar->setObjectName(QStringLiteral("sneakyProgressBar"));
|
sneakyProgressBar->setObjectName(QStringLiteral("sneakyProgressBar"));
|
||||||
@ -88,6 +92,23 @@ void VersionSelectWidget::setResizeOn(int column)
|
|||||||
listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch);
|
listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VersionSelectWidget::eventFilter(QObject *watched, QEvent *event) {
|
||||||
|
if (watched == search && event->type() == QEvent::KeyPress) {
|
||||||
|
const QKeyEvent* keyEvent = (QKeyEvent*)event;
|
||||||
|
const bool up = keyEvent->key() == Qt::Key_Up;
|
||||||
|
const bool down = keyEvent->key() == Qt::Key_Down;
|
||||||
|
if (up || down) {
|
||||||
|
const QModelIndex index = listView->model()->index(listView->currentIndex().row() + (up ? -1 : 1), 0);
|
||||||
|
if (index.row() >= 0 && index.row() < listView->model()->rowCount()) {
|
||||||
|
listView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return QObject::eventFilter(watched, event);
|
||||||
|
}
|
||||||
|
|
||||||
void VersionSelectWidget::initialize(BaseVersionList *vlist)
|
void VersionSelectWidget::initialize(BaseVersionList *vlist)
|
||||||
{
|
{
|
||||||
m_vlist = vlist;
|
m_vlist = vlist;
|
||||||
@ -95,6 +116,9 @@ void VersionSelectWidget::initialize(BaseVersionList *vlist)
|
|||||||
listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||||
listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch);
|
listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
if (focusSearch)
|
||||||
|
search->setFocus();
|
||||||
|
|
||||||
if (!m_vlist->isLoaded())
|
if (!m_vlist->isLoaded())
|
||||||
{
|
{
|
||||||
loadList();
|
loadList();
|
||||||
@ -105,8 +129,6 @@ void VersionSelectWidget::initialize(BaseVersionList *vlist)
|
|||||||
{
|
{
|
||||||
listView->setEmptyMode(VersionListView::String);
|
listView->setEmptyMode(VersionListView::String);
|
||||||
}
|
}
|
||||||
search->setFocus();
|
|
||||||
focusSearch = false;
|
|
||||||
preselect();
|
preselect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,7 +163,6 @@ void VersionSelectWidget::onTaskSucceeded()
|
|||||||
listView->setEmptyMode(VersionListView::String);
|
listView->setEmptyMode(VersionListView::String);
|
||||||
}
|
}
|
||||||
sneakyProgressBar->setHidden(true);
|
sneakyProgressBar->setHidden(true);
|
||||||
|
|
||||||
preselect();
|
preselect();
|
||||||
loadTask = nullptr;
|
loadTask = nullptr;
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,7 @@ public:
|
|||||||
void setEmptyErrorString(QString emptyErrorString);
|
void setEmptyErrorString(QString emptyErrorString);
|
||||||
void setEmptyMode(VersionListView::EmptyMode mode);
|
void setEmptyMode(VersionListView::EmptyMode mode);
|
||||||
void setResizeOn(int column);
|
void setResizeOn(int column);
|
||||||
|
bool eventFilter(QObject* watched, QEvent* event) override;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void selectedVersionChanged(BaseVersion::Ptr version);
|
void selectedVersionChanged(BaseVersion::Ptr version);
|
||||||
|
Loading…
Reference in New Issue
Block a user