diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp
index b102c34724..c707dfca20 100644
--- a/src/clientdlg.cpp
+++ b/src/clientdlg.cpp
@@ -104,11 +104,13 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
lbrInputLevelL->setAccessibleName ( strInpLevHAccText );
lbrInputLevelL->setAccessibleDescription ( strInpLevHAccDescr );
lbrInputLevelL->setToolTip ( strInpLevHTT );
+ lbrInputLevelL->installEventFilter ( this ); // install event filter for tooltips
lbrInputLevelL->setEnabled ( false );
lbrInputLevelR->setWhatsThis ( strInpLevH );
lbrInputLevelR->setAccessibleName ( strInpLevHAccText );
lbrInputLevelR->setAccessibleDescription ( strInpLevHAccDescr );
lbrInputLevelR->setToolTip ( strInpLevHTT );
+ lbrInputLevelR->installEventFilter ( this ); // install event filter for tooltips
lbrInputLevelR->setEnabled ( false );
// connect/disconnect button
@@ -173,6 +175,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"you will not have much fun using %1." )
.arg ( APP_NAME ) +
TOOLTIP_COM_END_TEXT );
+ ledDelay->installEventFilter ( this ); // install event filter for tooltips
ledDelay->setAccessibleName ( tr ( "Delay status LED indicator" ) );
@@ -204,6 +207,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
ledBuffers->setToolTip ( tr ( "If this LED indicator turns red, "
"the audio stream is interrupted." ) +
TOOLTIP_COM_END_TEXT );
+ ledBuffers->installEventFilter ( this ); // install event filter for tooltips
ledBuffers->setAccessibleName ( tr ( "Local Jitter Buffer status LED indicator" ) );
@@ -1558,3 +1562,15 @@ void CClientDlg::OnMIDIControllerUsageChanged ( bool bEnabled )
// Enable/disable runtime MIDI via the sound interface through the public CClient interface
pClient->EnableMIDI ( bEnabled );
}
+
+bool CClientDlg::eventFilter ( QObject* obj, QEvent* event )
+{
+ if ( event->type() == QEvent::ToolTip )
+ {
+ // return true to suppress tooltip, false to allow it
+ return !pSettings->bShowToolTips;
+ }
+
+ // continue with normal processing for other events
+ return QObject::eventFilter ( obj, event );
+}
diff --git a/src/clientdlg.h b/src/clientdlg.h
index 6a34cc66f0..c54f4328a1 100644
--- a/src/clientdlg.h
+++ b/src/clientdlg.h
@@ -142,6 +142,8 @@ class CClientDlg : public CBaseDlg, private Ui_CClientDlgBase
virtual void dropEvent ( QDropEvent* Event ) { ManageDragNDrop ( Event, false ); }
void UpdateDisplay();
+ bool eventFilter ( QObject* obj, QEvent* event );
+
CClientSettingsDlg ClientSettingsDlg;
CChatDlg ChatDlg;
CConnectDlg ConnectDlg;
diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp
index ad92a0f8e1..e045dbbb23 100644
--- a/src/clientsettingsdlg.cpp
+++ b/src/clientsettingsdlg.cpp
@@ -129,16 +129,21 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
lblNetBuf->setWhatsThis ( strJitterBufferSize );
lblNetBuf->setToolTip ( strJitterBufferSizeTT );
+ lblNetBuf->installEventFilter ( this ); // install event filter for tooltips
grbJitterBuffer->setWhatsThis ( strJitterBufferSize );
grbJitterBuffer->setToolTip ( strJitterBufferSizeTT );
+ grbJitterBuffer->installEventFilter ( this ); // install event filter for tooltips
sldNetBuf->setWhatsThis ( strJitterBufferSize );
sldNetBuf->setAccessibleName ( tr ( "Local jitter buffer slider control" ) );
sldNetBuf->setToolTip ( strJitterBufferSizeTT );
+ sldNetBuf->installEventFilter ( this ); // install event filter for tooltips
sldNetBufServer->setWhatsThis ( strJitterBufferSize );
sldNetBufServer->setAccessibleName ( tr ( "Server jitter buffer slider control" ) );
sldNetBufServer->setToolTip ( strJitterBufferSizeTT );
+ sldNetBufServer->installEventFilter ( this ); // install event filter for tooltips
chbAutoJitBuf->setAccessibleName ( tr ( "Auto jitter buffer check box" ) );
chbAutoJitBuf->setToolTip ( strJitterBufferSizeTT );
+ chbAutoJitBuf->installEventFilter ( this ); // install event filter for tooltips
#if !defined( WITH_JACK )
// sound card device
@@ -166,6 +171,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
"driver, make sure to connect the ASIO inputs in the kX DSP settings "
"panel." ) +
TOOLTIP_COM_END_TEXT );
+ cbxSoundcard->installEventFilter ( this ); // install event filter for tooltips
# endif
// sound card input/output channel mapping
@@ -272,17 +278,21 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
rbtBufferDelayPreferred->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelayPreferred->setAccessibleName ( tr ( "64 samples setting radio button" ) );
rbtBufferDelayPreferred->setToolTip ( strSndCrdBufDelayTT );
+ rbtBufferDelayPreferred->installEventFilter ( this ); // install event filter for tooltips
rbtBufferDelayDefault->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelayDefault->setAccessibleName ( tr ( "128 samples setting radio button" ) );
rbtBufferDelayDefault->setToolTip ( strSndCrdBufDelayTT );
+ rbtBufferDelayDefault->installEventFilter ( this ); // install event filter for tooltips
rbtBufferDelaySafe->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelaySafe->setAccessibleName ( tr ( "256 samples setting radio button" ) );
rbtBufferDelaySafe->setToolTip ( strSndCrdBufDelayTT );
+ rbtBufferDelaySafe->installEventFilter ( this ); // install event filter for tooltips
#if defined( _WIN32 ) && !defined( WITH_JACK )
butDriverSetup->setWhatsThis ( strSndCardDriverSetup );
butDriverSetup->setAccessibleName ( tr ( "ASIO Device Settings push button" ) );
butDriverSetup->setToolTip ( strSndCardDriverSetupTT );
+ butDriverSetup->installEventFilter ( this ); // install event filter for tooltips
#endif
// fancy skin
@@ -477,6 +487,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
butLearnSoloOffset->setAccessibleName ( tr ( "Solo offset MIDI learn button" ) );
butLearnMuteOffset->setAccessibleName ( tr ( "Mute offset MIDI learn button" ) );
+ // show tooltips
+ chbShowToolTips->setWhatsThis ( "" + tr ( "Show tool tips" ) + ": " +
+ tr ( "Enable or disable the showing of tool tips when the mouse points to certain items." ) );
+ chbShowToolTips->setAccessibleName ( tr ( "Show tool tips check box" ) );
+
// init driver button
#if defined( _WIN32 ) && !defined( WITH_JACK )
butDriverSetup->setText ( tr ( "ASIO Device Settings" ) );
@@ -561,6 +576,9 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
// init audio alerts
chbAudioAlerts->setCheckState ( pSettings->bEnableAudioAlerts ? Qt::Checked : Qt::Unchecked );
+ // init show tooltips
+ chbShowToolTips->setCheckState ( pSettings->bShowToolTips ? Qt::Checked : Qt::Unchecked );
+
// update feedback detection
chbDetectFeedback->setCheckState ( pSettings->bEnableFeedbackDetection ? Qt::Checked : Qt::Unchecked );
@@ -726,6 +744,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
QObject::connect ( chbAudioAlerts, &QCheckBox::stateChanged, this, &CClientSettingsDlg::OnAudioAlertsChanged );
+ QObject::connect ( chbShowToolTips, &QCheckBox::stateChanged, this, &CClientSettingsDlg::OnShowToolTipsChanged );
+
// line edits
QObject::connect ( edtNewClientLevel, &QLineEdit::editingFinished, this, &CClientSettingsDlg::OnNewClientLevelEditingFinished );
@@ -1036,6 +1056,12 @@ void CClientSettingsDlg::showEvent ( QShowEvent* event )
bool CClientSettingsDlg::eventFilter ( QObject* obj, QEvent* event )
{
+ if ( event->type() == QEvent::ToolTip )
+ {
+ // return true to suppress tooltip, false to allow it
+ return !pSettings->bShowToolTips;
+ }
+
// Refresh MIDI device list when user clicks on the dropdown
if ( obj == cbxMidiDevice )
{
@@ -1275,6 +1301,8 @@ void CClientSettingsDlg::OnMeterStyleActivated ( int iMeterStyleIdx )
void CClientSettingsDlg::OnAudioAlertsChanged ( int value ) { pSettings->bEnableAudioAlerts = value == Qt::Checked; }
+void CClientSettingsDlg::OnShowToolTipsChanged ( int value ) { pSettings->bShowToolTips = value == Qt::Checked; }
+
void CClientSettingsDlg::OnAutoJitBufStateChanged ( int value )
{
pClient->SetDoAutoSockBufSize ( value == Qt::Checked );
diff --git a/src/clientsettingsdlg.h b/src/clientsettingsdlg.h
index 7844f64117..9d6b4e541e 100644
--- a/src/clientsettingsdlg.h
+++ b/src/clientsettingsdlg.h
@@ -120,6 +120,7 @@ public slots:
void OnGUIDesignActivated ( int iDesignIdx );
void OnMeterStyleActivated ( int iMeterStyleIdx );
void OnAudioAlertsChanged ( int value );
+ void OnShowToolTipsChanged ( int value );
void OnLanguageChanged ( QString strLanguage ) { pSettings->strLanguage = strLanguage; }
void OnAliasTextChanged ( const QString& strNewName );
void OnInstrumentActivated ( int iCntryListItem );
@@ -140,6 +141,7 @@ public slots:
void GUIDesignChanged();
void MeterStyleChanged();
void AudioAlertsChanged();
+ void ShowToolTipsChanged();
void AudioChannelsChanged();
void CustomDirectoriesChanged();
void NumMixerPanelRowsChanged ( int value );
diff --git a/src/clientsettingsdlgbase.ui b/src/clientsettingsdlgbase.ui
index 842ab9220c..19f39d3a9b 100644
--- a/src/clientsettingsdlgbase.ui
+++ b/src/clientsettingsdlgbase.ui
@@ -276,6 +276,13 @@
+ -
+
+
+
+
+
+
-
@@ -322,6 +329,13 @@
+ -
+
+
+ Show tool tips
+
+
+
@@ -2266,6 +2280,7 @@
cbxLanguage
spnMixerRows
chbAudioAlerts
+ chbShowToolTips
cbxSoundcard
butDriverSetup
cbxLInChan
diff --git a/src/settings.cpp b/src/settings.cpp
index bdc453913e..05f03ebcbd 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -460,6 +460,12 @@ void CClientSettings::ReadSettingsFromXML ( const QDomDocument& IniXMLDocument,
bEnableAudioAlerts = bValue;
}
+ // show tooltips
+ if ( GetFlagIniSet ( IniXMLDocument, "client", "showtooltips", bValue ) )
+ {
+ bShowToolTips = bValue;
+ }
+
// name
pClient->ChannelInfo.strName = FromBase64ToString (
GetIniSetting ( IniXMLDocument, "client", "name_base64", ToBase64 ( QCoreApplication::translate ( "CMusProfDlg", "No Name" ) ) ) );
@@ -927,6 +933,9 @@ void CClientSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool is
// audio alerts
SetFlagIniSet ( IniXMLDocument, "client", "enableaudioalerts", bEnableAudioAlerts );
+ // show tooltips
+ SetFlagIniSet ( IniXMLDocument, "client", "showtooltips", bShowToolTips );
+
// name
PutIniSetting ( IniXMLDocument, "client", "name_base64", ToBase64 ( pClient->ChannelInfo.strName ) );
diff --git a/src/settings.h b/src/settings.h
index 4086a217fa..e0b4adb14e 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -179,6 +179,7 @@ class CClientSettings : public CSettings
eDirectoryType ( AT_DEFAULT ),
bEnableFeedbackDetection ( true ),
bEnableAudioAlerts ( false ),
+ bShowToolTips ( true ),
vecWindowPosSettings(), // empty array
vecWindowPosChat(), // empty array
vecWindowPosConnect(), // empty array
@@ -252,6 +253,7 @@ class CClientSettings : public CSettings
int iCustomDirectoryIndex; // index of selected custom directory
bool bEnableFeedbackDetection;
bool bEnableAudioAlerts;
+ bool bShowToolTips;
// window position/state settings
QByteArray vecWindowPosSettings;