From 4585a07673bdd532cc42d8a2368f339018545fd4 Mon Sep 17 00:00:00 2001 From: SecondFlight Date: Sun, 13 May 2018 17:15:32 -0400 Subject: [PATCH] Allow renaming of FX mixer channels with the F2 and enter keys. (#4348) * Add f2 as a FX mixer rename shortcut. Enter doesn't work yet. * Add both enter keys, remove code duplication * Fix renaming with enter/return * Clean up --- include/FxLine.h | 5 ++++- include/FxMixerView.h | 2 ++ src/gui/FxMixerView.cpp | 11 +++++++++++ src/gui/widgets/FxLine.cpp | 19 +++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/include/FxLine.h b/include/FxLine.h index 46490044f..5bb04da2f 100644 --- a/include/FxLine.h +++ b/include/FxLine.h @@ -79,6 +79,10 @@ public: static const int FxLineHeight; + void renameChannel(); + + bool eventFilter (QObject *dist, QEvent *event); + private: void drawFxLine( QPainter* p, const FxLine *fxLine, bool isActive, bool sendToThis, bool receiveFromThis ); QString elideName( const QString & name ); @@ -98,7 +102,6 @@ private: QGraphicsView * m_view; private slots: - void renameChannel(); void renameFinished(); void removeChannel(); void removeUnusedChannels(); diff --git a/include/FxMixerView.h b/include/FxMixerView.h index 973195bb3..30c759838 100644 --- a/include/FxMixerView.h +++ b/include/FxMixerView.h @@ -100,6 +100,8 @@ public: void moveChannelLeft(int index, int focusIndex); void moveChannelRight(int index); + void renameChannel(int index); + // make sure the display syncs up with the fx mixer. // useful for loading projects void refreshDisplay(); diff --git a/src/gui/FxMixerView.cpp b/src/gui/FxMixerView.cpp index 8da1cb4e0..cbcfd0a47 100644 --- a/src/gui/FxMixerView.cpp +++ b/src/gui/FxMixerView.cpp @@ -491,6 +491,12 @@ void FxMixerView::moveChannelRight(int index) } +void FxMixerView::renameChannel(int index) +{ + m_fxChannelViews[index]->m_fxLine->renameChannel(); +} + + void FxMixerView::keyPressEvent(QKeyEvent * e) { @@ -527,6 +533,11 @@ void FxMixerView::keyPressEvent(QKeyEvent * e) addNewChannel(); } break; + case Qt::Key_Enter: + case Qt::Key_Return: + case Qt::Key_F2: + renameChannel( m_currentFxLine->channelIndex() ); + break; } } diff --git a/src/gui/widgets/FxLine.cpp b/src/gui/widgets/FxLine.cpp index c6e6fd9ae..309ef6a1c 100644 --- a/src/gui/widgets/FxLine.cpp +++ b/src/gui/widgets/FxLine.cpp @@ -34,6 +34,24 @@ #include "GuiApplication.h" #include "Song.h" +bool FxLine::eventFilter( QObject *dist, QEvent *event ) +{ + // If we are in a rename, capture the enter/return events and handle them + if ( event->type() == QEvent::KeyPress ) + { + QKeyEvent * keyEvent = static_cast(event); + if( keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return ) + { + if( m_inRename ) + { + renameFinished(); + event->accept(); // Stop the event from propagating + return true; + } + } + } + return false; +} const int FxLine::FxLineHeight = 287; QPixmap * FxLine::s_sendBgArrow = NULL; @@ -100,6 +118,7 @@ FxLine::FxLine( QWidget * _parent, FxMixerView * _mv, int _channelIndex ) : m_renameLineEdit->setFixedWidth( 65 ); m_renameLineEdit->setFont( pointSizeF( font(), 7.5f ) ); m_renameLineEdit->setReadOnly( true ); + m_renameLineEdit->installEventFilter( this ); QGraphicsScene * scene = new QGraphicsScene(); scene->setSceneRect( 0, 0, 33, FxLineHeight );