diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 1ff376d794..e8984510aa 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -865,16 +865,42 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo ) plblCountryFlag->setToolTip ( strToolTip ); plblCountryFlag->setAccessibleDescription ( strLocationAccessible ); + plblInstrument->setToolTip ( strToolTip ); plblInstrument->setAccessibleDescription ( strInstrumentAccessible ); + plblLabel->setToolTip ( strToolTip ); plblLabel->setAccessibleName ( strAliasAccessible ); plblLabel->setAccessibleDescription ( tr ( "Alias" ) ); + + QFrame* pFrame = dynamic_cast ( plblLabel->parent() ); + + pFrame->setToolTip ( strToolTip ); + pFrame->setAccessibleName ( strAliasAccessible + ", " + strInstrumentAccessible + ", " + strLocationAccessible ); + + CChannelFaderTapAndHoldGestureEventFilter* filter = new CChannelFaderTapAndHoldGestureEventFilter(); + pFrame->installEventFilter ( filter ); + pFrame->grabGesture ( Qt::TapAndHoldGesture, Qt::GestureFlag::DontStartGestureOnChildren | Qt::GestureFlag::IgnoredGesturesPropagateToParent ); + pcbMute->setAccessibleName ( "Mute " + strAliasAccessible + ", " + strInstrumentAccessible ); pcbSolo->setAccessibleName ( "Solo " + strAliasAccessible + ", " + strInstrumentAccessible ); pcbGroup->setAccessibleName ( "Group " + strAliasAccessible + ", " + strInstrumentAccessible ); - dynamic_cast ( plblLabel->parent() ) - ->setAccessibleName ( strAliasAccessible + ", " + strInstrumentAccessible + ", " + strLocationAccessible ); +} + +bool CChannelFaderTapAndHoldGestureEventFilter::eventFilter ( QObject* obj, QEvent* event ) +{ + if ( obj->isWidgetType() && event->type() == QEvent::Gesture && !event->isAccepted() ) + { + QGesture* gesture = ( static_cast ( event ) )->gesture ( Qt::TapAndHoldGesture ); + + if ( gesture != nullptr && gesture->state() == Qt::GestureFinished ) + { + QToolTip::showText ( gesture->hotSpot().toPoint(), ( static_cast ( obj ) )->toolTip() ); + + return true; + } + } + return QObject::eventFilter ( obj, event ); } /******************************************************************************\ diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h index ea4fbf59df..8d5a9fb924 100644 --- a/src/audiomixerboard.h +++ b/src/audiomixerboard.h @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include "global.h" #include "util.h" #include "levelmeter.h" @@ -154,6 +156,13 @@ public slots: void soloStateChanged ( int value ); }; +class CChannelFaderTapAndHoldGestureEventFilter : public QObject +{ + Q_OBJECT +protected: + bool eventFilter ( QObject* obj, QEvent* event ) override; +}; + template class CAudioMixerBoardSlots : public CAudioMixerBoardSlots {