Multi-layer selection workgroup

From GIMP GUI Redesign
Jump to: navigation, search


Feature request: https://gitlab.gnome.org/GNOME/gimp/issues/557

Summary

Current layer list has always exactly 1 layer selected. In particular it is not possible to select multiple layers. This workgroup proposes to extend the current behavior to allow multi-layer selection, but also to define properly all concepts allowing layer interaction.

Current UI Analysis

Concepts

Several concepts have been raised, allowing to interact with layers:

The "linked" items
several items can be "linked" together, as identified by the chain icon next to the layer name. Links can apply across various item types (layers, paths, etc.).
The "selected" layers
visual selection on the layer dock, identified by a different color of the selected items. Multi-selection is limited to a single item type at once.
The "active" layer
only 1 layer at a time is considered active. It is part of the "selected" layers.
Layer "groups"
layers can be organized in groups and subgroups. This influences the stack order of layers.

As of today, the "selected" and "active" layer are the same concept since it is not possible to select several layers at once.

Linked items

Official doc defines links this way:

If you click between the eye icon and the layer thumbnail, you get a chain icon, which enables you to group layers for operations on multiple layers (for example with the Move tool or a transform tool).

What "operations" means is still fuzzy, but as of today, it seems to involve only all the transform tools (even though the docs seems to make it only an example): Move, Rotate, Scale, Shear, Perspective, Flip and Unified Transform tools. In particular links have no influence on filters and GEGL operations.

It has been raised that linked items is a volatile concept. Only a given set of linked items at a time can be created, which means that if you want to operate on a different set of items, you have to first unlink the previous set. Other software have similar concepts of linked layers and allow several such sets ("groups" in Blender, Inkscape, Scribus is the closer concept…).

Item Groups

Items of a same types can be grouped into "groups", represented by a "folder" icon in the relevant dock. This concept of group is different from the concept of "groups" in other software (which are closer to GIMP's "link" concept) since GIMP groups involves forcing stack positions next to each others for items in the same group (consequently a render and/or organization change).

Similarly to linked items, all transform tools can work on layer groups, and no filter/GEGL operation work on layer groups.

Active Item

The active item is the one where filters/GEGL ops are applied to, as well as most direct pixel modification (painting in particular).

Selection

Currently the selection is a 1-1 equivalent to the active item. Nevertheless this has proved bothersome when working with many items at once and when one wants to operate not on the item contents but on its organization and features. For instance moving, deleting, add a mask or an alpha channel on a dozen layers at once must be done one layer at a time for the time being.

Use Cases

Various actions which can be performed on a layer:

  • [DELETE] When deleting many layers at once, you have to select one of the layers to be deleted and click "Delete this layer" button, select the next layer to be deleted, then click the button again, and so on. It could be interesting to multi-select several layers at once in an easy way, then click the delete button once.
  • [MOVE] When moving several layers at once, a common process would be to drag and drop the said layers one by one. Once again, a drag and drop would apply to all selected layers at once.
- Move also refers to placing a multi-selection into a group as well?)
- Yes, moving means as well position change in the list of layers, as well as moving in or out of a layer group. Jehan 10:09, 10 October 2015 (EDT)
  • [MASK] Possibly adding a layer mask to all of the selected layers at once (initialize to the same mask?) + delete mask.
  • [ALPHA] add or remove alpha channel.
  • [MERGE] When right-clicking on a layer group, the "merge group" option is available. Maybe a "Merge selected" option could exist. But what if the selection is not continuous? Merging could modify the visual output.
  • [FILTER] Run a layer operation on multiple layers, including preview (e.g. Curves, or van gogh)
  • [TEXT] change the font on multiple text layers at the same time?
  • [PAINT] painting occurs on the selected (active) layer; what happens when you use a paint tool if multiple layers are active?
- About this point, consensus on IRC seems to be that painting should occur only on a single layer,
hence a concept of the active layer != selected layers (the active layer being the "main selection",
likely the last clicked layer).
  • [GROUP] Make a new layer group from the selected layers. Where does the layer group go if the layers were not contiguous, e.g. you select layers 3, 5, 6, 7, 23 out of 100? Perhaps it goes where the most recently selected layer was, so it's most likely to be visible?

Questions

This work group will have to determine exactly what should be "massively doable" and not. For instance, can we lock pixel/transformation/alpha channel for all selected layers at once?

What about the right click menu: can we add/remove alpha channel/layer mask on all selected layers?

Can we change visibility/chain to all selected layers at once?

We can edit only one layer at once. What happens with multi-selection? Do we forbid pixel edition when several layers are selected? Do we consider one layer as "primary" (the first or last selected?) and only the primary layer is edited? If so, there will need to be a visual cue to distinguish the primary selection from the rest.

Discoverability

"Selection" is usually a really easy discoverable feature because people are very much used to selection in various software. In particular file managers, but not only. You know you can select not only with a click, but often by clicking and drawing a square, or with shift-click (select all from last selection), ctrl-click (select/unselect without losing previous selection), or shift-ctrl-click (select all from last selection without losing previous selection). And when multi-selection is possible, it is also usually expected many features to apply on all selection at once (moving, copying, deleting, right-click menu…).

Alternatives

An alternative proposal (bug 755972) is to consider chained layers as multi-selected layers (hence moving a chained layer would move all other chained layers at once for instance). Does it make sense or should both concept be kept well separated?

Maybe a layer dialogue context-menu option, "Move all chained layers here" would solve the primary use cases and avoid the difficult questions of multi-layer filtering, painting, plugins, etc?

Tentative design

All studied apps use the same UX convention:

  • ctrl+click picks up individual layers
  • shift+click picks all layers from the active one to the clicked on one

Adobe Photoshop

  • Both Shift and Ctrl keys are used to select multiple layers in the Layers dialog.
  • Adobe Photoshop does not tell which layer is the last selected one.
  • Cropping works on the whole image only.
  • Painting on multiple layers is not possible. Photoshop throws an error message when you try to paint on multiple selected layers.
  • Can't assign a mask to multiple selected layers.
  • Can't assign a layer FX to multiple selected layers.
  • Can't apply a filter to multiple selected layers (Filters menu items become greyed out).
  • A group out of a multiple layers selection gets created in the position of the topmost selected layer.
  • Merging multiple layers creates a layer in the position of the lowest layer in the selection.
  • Del key removes all selected layers.

Corel Photo-Paint

  • Both Shift and Ctrl keys are used to select multiple layers in the Layers dialog.
  • Corel Photo-Paint uses a darker selection color for the last selected layer in a multiple layers selection to distinguish it from the others.
  • Painting happens only on the last selected layer.
  • Masks get added to each selected layer.
  • A group out of a multiple layers selection gets created in the position of the topmost selected layer.
  • Merging multiple layers creates a layer in the position of the lowest layer in the selection.
  • Del key or Delete from right-click menu in the Object Manager removes all selected layers.
  • Effects can only be applied to a single-layer selection.

Krita

  • Both Shift and Ctrl keys are used to select multiple layers in the Layers dialog.
  • Krita uses bold font face to distinguish the last selected layer from the others in a multiple layers selection.
  • Both cropping (with Applies to: Layer mode selected), painting, and applying filters only happens on the last selected layer.
  • Shift+Del and Remove Layer from right-click menu in the Layers palette remove all selected layers
  • Add Transparency Mask only happens for the last selected layer
  • Merge with Layer Below only merges selected layers and doesn't affect unselected layer right below the selection, the name of the topmost layer in the selection is used for the new projected layer.
  • Quick Group places a layer group at the point where the topmost layer in the selection was, even if it's in the middle of the layers stack.