# `GSSelectableElementProtocol`

*Protocol*

A common interface for positioned objects that can participate in layer editing and selection.

## Declaration

```swift
protocol GSSelectableElementProtocol : NSObjectProtocol
```

```objc
@protocol GSSelectableElementProtocol <NSObject>
```

```python
GSSelectableElementProtocol
```

## Overview

The protocol exposes the selection-relevant subset of [`GSBaseObject`](/Core/GlyphsCore/GSBaseObject) for model objects and transient editing handles that do not inherit from it. It does not store selection state or define how an object is selected.

A common interface for positioned objects that can participate in layer editing and selection.

## Overview

Conforming objects include persistent model elements and transient editing handles. The protocol provides the ownership context, position, and edit-locking state needed by selection and editing APIs, but does not store selection state or define selection behavior.

The *parent* is the object that directly contains the selectable element. The *layer* is the layer in whose coordinate system the element is positioned. Either can be `nil` when the element is detached or has no corresponding context.

## Topics

### Owners

- [`GSSelectableElementProtocol parent`](/Core/GlyphsCore/GSSelectableElementProtocol/parent) — The object that directly contains the receiver, or `nil` when the receiver is detached.
- [`GSSelectableElementProtocol.layer`](/Core/GlyphsCore/GSSelectableElementProtocol/layer) — The layer associated with the object, or `nil` when no layer is available.

### Editing

- [`GSSelectableElementProtocol.position`](/Core/GlyphsCore/GSSelectableElementProtocol/position) — The position in layer coordinates.
- [`GSSelectableElementProtocol.locked`](/Core/GlyphsCore/GSSelectableElementProtocol/locked) — Whether editing operations should leave the object unchanged.

### Related Types

- [`GSSelectableElement`](/Core/GlyphsCore/GSSelectableElement) — An Objective-C object that conforms to [`GSSelectableElementProtocol`](/Core/GlyphsCore/GSSelectableElementProtocol).

## Relationships

### Inherits From

- `NSObject`

### Conforming Types

- [`GSBaseObject`](/Core/GlyphsCore/GSBaseObject)
- [`GSGradientKnob`](/Core/GlyphsCore/GSGradientKnob)
- [`GSHandle`](/Core/GlyphsCore/GSHandle)
- [`GSHobbyKnob`](/Core/GlyphsCore/GSHobbyKnob)
- [`GSNode`](/Core/GlyphsCore/GSNode)
- [`GSPenPoint`](/Core/GlyphsCore/GSPenPoint)

