#include "SVTK_ViewModel.h"
#include "SVTK_Selector.h"
#include "SVTK_ViewWindow.h"
-#include "SALOME_Actor.h"
+#include "SVTK_Functor.h"
+#include "SALOME_Actor.h"
#include "SALOME_ListIteratorOfListIO.hxx"
+#include "VTKViewer_Algorithm.h"
+
+#include <vtkRenderer.h>
+
#include "utilities.h"
#ifdef _DEBUG_
SalomeApp_VTKSelector
::SalomeApp_VTKSelector( SVTK_Viewer* viewer,
SUIT_SelectionMgr* mgr ):
- QObject( 0 ),
- SUIT_Selector( mgr ),
+ SUIT_Selector( mgr, viewer ),
myViewer( viewer )
{
if ( myViewer )
TColStd_IndexedMapOfInteger anIds;
aSelector->GetIndex(anIO,anIds);
SALOME_Actor* anActor = aSelector->GetActor(anIO);
+ if( !anActor )
+ anActor = VTK::Find<SALOME_Actor>(aView->getRenderer()->GetActors(),VTK::TIsSameIObject<SALOME_Actor>(anIO));
+
aList.append(new SalomeApp_SVTKDataOwner(anIO,anIds,aMode,anActor));
if(MYDEBUG) MESSAGE("VTKSelector::getSelection - "<<anIO->getEntry());
}
if(const SalomeApp_SVTKDataOwner* anOwner = dynamic_cast<const SalomeApp_SVTKDataOwner*>(aDataOwner)){
aSelector->SetSelectionMode(anOwner->GetMode());
Handle(SALOME_InteractiveObject) anIO = anOwner->IO();
- aSelector->AddIObject(anIO);
+
+ if( anOwner->GetActor() )
+ aSelector->AddIObject( anOwner->GetActor() );
+ else
+ aSelector->AddIObject(anIO);
+
anAppendList.Append(anIO);
aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false);
if(MYDEBUG) MESSAGE("VTKSelector::setSelection - SVTKDataOwner - "<<anIO->getEntry());