1
0
Fork 0

Account for DPI scaling in granular dragging

This commit is contained in:
Robbert van der Helm 2022-11-12 01:58:47 +01:00
parent e13d79b288
commit 2816b9418e
2 changed files with 29 additions and 24 deletions

View file

@ -535,17 +535,17 @@ impl View for ParamSlider {
starting_value: self.param_base.unmodulated_normalized_value(), starting_value: self.param_base.unmodulated_normalized_value(),
}); });
// These positions should be compensated for the DPI scale so it remains
// consistent
let start_x =
util::remap_current_entity_x_t(cx, granular_drag_status.starting_value);
let delta_x = ((*x - granular_drag_status.starting_x_coordinate)
* GRANULAR_DRAG_MULTIPLIER)
* cx.style.dpi_factor as f32;
self.set_normalized_value_drag( self.set_normalized_value_drag(
cx, cx,
util::remap_current_entity_x_coordinate( util::remap_current_entity_x_coordinate(cx, start_x + delta_x),
cx,
// This can be optimized a bit
util::remap_current_entity_x_t(
cx,
granular_drag_status.starting_value,
) + ((*x - granular_drag_status.starting_x_coordinate)
* GRANULAR_DRAG_MULTIPLIER),
),
); );
} else { } else {
self.granular_drag_status = None; self.granular_drag_status = None;

View file

@ -344,23 +344,28 @@ impl View for XyPad {
.unmodulated_normalized_value(), .unmodulated_normalized_value(),
}); });
// These positions should be compensated for the DPI scale so it remains
// consistent
let start_x = util::remap_current_entity_x_t(
cx,
granular_drag_status.x_starting_value,
);
let delta_x = ((*x - granular_drag_status.starting_x_coordinate)
* GRANULAR_DRAG_MULTIPLIER)
* dpi_scale;
let start_y = util::remap_current_entity_y_t(
cx,
// NOTE: Just like above, the corodinates go from top to bottom
// while we want the X-Y pad to go from bottom to top
1.0 - granular_drag_status.y_starting_value,
);
let delta_y = ((*y - granular_drag_status.starting_y_coordinate)
* GRANULAR_DRAG_MULTIPLIER)
* dpi_scale;
self.set_normalized_values_for_mouse_pos( self.set_normalized_values_for_mouse_pos(
cx, cx,
( (start_x + delta_x, start_y + delta_y),
// This can be optimized a bit
util::remap_current_entity_x_t(
cx,
granular_drag_status.x_starting_value,
) + ((*x - granular_drag_status.starting_x_coordinate)
* GRANULAR_DRAG_MULTIPLIER),
(util::remap_current_entity_y_t(
cx,
// NOTE: Just like above, the corodinates go from top to bottom
// while we want the X-Y pad to go from bottom to top
1.0 - granular_drag_status.y_starting_value,
) + ((*y - granular_drag_status.starting_y_coordinate)
* GRANULAR_DRAG_MULTIPLIER)),
),
); );
} else { } else {
self.granular_drag_status = None; self.granular_drag_status = None;