diff --git a/src/GafferSceneUI/VisualiserTool.cpp b/src/GafferSceneUI/VisualiserTool.cpp index f1ab691057..303cdcee68 100644 --- a/src/GafferSceneUI/VisualiserTool.cpp +++ b/src/GafferSceneUI/VisualiserTool.cpp @@ -1724,30 +1724,32 @@ RunTimeTypedPtr VisualiserTool::dragBegin( const DragDropEvent &event ) m_initiatedDrag = true; view()->viewportGadget()->renderRequestSignal()( view()->viewportGadget() ); - auto result = std::visit( - []( auto &&value ) -> DataPtr - { - using T = std::decay_t; - if constexpr( - std::is_same_v || - std::is_same_v || - std::is_same_v || - std::is_same_v || - std::is_same_v - ) - { - return new TypedData( value ); - } - return nullptr; - }, - m_valueAtButtonPress - ); + Pointer::setCurrent( "values" ); - assert( result != nullptr ); + DataPtr result; - Pointer::setCurrent( "values" ); + if( std::holds_alternative( m_valueAtButtonPress ) ) + { + return new IntData( std::get( m_valueAtButtonPress ) ); + } + if( std::holds_alternative( m_valueAtButtonPress ) ) + { + return new FloatData( std::get( m_valueAtButtonPress ) ); + } + if( std::holds_alternative( m_valueAtButtonPress ) ) + { + return new V2fData( std::get( m_valueAtButtonPress ) ); + } + if( std::holds_alternative( m_valueAtButtonPress ) ) + { + return new V3fData( std::get( m_valueAtButtonPress ) ); + } + if( std::holds_alternative( m_valueAtButtonPress ) ) + { + return new Color3fData( std::get( m_valueAtButtonPress ) ); + } - return result; + return RunTimeTypedPtr(); } bool VisualiserTool::dragEnd( const DragDropEvent &event )