#4892 LinkViews: Avoid using selected views when rightclicking in 3D View

This commit is contained in:
Jacob Støren
2019-10-28 12:51:55 +01:00
parent d5a39ab3aa
commit 26a5b4fbae

View File

@@ -30,6 +30,10 @@
#include "RimViewLinker.h" #include "RimViewLinker.h"
#include "RimViewLinkerCollection.h" #include "RimViewLinkerCollection.h"
#include "RiuViewer.h"
#include "RiuViewerCommands.h"
#include "cafCmdFeatureManager.h"
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
#include <QAction> #include <QAction>
@@ -50,7 +54,9 @@ bool RicLinkViewFeature::isCommandEnabled()
caf::SelectionManager::instance()->objectsByType( &selectedContourMaps ); caf::SelectionManager::instance()->objectsByType( &selectedContourMaps );
size_t selectedRegularGridViews = selectedGridViews.size() - selectedContourMaps.size(); size_t selectedRegularGridViews = selectedGridViews.size() - selectedContourMaps.size();
if ( selectedGridViews.size() > 1u && selectedRegularGridViews >= 1u && auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( !contextViewer && selectedGridViews.size() > 1u && selectedRegularGridViews >= 1u &&
allSelectedItems.size() == selectedGridViews.size() ) allSelectedItems.size() == selectedGridViews.size() )
{ {
return true; return true;
@@ -88,10 +94,12 @@ void RicLinkViewFeature::onActionTriggered( bool isChecked )
std::vector<caf::PdmUiItem*> allSelectedItems; std::vector<caf::PdmUiItem*> allSelectedItems;
std::vector<RimGridView*> selectedGridViews; std::vector<RimGridView*> selectedGridViews;
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
caf::SelectionManager::instance()->selectedItems( allSelectedItems ); caf::SelectionManager::instance()->selectedItems( allSelectedItems );
caf::SelectionManager::instance()->objectsByType( &selectedGridViews ); caf::SelectionManager::instance()->objectsByType( &selectedGridViews );
if ( selectedGridViews.size() > 1u && allSelectedItems.size() == selectedGridViews.size() ) if ( !contextViewer && selectedGridViews.size() > 1u && allSelectedItems.size() == selectedGridViews.size() )
{ {
RicLinkVisibleViewsFeature::linkViews( selectedGridViews ); RicLinkVisibleViewsFeature::linkViews( selectedGridViews );
} }
@@ -113,9 +121,12 @@ void RicLinkViewFeature::onActionTriggered( bool isChecked )
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicLinkViewFeature::setupActionLook( QAction* actionToSetup ) void RicLinkViewFeature::setupActionLook( QAction* actionToSetup )
{ {
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
std::vector<RimGridView*> selectedGridViews; std::vector<RimGridView*> selectedGridViews;
caf::SelectionManager::instance()->objectsByType( &selectedGridViews ); caf::SelectionManager::instance()->objectsByType( &selectedGridViews );
if ( selectedGridViews.size() > 1u )
if (!contextViewer && selectedGridViews.size() > 1u )
{ {
actionToSetup->setText( "Link Selected Views" ); actionToSetup->setText( "Link Selected Views" );
actionToSetup->setIcon( QIcon( ":/LinkView16x16.png" ) ); actionToSetup->setIcon( QIcon( ":/LinkView16x16.png" ) );