mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-08-04 13:30:48 +00:00
Improve Pen tool handle dragging with Tab swapping, Ctrl angle locking, and directly dragging the closing endpoint in handle (#2452)
* added handle_types and refactored the handle_adjustments * anchor move refactor * code-todo-fix * removed-draw-mode * kind of works need to figure out snapping * some refactoring * refactor+overlays..need to fix the snapping and dragging * added docs * got stuck in space move * fixed all issues * comments and small fixes * completed last issue and refactor * major fixes and improv * fixed edge cases * edge cases fixed * fix edge cases and add docs * Code review pass * rename ,bug fixes * Add terminology diagram * Add Ctrl "Lock Angle" hint * Rename other hint --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
parent
32aee1ebf9
commit
6a8386d1e9
4 changed files with 602 additions and 276 deletions
|
@ -334,14 +334,22 @@ impl VectorData {
|
|||
let (start_point_id, _, _) = self.segment_points_from_id(*segment_id)?;
|
||||
let start_index = self.point_domain.resolve_id(start_point_id)?;
|
||||
|
||||
self.segment_domain.end_connected(start_index).find(|&id| id != *segment_id).map(|id| (start_point_id, id))
|
||||
self.segment_domain.end_connected(start_index).find(|&id| id != *segment_id).map(|id| (start_point_id, id)).or(self
|
||||
.segment_domain
|
||||
.start_connected(start_index)
|
||||
.find(|&id| id != *segment_id)
|
||||
.map(|id| (start_point_id, id)))
|
||||
}
|
||||
ManipulatorPointId::EndHandle(segment_id) => {
|
||||
// For end handle, find segments starting at our end point
|
||||
let (_, end_point_id, _) = self.segment_points_from_id(*segment_id)?;
|
||||
let end_index = self.point_domain.resolve_id(end_point_id)?;
|
||||
|
||||
self.segment_domain.start_connected(end_index).find(|&id| id != *segment_id).map(|id| (end_point_id, id))
|
||||
self.segment_domain.start_connected(end_index).find(|&id| id != *segment_id).map(|id| (end_point_id, id)).or(self
|
||||
.segment_domain
|
||||
.end_connected(end_index)
|
||||
.find(|&id| id != *segment_id)
|
||||
.map(|id| (end_point_id, id)))
|
||||
}
|
||||
ManipulatorPointId::Anchor(_) => None,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue