Open Inventor Reference
SoSelection Class Reference

Manages a list of selected objects. More...

#include <Inventor/nodes/SoSelection.h>

Inheritance diagram for SoSelection:
SoSeparator SoGroup SoNode SoFieldContainer SoBase

Public Types

enum  Policy { SINGLE , TOGGLE , SHIFT }
 Default selection policy is SoSelection::SHIFT. More...
 
- Public Types inherited from SoSeparator
enum  CacheEnabled { OFF , ON , AUTO }
 Possible values for caching. More...
 
- Public Types inherited from SoNode
enum  Stage { FIRST_INSTANCE , PROTO_INSTANCE , OTHER_INSTANCE }
 

Public Member Functions

 SoSelection ()
 Creates a selection node with the default settings. More...
 
 SoSelection (int nChildren)
 Constructor that specifies the approximate number of children. More...
 
- Public Member Functions inherited from SoSeparator
 SoSeparator ()
 Creates a separator node with default settings. More...
 
 SoSeparator (int nChildren)
 Constructor that takes approximate number of children. More...
 
virtual bool affectsState () const
 Overrides default method on SoNode. More...
 
virtual void doAction (SoAction *action)
 Implement actions. More...
 
virtual void callback (SoCallbackAction *action)
 
virtual void getBoundingBox (SoGetBoundingBoxAction *action)
 
virtual void getMatrix (SoGetMatrixAction *action)
 
virtual void GLRender (SoGLRenderAction *action)
 These virtual functions implement all of the actions for nodes, Most of the default implementations do nothing. More...
 
virtual void rayPick (SoRayPickAction *action)
 
virtual void search (SoSearchAction *action)
 
virtual void GLRenderBelowPath (SoGLRenderAction *action)
 These methods make render traversal faster by implementing different rendering paths corresponding to different action path codes. More...
 
virtual void GLRenderInPath (SoGLRenderAction *action)
 
virtual void GLRenderOffPath (SoGLRenderAction *action)
 
virtual void notify (SoNotList *list)
 Propagates modification notification through an instance. More...
 
- Public Member Functions inherited from SoGroup
 SoGroup ()
 Creates an empty group node. More...
 
 SoGroup (int nChildren)
 Constructor that takes approximate number of children. More...
 
void addChild (SoNode *child)
 Adds a child as last one in group. More...
 
void insertChild (SoNode *child, int newChildIndex)
 Adds a child so that it becomes the one with the given index. More...
 
SoNodegetChild (int index) const
 Returns pointer to child node with the given index. More...
 
int findChild (const SoNode *child) const
 Finds index of given child within group. Returns -1 if not found. More...
 
int getNumChildren () const
 Returns number of children. More...
 
void removeChild (int index)
 Removes child with given index from group. More...
 
void removeChild (SoNode *child)
 Removes first instance of given child from group. More...
 
void removeAllChildren ()
 Removes all children from group. More...
 
void replaceChild (int index, SoNode *newChild)
 Replaces child with given index with new child. More...
 
void replaceChild (SoNode *oldChild, SoNode *newChild)
 Replaces first instance of given child with new child. More...
 
virtual void pick (SoPickAction *action)
 
virtual void write (SoWriteAction *action)
 
virtual SoChildListgetChildren () const
 Returns pointer to children. More...
 
- Public Member Functions inherited from SoNode
void setOverride (bool state)
 Turns override flag on or off. More...
 
bool isOverride () const
 Returns the state of the override flag. More...
 
SoNodecopy (bool copyConnections=FALSE) const
 Creates and returns an exact copy of the node. More...
 
virtual void grabEventsSetup ()
 These virtual functions are called when a node gains or loses status as "grabber" of events (see HandleEventAction::setGrabber()). More...
 
virtual void grabEventsCleanup ()
 
virtual void startNotify ()
 Initiates notification from an instance. More...
 
SbNodeIdType getNodeId () const
 Returns the unique id for a node. More...
 
virtual void writeInstance (SoOutput *out)
 Writes instance to SoOutput. (Used for either stage of writing.) More...
 
virtual SoNodeaddToCopyDict () const
 Recursively adds this node and all nodes under it to the copy dictionary. More...
 
virtual SoFieldContainercopyThroughConnection () const
 Copies an instance that is encountered through a field connection. More...
 
- Public Member Functions inherited from SoFieldContainer
void setToDefaults ()
 Sets all fields in this object to their default values. More...
 
bool hasDefaultValues () const
 Returns TRUE if all of the object's fields have their default values. More...
 
bool fieldsAreEqual (const SoFieldContainer *fc) const
 Returns TRUE if this object's fields are exactly equal to fc's fields. More...
 
void copyFieldValues (const SoFieldContainer *fc, bool copyConnections=FALSE)
 Copies the contents of fc's fields into this object's fields. More...
 
bool set (const char *fieldDataString)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Inventor file format. More...
 
void get (SbString &fieldDataString)
 Returns the values of the fields of this object in the Inventor ASCII file format in the given string. More...
 
virtual int getFields (SoFieldList &list) const
 Appends pointers to all of this object's fields to resultList, and returns the number of fields appended. More...
 
virtual SoFieldgetField (const SbName &fieldName) const
 Returns a pointer to the field with the given name. More...
 
bool getFieldName (const SoField *field, SbName &fieldName) const
 Returns the name of the given field in the fieldName argument. More...
 
bool enableNotify (bool flag)
 Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE). More...
 
bool isNotifyEnabled () const
 Notification is the process of telling interested objects that this object has changed. More...
 
bool set (const char *fieldDataString, SoInput *dictIn)
 Sets one or more fields in this object to the values specified in the given string, which should be a string in the Inventor file format. More...
 
void get (SbString &fieldDataString, SoOutput *dictOut)
 Returns the values of the fields of this object in the Inventor ASCII file format in the given string. More...
 
virtual void addWriteReference (SoOutput *out, bool isFromField=FALSE)
 Adds a reference to the instance when writing. More...
 
bool getIsBuiltIn () const
 Returns whether or not instance is considered 'built-in' to the library. More...
 
virtual const SoFieldDatagetFieldData () const
 Returns an SoFieldData structure for the node. More...
 
void addManagedSensor (SoSensor *sensor)
 Adds a sensor which is managed by the field container. More...
 
- Public Member Functions inherited from SoBase
void ref () const
 Adds and removes a reference to an instance. More...
 
void unref () const
 
void unrefNoDelete () const
 
void touch ()
 Marks an instance as modified, simulating a change to it. More...
 
virtual SoType getTypeId () const =0
 Returns the type identifier for a specific instance. More...
 
bool isOfType (SoType type) const
 Returns TRUE if this object is of the type specified in type or is derived from that type. More...
 
virtual SbName getName () const
 Returns the name of an instance. More...
 
virtual void setName (const SbName &name)
 Sets the name of an instance. More...
 
void addAuditor (void *auditor, SoNotRec::Type type)
 Adds/removes an auditor to/from list. More...
 
void removeAuditor (void *auditor, SoNotRec::Type type)
 
const SoAuditorListgetAuditors ()
 Returns auditor list– used by SoField and SoEngineOutput to trace forward connections. More...
 
int getRefCount () const
 Returns current reference count. More...
 
bool shouldWrite ()
 Returns TRUE if the instance should be written, based on the write-reference info already accumulated. More...
 

Fields

SoSFEnum policy
 Selection policy that is followed in response to user interaction. More...
 
SoSFBool selectOnlyOnClick
 If on, only perform selection on a single click, and not after the mouse has been dragged from the initial mouse down position. More...
 
SoPathList selectionList
 List of paths of selected objects. More...
 
SoCallbackListselCBList
 Selection callback lists. More...
 
SoCallbackListdeselCBList
 
SoCallbackListstartCBList
 
SoCallbackListfinishCBList
 
SoSelectionPickCBpickCBFunc
 Pick filter is a single callback function, not a list. More...
 
void * pickCBData
 
bool callPickCBOnlyIfSelectable
 
SoCallbackListchangeCBList
 Change callbacks. More...
 
SoPathmouseDownPickPath
 Mouse down picked path. More...
 
bool pickMatching
 
bool abortSelection
 
SbVec2s mouseDownPosition
 
void select (const SoPath *path)
 Select the passed path by adding it to the selection list. More...
 
void select (SoNode *node)
 Select the passed node by creating a path to it, and adding the path to the selection list by calling select(path). More...
 
void deselect (const SoPath *path)
 Deselect the passed path by removing it from the selection list. More...
 
void deselect (int which)
 Deselect a path by removing it from the selection list. More...
 
void deselect (SoNode *node)
 Deselect the passed node by creating a path to it, and removing the node from the selection list by calling deselect(path). More...
 
void toggle (const SoPath *path)
 Toggle the selection status of the passed path em if the path is in the selection list, it is removed; if not in the list, it is added. More...
 
void toggle (SoNode *node)
 Toggle the selection status of the passed node by creating a path to it, then calling toggle(path). More...
 
bool isSelected (const SoPath *path) const
 returns TRUE if the path is selected More...
 
bool isSelected (SoNode *node) const
 This convenience version of deselect will search for the first instance of the passed node under this selection node, and return whether that path is selected. More...
 
void deselectAll ()
 Deselect all paths in the selection list, that is, clear the list. More...
 
int getNumSelected () const
 Return the number of paths in the selection list. More...
 
const SoPathListgetList () const
 Return the list of selected paths. More...
 
SoPathgetPath (int index) const
 Return the ith path in the selection list. More...
 
SoPathoperator[] (int i) const
 [] indexes into the selection list More...
 
void addSelectionCallback (SoSelectionPathCB *f, void *userData=NULL)
 The selection callbacks are invoked every time an object is selected, whether it be from user interaction or from method call. More...
 
void removeSelectionCallback (SoSelectionPathCB *f, void *userData=NULL)
 Remove selection callback. More...
 
void addDeselectionCallback (SoSelectionPathCB *f, void *userData=NULL)
 The deselection callbacks are invoked every time an object is deselected, whether it be from user interaction or from method call. More...
 
void removeDeselectionCallback (SoSelectionPathCB *f, void *userData=NULL)
 Remove deselection callback. More...
 
void addStartCallback (SoSelectionClassCB *f, void *userData=NULL)
 The start callbacks are invoked when the user has initiated an interactive change to the selection list (by picking objects). More...
 
void removeStartCallback (SoSelectionClassCB *f, void *userData=NULL)
 Remove the start callback. More...
 
void addFinishCallback (SoSelectionClassCB *f, void *userData=NULL)
 The finish callbacks are invoked when the user has finished interactively changing the selection list (by picking objects). More...
 
void removeFinishCallback (SoSelectionClassCB *f, void *userData=NULL)
 Remove finish callback. More...
 
void setPickFilterCallback (SoSelectionPickCB *f, void *userData=NULL, bool callOnlyIfSelectable=TRUE)
 The pick filter callback is invoked when a pick has occurred and the selection node is about to change the selection list. More...
 
void setPickMatching (bool pickTwice)
 SoSelection will pick once on mouse down and once on mouse up, and make sure the picks match before changing the selection list. More...
 
bool isPickMatching () const
 Returns if pick matching is on. More...
 
bool getPickMatching () const
 Returns if pick matching is on. More...
 
void addChangeCallback (SoSelectionClassCB *f, void *userData=NULL)
 Selection notify callbacks - invoked whenever the selection changes. More...
 
void removeChangeCallback (SoSelectionClassCB *f, void *userData=NULL)
 
static void initClass ()
 Internal: More...
 
void invokeSelectionPolicy (SoPath *path, bool shiftDown)
 Selection policies (shiftSelection is a combination of these) invokeSelectionPolicy() is called from handleEvent() - for a customized selection policy, either derive a class and write a new handleEvent() method, or use an SoEventCallback node placed such that it receives events before the selection node. More...
 
void performSingleSelection (SoPath *path)
 
void performToggleSelection (SoPath *path)
 
SoPathcopyFromThis (const SoPath *path) const
 This copies the path so the copy is rooted by 'this'. More...
 
SoPathgetPickedPath (const SoPickedPoint *pickedPoint)
 Get path from picked point, calls callbacks. More...
 
void addPath (SoPath *path)
 addPath() assumes the path is rooted by 'this' More...
 
void removePath (int which)
 
int findPath (const SoPath *path) const
 This locates path in the selection list. More...
 
virtual void handleEvent (SoHandleEventAction *action)
 Traversal routine for SoHandleEventAction - this will call action->setHandled() if the event is handled. More...
 
 ~SoSelection ()
 Destructor removes everything from the list. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from SoSeparator
static void setNumRenderCaches (int howMany)
 By default, each separator node maintains 2 render caches. More...
 
static int getNumRenderCaches ()
 Returns the current number of render caches. More...
 
static void initClass ()
 
- Static Public Member Functions inherited from SoGroup
static void initClass ()
 
- Static Public Member Functions inherited from SoNode
static SoType getClassTypeId ()
 Returns type identifier for the SoNode class. More...
 
static SoNodegetByName (const SbName &name)
 Returns the last node given the specified name. More...
 
static int getByName (const SbName &name, SoNodeList &list)
 Returns the number of nodes with the given name, and adds to list pointers to those nodes. More...
 
static void initClass ()
 Initializes base node class. More...
 
static void initClasses ()
 Initialize ALL Inventor node classes. More...
 
static SbNodeIdType getNextNodeId ()
 Returns the next available unique id. More...
 
static int getActionMethodIndex (SoType t)
 Returns the index of this node in the action/method table, given its type. More...
 
- Static Public Member Functions inherited from SoFieldContainer
static SoType getClassTypeId ()
 Returns the type of this class. More...
 
static void initClass ()
 Setup type information. More...
 
static void initCopyDict ()
 During a copy operation, copies of nodes and engines are stored in a dictionary, keyed by the original node or engine pointer, so that copies can be re-used. More...
 
static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)
 Adds an instance to the dictionary. More...
 
static SoFieldContainercheckCopy (const SoFieldContainer *orig)
 If a copy of the given instance is in the dictionary, this returns it. More...
 
static SoFieldContainerfindCopy (const SoFieldContainer *orig, bool copyConnections)
 If a copy of the given instance is not in the dictionary, this returns NULL. More...
 
static void copyDone ()
 Cleans up the dictionary when done. More...
 
- Static Public Member Functions inherited from SoBase
static SoType getClassTypeId ()
 Returns type identifier for this class. More...
 
static void initClass ()
 Setup type information. More...
 
static void incrementCurrentWriteCounter ()
 Increments the current write counter at the start of a write operation. More...
 
static void decrementCurrentWriteCounter ()
 Decrements the current write counter after a write operation, in some rare cases. More...
 
static void addName (SoBase *, const char *)
 Internal methods used to maintain the global name dictionary. More...
 
static void removeName (SoBase *, const char *)
 
static SoBasegetNamedBase (const SbName &, SoType)
 Helper routines used to get stuff out of nameDict. More...
 
static int getNamedBases (const SbName &, SoBaseList &, SoType)
 
static bool read (SoInput *in, SoBase *&base, SoType expectedType)
 Reads one instance of some subclass of SoBase. More...
 
static void setInstancePrefix (const SbString &c)
 This defaults to "+" and is used when naming nodes that are DEF's and USE'd. More...
 
- Public Attributes inherited from SoSeparator
SoSFEnum renderCaching
 Whether to cache during rendering traversal. More...
 
SoSFEnum boundingBoxCaching
 Whether to cache during bounding box traversal. More...
 
SoSFEnum renderCulling
 Whether to cull during rendering traversal. More...
 
SoSFEnum pickCulling
 Whether to cull during picking traversal. More...
 
- Static Public Attributes inherited from SoBase
static bool traceRefs
 Turns on/off reference count tracing (for debugging) More...
 
- Protected Types inherited from SoBase
enum  BaseFlags { IS_ENGINE = 1 , IS_GROUP = 2 }
 This set of enums is used when reading and writing the base. More...
 
- Protected Member Functions inherited from SoSeparator
virtual bool cullTest (SoGLRenderAction *action, int &cullResults)
 Returns TRUE if this separator can be culled because it is outside the cull volume. More...
 
virtual bool readInstance (SoInput *in, unsigned short flags)
 Reads stuff into instance of SoGroup. Returns FALSE on error. More...
 
virtual ~SoSeparator ()
 
- Protected Member Functions inherited from SoGroup
virtual bool readChildren (SoInput *in)
 Reads just the children into instance of SoGroup. Returns FALSE on error. More...
 
virtual ~SoGroup ()
 
virtual void copyContents (const SoFieldContainer *fromFC, bool copyConnections)
 Copies the contents of the given node into this instance. More...
 
- Protected Member Functions inherited from SoNode
 SoNode ()
 Constructor, destructor. More...
 
virtual ~SoNode ()
 
- Protected Member Functions inherited from SoFieldContainer
 SoFieldContainer ()
 
 ~SoFieldContainer ()
 
- Protected Member Functions inherited from SoBase
 SoBase ()
 Constructor is protected - this is an abstract class. More...
 
virtual ~SoBase ()
 Virtual destructor so that subclasses are deleted properly. More...
 
virtual void destroy ()
 Actually deletes an instance. More...
 
bool hasMultipleWriteRefs () const
 Returns TRUE if the instance has multiple write references. More...
 
bool writeHeader (SoOutput *out, bool isGroup, bool isEngine) const
 Writes a header (name, open brace) or footer (close brace) to file defined by SoOutput. More...
 
void writeFooter (SoOutput *out) const
 
virtual const char * getFileFormatName () const
 Unknown nodes and engines write a different name for themselves than their typeId; this virtual method lets them do that (by default the typeId name is returned) More...
 
- Static Protected Member Functions inherited from SoNode
static const SoFieldData ** getFieldDataPtr ()
 This is used by the field-inheritence mechanism, hidden in the SoSubNode macros. More...
 
- Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter ()
 Returns current write counter. More...
 
- Protected Attributes inherited from SoGroup
SoChildListchildren
 
- Protected Attributes inherited from SoNode
SbNodeIdType uniqueId
 Unique id for this node. More...
 
- Protected Attributes inherited from SoFieldContainer
bool isBuiltIn
 Is the subclass a built-in Inventor subclass or an extender subclass? This is used to determine whether to read/write field type information. More...
 
- Static Protected Attributes inherited from SoNode
static SbNodeIdType nextUniqueId
 Next available unique id. More...
 
static int nextActionMethodIndex
 Next index into the action method table. More...
 

Detailed Description

SoSelection defines a node which can be inserted into a scene graph and will generate and manage a selection list from picks on any node in the subgraph below it. Nodes are selected based on a current selection policy. Callback functions report back to the application when a path has been selected or deselected. The selection list can also be managed programmatically.

When handling events, SoSelection makes sure that the mouse release event was over the same object as the mouse press event before changing the list of selected objects. This allows users to mouse down on an object, change their mind and move the cursor off the object, then release the mouse button without altering the selection.

The selection can be highlighted automatically through the SoQtRenderArea, or the application can provide custom highlights. Please see the chapter "Creating a Selection Highlight Style" in the Inventor Toolmaker.

File Format/Default
Selection {
}
SoSFEnum policy
Selection policy that is followed in response to user interaction.
Definition: SoSelection.h:166
@ SHIFT
when shift key is down, selection policy is TOGGLE.
Definition: SoSelection.h:157
SoSFEnum boundingBoxCaching
Whether to cache during bounding box traversal.
Definition: SoSeparator.h:138
@ AUTO
Decide based on some heuristic.
Definition: SoSeparator.h:128
SoSFEnum renderCaching
Whether to cache during rendering traversal.
Definition: SoSeparator.h:135
SoSFEnum renderCulling
Whether to cull during rendering traversal.
Definition: SoSeparator.h:141
SoSFEnum pickCulling
Whether to cull during picking traversal.
Definition: SoSeparator.h:144
See Also
SoEventCallback, SoQtRenderArea, SoBoxHighlightRenderAction, SoLineHighlightRenderAction

Definition at line 126 of file SoSelection.h.

Member Enumeration Documentation

◆ Policy

Selection policy

Enumerator
SINGLE 

left mouse pick on object clears selection, then selects object.

left mouse pick on nothing clears selection. only one object may be selected at a time.

TOGGLE 

left mouse pick on object toggles its selection status.

left mouse pick on nothing does nothing. multiple objects may be selected.

SHIFT 

when shift key is down, selection policy is TOGGLE.

when shift key is up, selection policy is SINGLE. multiple objects may be selected.

Definition at line 143 of file SoSelection.h.

Constructor & Destructor Documentation

◆ SoSelection() [1/2]

SoSelection::SoSelection ( )

◆ SoSelection() [2/2]

SoSelection::SoSelection ( int  nChildren)

◆ ~SoSelection()

SoSelection::~SoSelection ( )
protected

Member Function Documentation

◆ addChangeCallback()

void SoSelection::addChangeCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

Used by the render area to redraw for selection highlighting.

◆ addDeselectionCallback()

void SoSelection::addDeselectionCallback ( SoSelectionPathCB f,
void *  userData = NULL 
)

This is invoked after the object has been removed from the selection list.

◆ addFinishCallback()

void SoSelection::addFinishCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

This was preceded by an invocation of each start callback, and invocations of the select and/or deselect callbacks. The finish callbacks are not called when the selection list is changed programmatically.

◆ addPath()

void SoSelection::addPath ( SoPath path)
protected

◆ addSelectionCallback()

void SoSelection::addSelectionCallback ( SoSelectionPathCB f,
void *  userData = NULL 
)

The callbacks are invoked after the object has been added to the selection list.

◆ addStartCallback()

void SoSelection::addStartCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

This will be followed by invocations of the select and/or deselect callbacks, finally followed by each finish callback. A start callback can be used, for instance, to save the current selection for later restoration (e.g. undo/redo). The start callbacks are not called when the selection list is changed programmatically.

◆ copyFromThis()

SoPath* SoSelection::copyFromThis ( const SoPath path) const
protected

Returns NULL if 'this' not found in the passed path.

◆ deselect() [1/3]

void SoSelection::deselect ( const SoPath path)

◆ deselect() [2/3]

void SoSelection::deselect ( int  which)

The argument which specifies which path in the list to be removed.

◆ deselect() [3/3]

void SoSelection::deselect ( SoNode node)

If there is more than one instance of node beneath the selection node, the created path will be the first instance found.

◆ deselectAll()

void SoSelection::deselectAll ( )

◆ findPath()

int SoSelection::findPath ( const SoPath path) const
protected

The head of this path does not necessarily have to be 'this'.

◆ getList()

const SoPathList* SoSelection::getList ( ) const
inline

Definition at line 227 of file SoSelection.h.

◆ getNumSelected()

int SoSelection::getNumSelected ( ) const
inline

Definition at line 225 of file SoSelection.h.

◆ getPath()

SoPath* SoSelection::getPath ( int  index) const

◆ getPickedPath()

SoPath* SoSelection::getPickedPath ( const SoPickedPoint pickedPoint)
protected

◆ getPickMatching()

bool SoSelection::getPickMatching ( ) const
inline

Definition at line 337 of file SoSelection.h.

◆ handleEvent()

virtual void SoSelection::handleEvent ( SoHandleEventAction action)
protectedvirtual

Reimplemented from SoSeparator.

◆ initClass()

static void SoSelection::initClass ( )
static

◆ invokeSelectionPolicy()

void SoSelection::invokeSelectionPolicy ( SoPath path,
bool  shiftDown 
)
protected

◆ isPickMatching()

bool SoSelection::isPickMatching ( ) const
inline

Definition at line 335 of file SoSelection.h.

◆ isSelected() [1/2]

bool SoSelection::isSelected ( const SoPath path) const

◆ isSelected() [2/2]

bool SoSelection::isSelected ( SoNode node) const

◆ operator[]()

SoPath* SoSelection::operator[] ( int  i) const
inline

Definition at line 232 of file SoSelection.h.

◆ performSingleSelection()

void SoSelection::performSingleSelection ( SoPath path)
protected

◆ performToggleSelection()

void SoSelection::performToggleSelection ( SoPath path)
protected

◆ removeChangeCallback()

void SoSelection::removeChangeCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

◆ removeDeselectionCallback()

void SoSelection::removeDeselectionCallback ( SoSelectionPathCB f,
void *  userData = NULL 
)

◆ removeFinishCallback()

void SoSelection::removeFinishCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

◆ removePath()

void SoSelection::removePath ( int  which)
protected

◆ removeSelectionCallback()

void SoSelection::removeSelectionCallback ( SoSelectionPathCB f,
void *  userData = NULL 
)

◆ removeStartCallback()

void SoSelection::removeStartCallback ( SoSelectionClassCB f,
void *  userData = NULL 
)

◆ select() [1/2]

void SoSelection::select ( const SoPath path)

The selection node must lie in the path. The path is copied and truncated such that the selection node is the head of the path. If the selection node does not lie in the path, the selection list remains unchanged. This method ignores the current selection policy.

◆ select() [2/2]

void SoSelection::select ( SoNode node)

If there is more than one instance of node beneath the selection node, the created path will be the first instance found.

◆ setPickFilterCallback()

void SoSelection::setPickFilterCallback ( SoSelectionPickCB f,
void *  userData = NULL,
bool  callOnlyIfSelectable = TRUE 
)

The callback function returns the path that the selection node should use when selecting and deselecting. If no pick callback is registered (the default), the selection node will use the path returned by SoPickedPoint::getPath() on the picked point associated with the event being processed. The returned path should not be ref'd - selection will ref() and unref() it. (See SoPath::unrefNoDelete().)

Note that a picked object may or may not be a child of the selection node. A selection node will only select paths that pass through it. Possible return values from the callback:

[a] NULL em selection behaves as if nothing was picked (i.e. for SINGLE and SHIFT policies, this clears the selection list). Handle event action traversal halts.

[b] Path em this path will be selected/deselected according to the selection policy (it must lie under the selection node). Handle event action traversal halts.

[c] Path containing only the selection node em apply the selection policy as if nothing was picked. Handle event action traversal continues.

[d] Path not passing through the selection node em selection ignores this pick event and no change is made to the selection list. Handle event action traversal continues.

A simple way to tell selection to ignore the pick is to return an SoPath with no nodes in it. (i.e. return new SoPath;) Selection will always ref the path returned by the callback, make a copy of the path, then unref the path.

The callOnlyIfSelectable argument, when set to TRUE, means the pick callback function will only be invoked on picks which pass through the selection node. When FALSE, all picks will be passed to the callback whether they pass through the selection or not.

◆ setPickMatching()

void SoSelection::setPickMatching ( bool  pickTwice)
inline

This allows the user to pick down on an object, change their mind and drag off the object, release the mouse button and not affect the selection. Pass TRUE to enable this behavior. Pass FALSE to disable this, meaning whatever is picked on a mouse release is added to/removed from the selection list. Default is pick-matching on.

Definition at line 333 of file SoSelection.h.

◆ toggle() [1/2]

void SoSelection::toggle ( const SoPath path)

◆ toggle() [2/2]

void SoSelection::toggle ( SoNode node)

If there is more than one instance of node beneath the selection node, the created path will be the first instance found.

Member Data Documentation

◆ abortSelection

bool SoSelection::abortSelection
protected

Definition at line 370 of file SoSelection.h.

◆ callPickCBOnlyIfSelectable

bool SoSelection::callPickCBOnlyIfSelectable
protected

Definition at line 361 of file SoSelection.h.

◆ changeCBList

SoCallbackList* SoSelection::changeCBList
protected

Definition at line 364 of file SoSelection.h.

◆ deselCBList

SoCallbackList* SoSelection::deselCBList
protected

Definition at line 354 of file SoSelection.h.

◆ finishCBList

SoCallbackList* SoSelection::finishCBList
protected

Definition at line 356 of file SoSelection.h.

◆ mouseDownPickPath

SoPath* SoSelection::mouseDownPickPath
protected

Definition at line 367 of file SoSelection.h.

◆ mouseDownPosition

SbVec2s SoSelection::mouseDownPosition
protected

Definition at line 372 of file SoSelection.h.

◆ pickCBData

void* SoSelection::pickCBData
protected

Definition at line 360 of file SoSelection.h.

◆ pickCBFunc

SoSelectionPickCB* SoSelection::pickCBFunc
protected

Definition at line 359 of file SoSelection.h.

◆ pickMatching

bool SoSelection::pickMatching
protected

Definition at line 368 of file SoSelection.h.

◆ policy

SoSFEnum SoSelection::policy

This can be set to SoSelection::SINGLE, SoSelection::TOGGLE, or SoSelection::SHIFT.

Definition at line 166 of file SoSelection.h.

◆ selCBList

SoCallbackList* SoSelection::selCBList
protected

Definition at line 353 of file SoSelection.h.

◆ selectionList

SoPathList SoSelection::selectionList
protected

Definition at line 350 of file SoSelection.h.

◆ selectOnlyOnClick

SoSFBool SoSelection::selectOnlyOnClick

This serves a similar purpose as pickMatching, but mixes better with other interactions.

Definition at line 171 of file SoSelection.h.

◆ startCBList

SoCallbackList* SoSelection::startCBList
protected

Definition at line 355 of file SoSelection.h.


The documentation for this class was generated from the following file: