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:
| Appearance | Meaning |
|---|---|
| White square | Move or resize: selection-box corners and edges, arrow endpoints |
| White circle | Rotate: floats above the selection on a dashed connector |
| Gold diamond | Shape parameter: a single named property of the shape (notch depth, cap height, sweep angle) |
| Orange square or circle | Curve control: Bezier control points and spline tangents |
| Yellow square | Waypoint: 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.
| Handle | Where | Drag does | Modifiers |
|---|---|---|---|
| Resize squares | Corners and edges of resizable annotations | Corner scales both axes, edge scales one axis | Shift = lock aspect ratio |
| Rotation circle | Above the box on a dashed connector (most selections) | Rotates around the selection center with a 15 degree snap | Shift = free rotation, Ctrl = also rotate atom labels |
| Shrink-wrap icon | White circle with a fold glyph at the NE corner of a bounded text box | Click 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.
| Handle | Where | Drag does | Modifiers |
|---|---|---|---|
| Endpoint square | White square at each arrow tip; a gold dot inside means the endpoint is anchored | Moves the endpoint. On a bond-anchored endpoint the drag is two-axis: parallel motion slides along the bond, perpendicular motion sets the gap | Anchored: 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 point | Orange square on quadratic and cubic curved arrows | Reshapes the curve through a snap set (perpendicular, flatten, symmetric) | Alt = no snap, Shift+Ctrl = collinear lock |
| Spline tangent | Orange circle pair at each spline waypoint | Sets the tangent direction and length | Plain drag snaps to 15 degree spokes, Shift = sticky perpendicular, Alt = free, Ctrl = smooth (mirror the opposite tangent), Alt+Shift = coplanar lock |
| Waypoint anchor | Yellow square on multi-segment and spline arrows | Moves the waypoint | Shift = 15 degree snap from origin, Alt+click on a spline anchor = smooth handles, Delete = remove waypoint |
| Ghost waypoint dot | Faint circle at a segment midpoint or under the cursor while hovering | Click-drag inserts a new waypoint there; double-click a segment subdivides it | None |
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.
| Shape | Gold diamond controls |
|---|---|
| Star | Inner-point ratio |
| Chevron | Notch depth |
| Block arrows (single, double, curved, U-turn) | Shaft thickness and head length; the curved variant adds curve amount and head width |
| Cube | Depth |
| Cylinder | Cap height |
| Cone | Apex position |
| Cross | Arm thickness |
| Parallelogram | Skew |
| 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.
| Target | Drag does | Modifiers |
|---|---|---|
| Charge, atom number, stereo label | Moves to a custom offset; snaps to the atom label’s edges and center | None |
| Lone-pair and radical dots | Sweeps the angle around the atom with a VSEPR snap preview | Shift = free angle |
| Newman back substituents | Rotates the dihedral with a 60 degree snap and a live angle readout | Shift = 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.