GraphiteEditor / GraphiteEditor/Graphite

Path tool point nudging UX improvements

オープン
#1,139 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Paper Cut
主要言語
Rust
スター
27.3k
フォーク
1.3k
平均マージ
20時間 5分
マージ済み PR(30日)
57

説明

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 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:
    • Grabbing 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.
    • Rotation: 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.
    • Scaling: 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:
    • Grabbing 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).
    • Rotating: 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.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず pull request #1068 の MVP 実装と、issue #820 で追跡されているより広範な作業を読み、その後、この issue に記載されているパスツールの操作を再現します。ドラッグ、微調整、回転、拡大縮小、選択が、記載された修飾キーおよびマニピュレーターグループの動作に従い、ハンドルが意図せずミラーリングされたり長さが変更されたりしなければ完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust
領域
design
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。