Skip to content

Canvas Handles

Selecting an object in Molkit surfaces small draggable handles directly on the canvas. This page catalogs every handle type: what it looks like, where it appears, what dragging it does, and which modifier keys change the behavior. Hovering any handle also shows a native tooltip with the same information.

Visual language

Handle color and shape tell you what a drag will do before you start it:

AppearanceMeaning
White squareMove or resize: selection-box corners and edges, arrow endpoints
White circleRotate: floats above the selection on a dashed connector
Gold diamondShape parameter: a single named property of the shape (notch depth, cap height, sweep angle)
Orange square or circleCurve control: Bezier control points and spline tangents
Yellow squareWaypoint: an anchor on a multi-segment or spline arrow

Modifier keys follow one convention everywhere: Shift switches to a harder or alternate snap (or locks aspect on resizes), Alt disables snapping entirely, and Ctrl re-anchors where re-anchoring applies. Orange curve handles draw at half their true distance from the anchor so they stay reachable on tight curves; the drag math uses the full distance.

Selection box

Most selections draw a bounding box with handles. See Select tool for the selection model itself.

HandleWhereDrag doesModifiers
Resize squaresCorners and edges of resizable annotationsCorner scales both axes, edge scales one axisShift = lock aspect ratio
Rotation circleAbove the box on a dashed connector (most selections)Rotates around the selection center with a 15 degree snapShift = free rotation, Ctrl = also rotate atom labels
Shrink-wrap iconWhite circle with a fold glyph at the NE corner of a bounded text boxClick shrinks the box to fit its text (click only, no drag)Ctrl+double-click any resize handle does the same

The rotation handle is hidden for selections that cannot rotate: empty text boxes, radical annotations, and arrows anchored at both ends. Multi-selections show per-object resize handles plus one shared rotation handle. An auto-sized text box becomes fixed-size the first time you resize it; see Text.

Arrows

Straight and curved arrows carry the densest handle set. Deep behavior lives on Straight arrows and Curved arrows.

HandleWhereDrag doesModifiers
Endpoint squareWhite square at each arrow tip; a gold dot inside means the endpoint is anchoredMoves the endpoint. On a bond-anchored endpoint the drag is two-axis: parallel motion slides along the bond, perpendicular motion sets the gapAnchored: snap to bond midpoint by default, Alt = free, Shift = gap only, Ctrl = re-anchor to a new target. Unanchored straight arrows: 15 degree snap, Shift = 45 degrees
Curve control pointOrange square on quadratic and cubic curved arrowsReshapes the curve through a snap set (perpendicular, flatten, symmetric)Alt = no snap, Shift+Ctrl = collinear lock
Spline tangentOrange circle pair at each spline waypointSets the tangent direction and lengthPlain drag snaps to 15 degree spokes, Shift = sticky perpendicular, Alt = free, Ctrl = smooth (mirror the opposite tangent), Alt+Shift = coplanar lock
Waypoint anchorYellow square on multi-segment and spline arrowsMoves the waypointShift = 15 degree snap from origin, Alt+click on a spline anchor = smooth handles, Delete = remove waypoint
Ghost waypoint dotFaint circle at a segment midpoint or under the cursor while hoveringClick-drag inserts a new waypoint there; double-click a segment subdivides itNone

Endpoint handles track the rendered tip, including any pullback applied near an anchored target, so the handle always sits where the arrow visibly ends. Anchored-tip drags show a live readout of position and gap. Equilibrium, double-harpoon, and retrosynthesis arrows use plain endpoint handles with no extra diamonds.

Shapes

Parameterized shapes show gold diamonds for their adjustable properties. Each diamond is constrained to one axis matching its parameter, and diamonds counter-rotate on rotated shapes so they stay axis-aligned. Double-click any gold diamond to reset that parameter to its default. Numeric control over the same parameters lives in the Shape Properties panel; the full shape list is on Shapes.

ShapeGold diamond controls
StarInner-point ratio
ChevronNotch depth
Block arrows (single, double, curved, U-turn)Shaft thickness and head length; the curved variant adds curve amount and head width
CubeDepth
CylinderCap height
ConeApex position
CrossArm thickness
ParallelogramSkew
Callouts (rectangle, rounded, oval)Pointer tip moves freely in 2D; pointer base slides along the bubble edge
Arc (shape and arc arrow)Two endpoint diamonds sweep the start and end angle around the center

Orbitals

A selected orbital lobe shows gold diamonds for lobe length, lobe width, and center gap (s orbitals show only the length diamond), plus a white rotation circle past the lobe tip that rotates the orbital around its atom. Double-click an orbital parameter handle to reset it. See Orbital tool.

Images

Double-click a selected raster image (or use its Crop button) to enter crop mode, which shows eight rotation-aware crop handles on the image corners and edges. The crop updates live with a 5 percent minimum visible region, and each handle drag is one undo step.

While dragging, handles snap to auto-detected content edges: Molkit scans the image for where actual content stops (a whitespace trim) and snaps the crop to those edges. Hold Shift to disable content-edge snap; on a corner handle Shift also locks the aspect ratio. Exit with Enter, Esc, or a click outside. See Imports.

Decorations and projections

Some adjustments have no visible handle chrome: you drag the decoration itself.

TargetDrag doesModifiers
Charge, atom number, stereo labelMoves to a custom offset; snaps to the atom label’s edges and centerNone
Lone-pair and radical dotsSweeps the angle around the atom with a VSEPR snap previewShift = free angle
Newman back substituentsRotates the dihedral with a 60 degree snap and a live angle readoutShift = free

See Newman projections for the projection model.

Animation frames

Animation state frames carry eight resize handles plus a draggable header. Resizing changes the frame bounds; dragging the header moves the frame together with its contents. Shift+drag the header to clone the frame. Double-clicking a frame header enters animation mode at that state. See Animation states.

See also