From 70508b0c372c988551d0a522e9d64b278a7c627f Mon Sep 17 00:00:00 2001 From: Lukas W Date: Fri, 14 Nov 2014 15:45:46 +0100 Subject: [PATCH 1/2] 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; From 9005dc39ca0c1bf2cff0d8ad9edb9930a8a48d09 Mon Sep 17 00:00:00 2001 From: Lukas W Date: Sat, 15 Nov 2014 17:46:07 +0100 Subject: [PATCH 2/2] Caption menu style fix --- data/themes/default/style.css | 2 -- src/gui/widgets/caption_menu.cpp | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/data/themes/default/style.css b/data/themes/default/style.css index 1598264b9..005cc579d 100644 --- a/data/themes/default/style.css +++ b/data/themes/default/style.css @@ -83,13 +83,11 @@ QMenu::item:selected { color: white; font-weight:bold; background-color: #747474; - margin:3px; } QMenu::item:disabled { color: #747474; background-color: #c9c9c9; - margin:0px; font-size:12px; font-weight: normal; padding: 4px 32px 4px 20px; diff --git a/src/gui/widgets/caption_menu.cpp b/src/gui/widgets/caption_menu.cpp index 8585bb578..e239dc9e7 100644 --- a/src/gui/widgets/caption_menu.cpp +++ b/src/gui/widgets/caption_menu.cpp @@ -58,9 +58,8 @@ void captionMenu::addHelpAction() parent, SLOT( displayHelp() ) ); } else { - QAction* helpAction = new QAction( embed::getIconPixmap("help"), tr("Help (not available)"), NULL); + QAction* helpAction = addAction( embed::getIconPixmap("help"), tr("Help (not available)") ); helpAction->setDisabled(true); - addAction(helpAction); } }