GraphiteEditor / GraphiteEditor/Graphite

Path tool point nudging UX improvements

Abierto
#1,139 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Paper Cut
Lenguaje dominante
Rust
Estrellas
27.2k
Forks
1.3k
Merge medio
20 h 5 min
PR fusionados (30 d)
57

Descripción

Part of #820. Improves upon the MVP implementation in #1068. Requirements for this task are described in https://github.com/GraphiteEditor/Graphite/pull/1068#issuecomment-1509469810:

> Nudging a selected handle causes the opposing handle to match its length (like if you were dragging the handle while holding Shift). Let's have this distance mirroring happen only when holding Ctrl (or CtrlShift for 10x nudging).
>
> When dragging or nudging both handles of a manipulator group at once, I'd like the handle to switch from smooth to split so the points are dragged or nudged together rather than trying to maintain their 180° mirroring.
>
> I'd like to be able to Shift-click an already selected handle to deselect it. Currently it seems to deselect the entire shape. And in order to select just one anchor/handle (thus deselecting all others), I seem to have to click twice right now when I'd expect to click only once for that to happen.
>
> When rotating a pair of handles, [this shouldn't be happening](https://files.keavon.com/-/UntimelyAttentiveCaecilian/capture_5_.mp4) where their lengths change. We probably want that case to do the same as rotating with just the anchor selected (same as next point).
>
> If you have just one handle selected, it should rotate the handle(s) around the anchor just like you had the anchor selected instead (the behavior for rotating the sole selected anchor is good).
>
> To distill the new desired behavior:
> - Points selected in only one manipulator group:
> - `G`rabbing and dragging: current behavior is good, except if only the two handles are selected, then the handles should be split so the points can move in unison without having to respect the 180° smooth angle [which is weird](https://files.keavon.com/-/OurRuralSilkworm/capture_7_.mp4).
> - `R`otation: should always rotate around the anchor regardless of which combination are selected. If a handle is split, only that handle should rotate around its anchor.
> - `S`caling: should always scale around the anchor regardless of which combination are selected. If only one handle is selected, only that handle should scale towards the anchor. The current behavior is good when just the anchor (no handles) is selected, but the same should happen if both handles are selected (with or without its anchor) where they scale around the anchor instead of their common center.
> - Points selected across multiple manipulator groups:
> - `G`rabbing and dragging: current behavior is good, except the same as above for cases where the two handles but not the anchor are selected and they should become split rather than [doing this funky thing (near the bottom)](https://files.keavon.com/-/UnacceptablePastOxen/capture_6_.mp4).
> - `R`otating: Current behavior is good except that we want two selected handles to become split rather than fighting to remain at 180°.
> - `Scaling`: Same as rotating.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza leyendo la implementación del MVP en el pull request #1068 y el trabajo más amplio registrado en el issue #820; después, reproduce las interacciones de la herramienta de trazados descritas en este issue. Se considera terminado cuando arrastrar, desplazar, rotar, escalar y seleccionar siguen los comportamientos indicados para las teclas modificadoras y los grupos de manipuladores, sin reflejos no deseados de los controles ni cambios de longitud.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust
Área
design
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.