Fix T79787: orbit/zoom sensitivity depends on line-width
Use 'dpi_fac' instead of 'pixelsize' to scale input sensitivity based on the interface scale. Also use dpi_fac for view zoom operator. Thanks to @ISS for investigating.
This commit is contained in:
parent
9085fb8073
commit
6978635622
Notes:
blender-bot
2023-02-14 05:53:42 +01:00
Referenced by issue #79787, The sensitivity of 3D view navigation depends on Line Width preference
|
@ -1157,8 +1157,8 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op)
|
|||
const bool zoom_to_pos = use_cursor_init && (U.uiflag & USER_ZOOM_TO_MOUSEPOS);
|
||||
|
||||
/* get amount to move view by */
|
||||
dx = RNA_float_get(op->ptr, "deltax") / U.pixelsize;
|
||||
dy = RNA_float_get(op->ptr, "deltay") / U.pixelsize;
|
||||
dx = RNA_float_get(op->ptr, "deltax") / U.dpi_fac;
|
||||
dy = RNA_float_get(op->ptr, "deltay") / U.dpi_fac;
|
||||
|
||||
if (U.uiflag & USER_ZOOM_INVERT) {
|
||||
dx *= -1;
|
||||
|
|
|
@ -822,7 +822,7 @@ static void viewrotate_apply(ViewOpsData *vod, const int event_xy[2])
|
|||
float xaxis[3];
|
||||
|
||||
/* Radians per-pixel. */
|
||||
const float sensitivity = U.view_rotate_sensitivity_turntable / U.pixelsize;
|
||||
const float sensitivity = U.view_rotate_sensitivity_turntable / U.dpi_fac;
|
||||
|
||||
/* Get the 3x3 matrix and its inverse from the quaternion */
|
||||
quat_to_mat3(m, vod->curr.viewquat);
|
||||
|
@ -2038,7 +2038,7 @@ static float viewzoom_scale_value(const rcti *winrct,
|
|||
fac = (float)(xy_init[1] - xy_curr[1]);
|
||||
}
|
||||
|
||||
fac /= U.pixelsize;
|
||||
fac /= U.dpi_fac;
|
||||
|
||||
if (zoom_invert != zoom_invert_force) {
|
||||
fac = -fac;
|
||||
|
@ -2055,8 +2055,8 @@ static float viewzoom_scale_value(const rcti *winrct,
|
|||
BLI_rcti_cent_x(winrct),
|
||||
BLI_rcti_cent_y(winrct),
|
||||
};
|
||||
float len_new = (5 * U.pixelsize) + ((float)len_v2v2_int(ctr, xy_curr) / U.pixelsize);
|
||||
float len_old = (5 * U.pixelsize) + ((float)len_v2v2_int(ctr, xy_init) / U.pixelsize);
|
||||
float len_new = (5 * U.dpi_fac) + ((float)len_v2v2_int(ctr, xy_curr) / U.dpi_fac);
|
||||
float len_old = (5 * U.dpi_fac) + ((float)len_v2v2_int(ctr, xy_init) / U.dpi_fac);
|
||||
|
||||
/* intentionally ignore 'zoom_invert' for scale */
|
||||
if (zoom_invert_force) {
|
||||
|
@ -2066,16 +2066,16 @@ static float viewzoom_scale_value(const rcti *winrct,
|
|||
zfac = val_orig * (len_old / max_ff(len_new, 1.0f)) / val;
|
||||
}
|
||||
else { /* USER_ZOOM_DOLLY */
|
||||
float len_new = 5 * U.pixelsize;
|
||||
float len_old = 5 * U.pixelsize;
|
||||
float len_new = 5 * U.dpi_fac;
|
||||
float len_old = 5 * U.dpi_fac;
|
||||
|
||||
if (U.uiflag & USER_ZOOM_HORIZ) {
|
||||
len_new += (winrct->xmax - (xy_curr[0])) / U.pixelsize;
|
||||
len_old += (winrct->xmax - (xy_init[0])) / U.pixelsize;
|
||||
len_new += (winrct->xmax - (xy_curr[0])) / U.dpi_fac;
|
||||
len_old += (winrct->xmax - (xy_init[0])) / U.dpi_fac;
|
||||
}
|
||||
else {
|
||||
len_new += (winrct->ymax - (xy_curr[1])) / U.pixelsize;
|
||||
len_old += (winrct->ymax - (xy_init[1])) / U.pixelsize;
|
||||
len_new += (winrct->ymax - (xy_curr[1])) / U.dpi_fac;
|
||||
len_old += (winrct->ymax - (xy_init[1])) / U.dpi_fac;
|
||||
}
|
||||
|
||||
if (zoom_invert != zoom_invert_force) {
|
||||
|
|
Loading…
Reference in New Issue