From ee9390fecd0aca2c535228374b458301532bee02 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sat, 28 Oct 2023 10:42:37 +0300 Subject: [PATCH] Fix Enter key behavior when add new torrent PR #19787. Closes #19760. --- src/gui/properties/propertieswidget.cpp | 1 + src/gui/torrentcontentwidget.cpp | 30 +++++++++++++++++++++---- src/gui/torrentcontentwidget.h | 7 ++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/gui/properties/propertieswidget.cpp b/src/gui/properties/propertieswidget.cpp index 857c47f50..e9f30c095 100644 --- a/src/gui/properties/propertieswidget.cpp +++ b/src/gui/properties/propertieswidget.cpp @@ -82,6 +82,7 @@ PropertiesWidget::PropertiesWidget(QWidget *parent) m_ui->contentFilterLayout->insertWidget(3, m_contentFilterLine); m_ui->filesList->setDoubleClickAction(TorrentContentWidget::DoubleClickAction::Open); + m_ui->filesList->setOpenByEnterKey(true); // SIGNAL/SLOTS connect(m_ui->selectAllButton, &QPushButton::clicked, m_ui->filesList, &TorrentContentWidget::checkAll); diff --git a/src/gui/torrentcontentwidget.cpp b/src/gui/torrentcontentwidget.cpp index 97d4795a8..1b3817408 100644 --- a/src/gui/torrentcontentwidget.cpp +++ b/src/gui/torrentcontentwidget.cpp @@ -89,10 +89,6 @@ TorrentContentWidget::TorrentContentWidget(QWidget *parent) const auto *renameFileHotkey = new QShortcut(Qt::Key_F2, this, nullptr, nullptr, Qt::WidgetShortcut); connect(renameFileHotkey, &QShortcut::activated, this, &TorrentContentWidget::renameSelectedFile); - const auto *openFileHotkeyReturn = new QShortcut(Qt::Key_Return, this, nullptr, nullptr, Qt::WidgetShortcut); - connect(openFileHotkeyReturn, &QShortcut::activated, this, &TorrentContentWidget::openSelectedFile); - const auto *openFileHotkeyEnter = new QShortcut(Qt::Key_Enter, this, nullptr, nullptr, Qt::WidgetShortcut); - connect(openFileHotkeyEnter, &QShortcut::activated, this, &TorrentContentWidget::openSelectedFile); connect(model(), &QAbstractItemModel::modelReset, this, &TorrentContentWidget::expandRecursively); } @@ -118,6 +114,32 @@ void TorrentContentWidget::refresh() setUpdatesEnabled(true); } +bool TorrentContentWidget::openByEnterKey() const +{ + return m_openFileHotkeyEnter; +} + +void TorrentContentWidget::setOpenByEnterKey(const bool value) +{ + if (value == openByEnterKey()) + return; + + if (value) + { + m_openFileHotkeyReturn = new QShortcut(Qt::Key_Return, this, nullptr, nullptr, Qt::WidgetShortcut); + connect(m_openFileHotkeyReturn, &QShortcut::activated, this, &TorrentContentWidget::openSelectedFile); + m_openFileHotkeyEnter = new QShortcut(Qt::Key_Enter, this, nullptr, nullptr, Qt::WidgetShortcut); + connect(m_openFileHotkeyEnter, &QShortcut::activated, this, &TorrentContentWidget::openSelectedFile); + } + else + { + delete m_openFileHotkeyEnter; + m_openFileHotkeyEnter = nullptr; + delete m_openFileHotkeyReturn; + m_openFileHotkeyReturn = nullptr; + } +} + TorrentContentWidget::DoubleClickAction TorrentContentWidget::doubleClickAction() const { return m_doubleClickAction; diff --git a/src/gui/torrentcontentwidget.h b/src/gui/torrentcontentwidget.h index 35620ee42..4baccb883 100644 --- a/src/gui/torrentcontentwidget.h +++ b/src/gui/torrentcontentwidget.h @@ -34,6 +34,8 @@ #include "base/bittorrent/downloadpriority.h" #include "base/pathfwd.h" +class QShortcut; + namespace BitTorrent { class Torrent; @@ -78,6 +80,9 @@ public: BitTorrent::TorrentContentHandler *contentHandler() const; void refresh(); + bool openByEnterKey() const; + void setOpenByEnterKey(bool value); + DoubleClickAction doubleClickAction() const; void setDoubleClickAction(DoubleClickAction action); @@ -118,4 +123,6 @@ private: TorrentContentFilterModel *m_filterModel; DoubleClickAction m_doubleClickAction = DoubleClickAction::Rename; ColumnsVisibilityMode m_columnsVisibilityMode = ColumnsVisibilityMode::Editable; + QShortcut *m_openFileHotkeyEnter = nullptr; + QShortcut *m_openFileHotkeyReturn = nullptr; };