The ProtoShare editor supports a lot of keyboard modifiers to speed up your work. You can review all of the ProtoShare Keyboard Shortcuts to learn more. One of the most useful is the Shift key. Holding the shift key while clicking on components allows you to select (or unselect) several components at once. With multiple components selected, you can change all of their settings at once.
But the shift key does even more — if you hold it while resizing a component, the component will keep its aspect ratio (16×9 or 4×3, for example). This is a great way to resize an image because it prevents it from getting stretched in one direction or the other.
This has always been a little tricky to use, though, because you had to start resizing the component, and then press the shift key to turn on this proportional resizing. If you were holding the shift key when you clicked on the resize handle, ProtoShare assumed you were trying to unselect the component.
For ProtoShare 8, we wanted to fix this. We still wanted shift-click to select and unselect components, but we also wanted to allow you to start resizing a component with the shift key down.
At first, I tried simply skipping the select/unselect behavior when you were clicking on a resize handle. This worked pretty well for resizing, but we still had the old behavior of unselecting a component if you tried to shift-drag it. This was a problem, because holding shift while dragging is useful for moving a component along an axis (vertical or horizontal). Allowing you to resize, but not drag, with the shift key down ended up being more confusing.
So I decided to do some research. I looked at the selection behavior of some other software, and found my inspiration in the OS X Finder. The Finder’s icon view is similar to the ProtoShare editor in a lot of ways. And, the Finder supports shift-click to select/unselect as well as shift-drag, although shift-drag has no special behavior. But how? The people at Apple have done something very clever here: items are selected when the mouse button is pressed, but not unselected until the button is released.
Implementing this subtle change makes a huge difference. Shift-clicking still selects and unselects components just like you expect, and it doesn’t interfere with shift-dragging.
I’m really happy with the way this turned out, and I think it will make the shift-drag behaviors much easier to discover. It goes nicely with another new feature in ProtoShare 8: resizing from the center, which you turn on by holding the Alt or Option key. Add the shift key to that, and now you can resize from the center while preserving the aspect ratio.