mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-02 01:38:11 +08:00
Fix double-clicking a gradient stop under snapping influence not opening color picker (#4258)
* Fix double-clicking a gradient stop under snapping influence not opening color picker * Simplify
This commit is contained in:
@@ -802,6 +802,8 @@ struct GradientToolData {
|
|||||||
selected_gradient: Option<SelectedGradient>,
|
selected_gradient: Option<SelectedGradient>,
|
||||||
snap_manager: SnapManager,
|
snap_manager: SnapManager,
|
||||||
drag_start: DVec2,
|
drag_start: DVec2,
|
||||||
|
/// The pointer-down position before snapping (document space), used to detect whether the mouse moved between the press and a double-click.
|
||||||
|
drag_start_unsnapped: DVec2,
|
||||||
auto_panning: AutoPanning,
|
auto_panning: AutoPanning,
|
||||||
auto_pan_shift: DVec2,
|
auto_pan_shift: DVec2,
|
||||||
gradient_angle: f64,
|
gradient_angle: f64,
|
||||||
@@ -1061,8 +1063,9 @@ impl Fsm for GradientToolFsmState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
(_, GradientToolMessage::DoubleClick) => {
|
(_, GradientToolMessage::DoubleClick) => {
|
||||||
// Only reset if the mouse hasn't moved so we don't trigger from a click-then-click-and-drag being reported as a double-click
|
// Only reset if the mouse hasn't moved so we don't trigger from a click-then-click-and-drag being reported as a double-click.
|
||||||
let drag_start_viewport = document.metadata().document_to_viewport.transform_point2(tool_data.drag_start);
|
// Compared against the unsnapped press position so a snap point near the stop doesn't make a stationary mouse look moved.
|
||||||
|
let drag_start_viewport = document.metadata().document_to_viewport.transform_point2(tool_data.drag_start_unsnapped);
|
||||||
if input.mouse.position.distance(drag_start_viewport) <= DRAG_THRESHOLD
|
if input.mouse.position.distance(drag_start_viewport) <= DRAG_THRESHOLD
|
||||||
&& let Some(selected_gradient) = &mut tool_data.selected_gradient
|
&& let Some(selected_gradient) = &mut tool_data.selected_gradient
|
||||||
{
|
{
|
||||||
@@ -1258,6 +1261,7 @@ impl Fsm for GradientToolFsmState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tool_data.drag_start = document_to_viewport.inverse().transform_point2(mouse);
|
tool_data.drag_start = document_to_viewport.inverse().transform_point2(mouse);
|
||||||
|
tool_data.drag_start_unsnapped = point.document_point;
|
||||||
tool_data.auto_pan_shift = DVec2::ZERO;
|
tool_data.auto_pan_shift = DVec2::ZERO;
|
||||||
let tolerance = (MANIPULATOR_GROUP_MARKER_SIZE * 2.).powi(2);
|
let tolerance = (MANIPULATOR_GROUP_MARKER_SIZE * 2.).powi(2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user