From 45050709f289603ed76b6a25d111ea411c1d647a Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 22 Mar 2020 00:49:55 +1000 Subject: [PATCH] Qt: Add support for clearing input bindings with right click --- src/duckstation-qt/inputbindingwidgets.cpp | 20 ++++++++++++++++++++ src/duckstation-qt/inputbindingwidgets.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/duckstation-qt/inputbindingwidgets.cpp b/src/duckstation-qt/inputbindingwidgets.cpp index 166ee3330..453a02502 100644 --- a/src/duckstation-qt/inputbindingwidgets.cpp +++ b/src/duckstation-qt/inputbindingwidgets.cpp @@ -4,6 +4,7 @@ #include "qthostinterface.h" #include "qtutils.h" #include +#include #include #include @@ -34,6 +35,17 @@ bool InputBindingWidget::eventFilter(QObject* watched, QEvent* event) return false; } +void InputBindingWidget::mouseReleaseEvent(QMouseEvent* e) +{ + if (e->button() == Qt::RightButton) + { + clearBinding(); + return; + } + + QPushButton::mouseReleaseEvent(e); +} + void InputBindingWidget::setNewBinding() { if (m_new_binding_value.isEmpty()) @@ -46,6 +58,14 @@ void InputBindingWidget::setNewBinding() m_new_binding_value.clear(); } +void InputBindingWidget::clearBinding() +{ + m_current_binding_value.clear(); + m_host_interface->removeSettingValue(m_setting_name); + m_host_interface->updateInputMap(); + setText(m_current_binding_value); +} + void InputBindingWidget::onPressed() { if (isListeningForInput()) diff --git a/src/duckstation-qt/inputbindingwidgets.h b/src/duckstation-qt/inputbindingwidgets.h index 865bad197..a6c7f8015 100644 --- a/src/duckstation-qt/inputbindingwidgets.h +++ b/src/duckstation-qt/inputbindingwidgets.h @@ -16,6 +16,7 @@ public: protected: virtual bool eventFilter(QObject* watched, QEvent* event) override; + virtual void mouseReleaseEvent(QMouseEvent* e) override; protected Q_SLOTS: void onPressed(); @@ -27,6 +28,7 @@ protected: bool isListeningForInput() const { return m_input_listen_timer != nullptr; } void setNewBinding(); + void clearBinding(); QtHostInterface* m_host_interface; QString m_setting_name;