summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-31 22:39:50 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:18 +0100
commit5d82e9cfeced490060f9c4544ba1ea1ca623c42c (patch)
tree6dbaceb42dd0e325c29e7e7ce1f34db7c01223a3 /src
parentb5ce6eb8e7ba67f15dcffe0639d7012088c53ebe (diff)
Add shift+enter shortcut to expand rows in mod list.
Diffstat (limited to 'src')
-rw-r--r--src/modlistview.cpp42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/modlistview.cpp b/src/modlistview.cpp
index 22a673d1..f23e84fe 100644
--- a/src/modlistview.cpp
+++ b/src/modlistview.cpp
@@ -964,23 +964,45 @@ void ModListView::timerEvent(QTimerEvent* event)
bool ModListView::event(QEvent* event)
{
- if (event->type() == QEvent::KeyPress) {
+ if (event->type() == QEvent::KeyPress
+ && m_core->currentProfile()
+ && selectionModel()->hasSelection()) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
- if (keyEvent->modifiers() == Qt::ControlModifier
- && (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter)) {
- if (selectionModel()->hasSelection() && selectionModel()->selectedRows().count() == 1) {
- m_actions->openExplorer({ indexViewToModel(selectionModel()->currentIndex()) });
- return true;
+ auto index = selectionModel()->currentIndex();
+
+ if (keyEvent->modifiers() == Qt::ControlModifier) {
+ // ctrl+enter open explorer
+ if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) {
+ if (selectionModel()->selectedRows().count() == 1) {
+ m_actions->openExplorer({ indexViewToModel(index) });
+ return true;
+ }
}
- }
- else if (m_core->currentProfile()) {
- if (keyEvent->modifiers() == Qt::ControlModifier
+ // ctrl+up/down move selection
+ else if (keyEvent->modifiers() == Qt::ControlModifier
&& sortColumn() == ModList::COL_PRIORITY
&& (keyEvent->key() == Qt::Key_Up || keyEvent->key() == Qt::Key_Down)) {
return moveSelection(keyEvent->key());
}
- else if (keyEvent->key() == Qt::Key_Delete) {
+ }
+ else if (keyEvent->modifiers() == Qt::ShiftModifier) {
+ // shift+enter expand
+ if ((keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter)
+ && selectionModel()->selectedRows().count() == 1) {
+ if (model()->hasChildren(index)) {
+ setExpanded(index, !isExpanded(index));
+ }
+ else if (index.parent().isValid()) {
+ setExpanded(index.parent(), false);
+ selectionModel()->select(index.parent(),
+ QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
+ setCurrentIndex(index.parent());
+ }
+ }
+ }
+ else {
+ if (keyEvent->key() == Qt::Key_Delete) {
return removeSelection();
}
else if (keyEvent->key() == Qt::Key_Space) {