From 70508b0c372c988551d0a522e9d64b278a7c627f Mon Sep 17 00:00:00 2001 From: Lukas W Date: Fri, 14 Nov 2014 15:45:46 +0100 Subject: [PATCH] Don't display 'Help' action in context menus when there's no help text Fixes #1290 --- include/caption_menu.h | 6 ++++++ plugins/vibed/nine_button_selector.cpp | 5 ++--- plugins/vibed/vibed.cpp | 5 ++--- src/gui/widgets/ControllerView.cpp | 6 ++---- src/gui/widgets/EffectView.cpp | 6 ++---- src/gui/widgets/FxLine.cpp | 6 ++---- src/gui/widgets/caption_menu.cpp | 22 ++++++++++++++++++++++ src/gui/widgets/knob.cpp | 5 ++--- src/gui/widgets/tempo_sync_knob.cpp | 6 ++---- 9 files changed, 42 insertions(+), 25 deletions(-) diff --git a/include/caption_menu.h b/include/caption_menu.h index 0f70baadc..8d69e8704 100644 --- a/include/caption_menu.h +++ b/include/caption_menu.h @@ -38,6 +38,12 @@ public: captionMenu( const QString & _title, QWidget * _parent = 0 ); virtual ~captionMenu(); + /// + /// \brief Adds a "Help" action displaying the Menu's parent's WhatsThis + /// text when selected. + /// + void addHelpAction(); + } ; diff --git a/plugins/vibed/nine_button_selector.cpp b/plugins/vibed/nine_button_selector.cpp index a1d80fb9e..b1a1b996f 100644 --- a/plugins/vibed/nine_button_selector.cpp +++ b/plugins/vibed/nine_button_selector.cpp @@ -251,9 +251,8 @@ void nineButtonSelector::updateButton( int _new_button ) void nineButtonSelector::contextMenuEvent( QContextMenuEvent * ) { - captionMenu contextMenu( windowTitle() ); - contextMenu.addAction( embed::getIconPixmap( "help" ), tr( "&Help" ), - this, SLOT( displayHelp() ) ); + captionMenu contextMenu( windowTitle(), this ); + contextMenu.addHelpAction(); contextMenu.exec( QCursor::pos() ); } diff --git a/plugins/vibed/vibed.cpp b/plugins/vibed/vibed.cpp index 4c1eba9cd..f48d2f6ee 100644 --- a/plugins/vibed/vibed.cpp +++ b/plugins/vibed/vibed.cpp @@ -755,9 +755,8 @@ void vibedView::normalizeClicked() void vibedView::contextMenuEvent( QContextMenuEvent * ) { - captionMenu contextMenu( model()->displayName() ); - contextMenu.addAction( embed::getIconPixmap( "help" ), tr( "&Help" ), - this, SLOT( displayHelp() ) ); + captionMenu contextMenu( model()->displayName(), this ); + contextMenu.addHelpAction(); contextMenu.exec( QCursor::pos() ); } diff --git a/src/gui/widgets/ControllerView.cpp b/src/gui/widgets/ControllerView.cpp index 477e18fc7..f6f5160fc 100644 --- a/src/gui/widgets/ControllerView.cpp +++ b/src/gui/widgets/ControllerView.cpp @@ -176,14 +176,12 @@ void ControllerView::modelChanged() void ControllerView::contextMenuEvent( QContextMenuEvent * ) { - QPointer contextMenu = new captionMenu( model()->displayName() ); + QPointer contextMenu = new captionMenu( model()->displayName(), this ); contextMenu->addAction( embed::getIconPixmap( "cancel" ), tr( "&Remove this plugin" ), this, SLOT( deleteController() ) ); contextMenu->addSeparator(); - contextMenu->addAction( embed::getIconPixmap( "help" ), - tr( "&Help" ), - this, SLOT( displayHelp() ) ); + contextMenu->addHelpAction(); contextMenu->exec( QCursor::pos() ); delete contextMenu; } diff --git a/src/gui/widgets/EffectView.cpp b/src/gui/widgets/EffectView.cpp index 25342dbdf..e3035315e 100644 --- a/src/gui/widgets/EffectView.cpp +++ b/src/gui/widgets/EffectView.cpp @@ -245,7 +245,7 @@ void EffectView::closeEffects() void EffectView::contextMenuEvent( QContextMenuEvent * ) { - QPointer contextMenu = new captionMenu( model()->displayName() ); + QPointer contextMenu = new captionMenu( model()->displayName(), this ); contextMenu->addAction( embed::getIconPixmap( "arp_up" ), tr( "Move &up" ), this, SLOT( moveUp() ) ); @@ -257,9 +257,7 @@ void EffectView::contextMenuEvent( QContextMenuEvent * ) tr( "&Remove this plugin" ), this, SLOT( deletePlugin() ) ); contextMenu->addSeparator(); - contextMenu->addAction( embed::getIconPixmap( "help" ), - tr( "&Help" ), - this, SLOT( displayHelp() ) ); + contextMenu->addHelpAction(); contextMenu->exec( QCursor::pos() ); delete contextMenu; } diff --git a/src/gui/widgets/FxLine.cpp b/src/gui/widgets/FxLine.cpp index 7a065d22d..0be3bce78 100644 --- a/src/gui/widgets/FxLine.cpp +++ b/src/gui/widgets/FxLine.cpp @@ -183,7 +183,7 @@ void FxLine::mouseDoubleClickEvent( QMouseEvent * ) void FxLine::contextMenuEvent( QContextMenuEvent * ) { FxMixer * mix = engine::fxMixer(); - QPointer contextMenu = new captionMenu( mix->effectChannel( m_channelIndex )->m_name ); + QPointer contextMenu = new captionMenu( mix->effectChannel( m_channelIndex )->m_name, this ); if( m_channelIndex != 0 ) // no move-options in master { contextMenu->addAction( tr( "Move &left" ), this, SLOT( moveChannelLeft() ) ); @@ -199,9 +199,7 @@ void FxLine::contextMenuEvent( QContextMenuEvent * ) contextMenu->addSeparator(); } - contextMenu->addAction( embed::getIconPixmap( "help" ), - tr( "&Help" ), - this, SLOT( displayHelp() ) ); + contextMenu->addHelpAction(); contextMenu->exec( QCursor::pos() ); delete contextMenu; } diff --git a/src/gui/widgets/caption_menu.cpp b/src/gui/widgets/caption_menu.cpp index db839e8e4..8585bb578 100644 --- a/src/gui/widgets/caption_menu.cpp +++ b/src/gui/widgets/caption_menu.cpp @@ -24,6 +24,7 @@ #include "caption_menu.h" +#include "embed.h" @@ -45,6 +46,27 @@ captionMenu::~captionMenu() +void captionMenu::addHelpAction() +{ + QWidget* parent = (QWidget*) this->parent(); + + if (parent == NULL) + return; + + if (! parent->whatsThis().isEmpty()) { + addAction( embed::getIconPixmap( "help" ), tr( "&Help" ), + parent, SLOT( displayHelp() ) ); + } + else { + QAction* helpAction = new QAction( embed::getIconPixmap("help"), tr("Help (not available)"), NULL); + helpAction->setDisabled(true); + addAction(helpAction); + } +} + + + + #include "moc_caption_menu.cxx" diff --git a/src/gui/widgets/knob.cpp b/src/gui/widgets/knob.cpp index e635cd3af..96b40a22f 100644 --- a/src/gui/widgets/knob.cpp +++ b/src/gui/widgets/knob.cpp @@ -481,11 +481,10 @@ void knob::contextMenuEvent( QContextMenuEvent * ) // an QApplication::restoreOverrideCursor()-call... mouseReleaseEvent( NULL ); - captionMenu contextMenu( model()->displayName() ); + captionMenu contextMenu( model()->displayName(), this ); addDefaultActions( &contextMenu ); contextMenu.addSeparator(); - contextMenu.addAction( embed::getIconPixmap( "help" ), tr( "&Help" ), - this, SLOT( displayHelp() ) ); + contextMenu.addHelpAction(); contextMenu.exec( QCursor::pos() ); } diff --git a/src/gui/widgets/tempo_sync_knob.cpp b/src/gui/widgets/tempo_sync_knob.cpp index 12dd9067a..93979b4b6 100644 --- a/src/gui/widgets/tempo_sync_knob.cpp +++ b/src/gui/widgets/tempo_sync_knob.cpp @@ -83,7 +83,7 @@ void TempoSyncKnob::contextMenuEvent( QContextMenuEvent * ) { mouseReleaseEvent( NULL ); - captionMenu contextMenu( model()->displayName() ); + captionMenu contextMenu( model()->displayName(), this ); addDefaultActions( &contextMenu ); contextMenu.addSeparator(); @@ -147,9 +147,7 @@ void TempoSyncKnob::contextMenuEvent( QContextMenuEvent * ) } - contextMenu.addSeparator(); - contextMenu.addAction( embed::getIconPixmap( "help" ), tr( "&Help" ), - this, SLOT( displayHelp() ) ); + contextMenu.addHelpAction(); contextMenu.exec( QCursor::pos() ); delete syncMenu;