diff --git a/source/blender/editors/interface/interface_handlers.cc b/source/blender/editors/interface/interface_handlers.cc index c9049778639..aa2b00b3865 100644 --- a/source/blender/editors/interface/interface_handlers.cc +++ b/source/blender/editors/interface/interface_handlers.cc @@ -6286,7 +6286,7 @@ static int ui_do_but_COLOR(bContext *C, uiBut *but, uiHandleButtonData *data, co hsv[2] = clamp_f(hsv[2] + 0.05f, 0.0f, 1.0f); } else { - const float fac = 0.005 * (event->xy[1] - event->prev_xy[1]); + const float fac = 0.005 * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; hsv[2] = clamp_f(hsv[2] + fac, 0.0f, 1.0f); } diff --git a/source/blender/editors/mesh/editmesh_bevel.cc b/source/blender/editors/mesh/editmesh_bevel.cc index 73ffb50cbc0..a32bae4047f 100644 --- a/source/blender/editors/mesh/editmesh_bevel.cc +++ b/source/blender/editors/mesh/editmesh_bevel.cc @@ -695,7 +695,7 @@ static int edbm_bevel_modal(bContext *C, wmOperator *op, const wmEvent *event) } } else if (etype == MOUSEPAN) { - float delta = 0.02f * (event->xy[1] - event->prev_xy[1]); + float delta = 0.02f * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; if (opdata->segments >= 1 && opdata->segments + delta < 1) { opdata->segments = 1; } diff --git a/source/blender/editors/mesh/editmesh_loopcut.cc b/source/blender/editors/mesh/editmesh_loopcut.cc index dbf59c38ca0..4a9f94a9646 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.cc +++ b/source/blender/editors/mesh/editmesh_loopcut.cc @@ -595,13 +595,13 @@ static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event) break; case MOUSEPAN: if ((event->modifier & KM_ALT) == 0) { - cuts += 0.02f * (event->xy[1] - event->prev_xy[1]); + cuts += 0.02f * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; if (cuts < 1 && lcd->cuts >= 1) { cuts = 1; } } else { - smoothness += 0.002f * (event->xy[1] - event->prev_xy[1]); + smoothness += 0.002f * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; } handled = true; break; diff --git a/source/blender/editors/space_clip/clip_ops.cc b/source/blender/editors/space_clip/clip_ops.cc index e2c8a5ef6ae..4f1f5cdb1a2 100644 --- a/source/blender/editors/space_clip/clip_ops.cc +++ b/source/blender/editors/space_clip/clip_ops.cc @@ -605,10 +605,20 @@ static int view_zoom_invoke(bContext *C, wmOperator *op, const wmEvent *event) if (ELEM(event->type, MOUSEZOOM, MOUSEPAN)) { float delta, factor; - delta = event->prev_xy[0] - event->xy[0] + event->prev_xy[1] - event->xy[1]; + if (event->type == MOUSEPAN) { + if (U.uiflag & USER_ZOOM_HORIZ) { + delta = WM_event_absolute_delta_x(event); + } + else { + delta = WM_event_absolute_delta_y(event); + } - if (U.uiflag & USER_ZOOM_INVERT) { - delta *= -1; + if (U.uiflag & USER_ZOOM_INVERT) { + delta *= -1.0f; + } + } + else { /* MOUSEZOOM */ + delta = event->prev_xy[0] - event->xy[0]; } factor = 1.0f + delta / 300.0f; diff --git a/source/blender/editors/space_image/image_ops.cc b/source/blender/editors/space_image/image_ops.cc index ebd89b5f74a..6c56de1219d 100644 --- a/source/blender/editors/space_image/image_ops.cc +++ b/source/blender/editors/space_image/image_ops.cc @@ -598,10 +598,20 @@ static int image_view_zoom_invoke(bContext *C, wmOperator *op, const wmEvent *ev UI_view2d_region_to_view( ®ion->v2d, event->mval[0], event->mval[1], &location[0], &location[1]); - delta = event->prev_xy[0] - event->xy[0] + event->prev_xy[1] - event->xy[1]; + if (event->type == MOUSEPAN) { + if (U.uiflag & USER_ZOOM_HORIZ) { + delta = WM_event_absolute_delta_x(event); + } + else { + delta = WM_event_absolute_delta_y(event); + } - if (U.uiflag & USER_ZOOM_INVERT) { - delta *= -1; + if (U.uiflag & USER_ZOOM_INVERT) { + delta *= -1.0f; + } + } + else { /* MOUSEZOOM */ + delta = event->prev_xy[0] - event->xy[0]; } factor = 1.0f + delta / 300.0f; diff --git a/source/blender/editors/space_view3d/view3d_navigate_fly.cc b/source/blender/editors/space_view3d/view3d_navigate_fly.cc index 69d7e7d3955..b6fb254a3a5 100644 --- a/source/blender/editors/space_view3d/view3d_navigate_fly.cc +++ b/source/blender/editors/space_view3d/view3d_navigate_fly.cc @@ -532,7 +532,7 @@ static void flyEvent(FlyInfo *fly, const wmEvent *event) /* Speed adjusting with mouse-pan (track-pad). */ case FLY_MODAL_SPEED: { - float fac = 0.02f * (event->prev_xy[1] - event->xy[1]); + float fac = 0.02f * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; /* allowing to brake immediate */ if (fac > 0.0f && fly->speed < 0.0f) { diff --git a/source/blender/editors/space_view3d/view3d_navigate_view_dolly.cc b/source/blender/editors/space_view3d/view3d_navigate_view_dolly.cc index 1cceca13f23..e180dcbc8f3 100644 --- a/source/blender/editors/space_view3d/view3d_navigate_view_dolly.cc +++ b/source/blender/editors/space_view3d/view3d_navigate_view_dolly.cc @@ -281,18 +281,17 @@ static int viewdolly_invoke(bContext *C, wmOperator *op, const wmEvent *event) normalize_v3(vod->init.mousevec); } - if (event->type == MOUSEZOOM) { - /* Bypass Zoom invert flag for track pads (pass false always) */ - - if (U.uiflag & USER_ZOOM_HORIZ) { - vod->init.event_xy[0] = vod->prev.event_xy[0] = event->xy[0]; + if (ELEM(event->type, MOUSEZOOM, MOUSEPAN)) { + int m_xy[2]; + if (event->type == MOUSEPAN) { + m_xy[0] = event->xy[0] + WM_event_absolute_delta_x(event); + m_xy[1] = event->xy[1] + WM_event_absolute_delta_y(event); } - else { - /* Set y move = x move as MOUSEZOOM uses only x axis to pass magnification value */ - vod->init.event_xy[1] = vod->prev.event_xy[1] = vod->init.event_xy[1] + event->xy[0] - - event->prev_xy[0]; + else { /* MOUSEZOOM */ + m_xy[0] = event->prev_xy[0]; + m_xy[1] = event->xy[1] - (event->xy[0] - event->prev_xy[0]); } - viewdolly_apply(vod, event->prev_xy, (U.uiflag & USER_ZOOM_INVERT) == 0); + viewdolly_apply(vod, m_xy, (U.uiflag & USER_ZOOM_INVERT) == 0); viewops_data_free(C, static_cast(op->customdata)); op->customdata = nullptr; diff --git a/source/blender/editors/space_view3d/view3d_navigate_view_rotate.cc b/source/blender/editors/space_view3d/view3d_navigate_view_rotate.cc index 546c9933bd6..16da22c9bdb 100644 --- a/source/blender/editors/space_view3d/view3d_navigate_view_rotate.cc +++ b/source/blender/editors/space_view3d/view3d_navigate_view_rotate.cc @@ -345,13 +345,11 @@ static int viewrotate_invoke_impl(bContext * /*C*/, if (event_code == VIEW_CONFIRM) { /* MOUSEROTATE performs orbital rotation, so y axis delta is set to 0 */ - const bool is_inverted = (event->flag & WM_EVENT_SCROLL_INVERT) && - (event->type != MOUSEROTATE); int m_xy[2]; - if (is_inverted) { - m_xy[0] = 2 * event->xy[0] - event->prev_xy[0]; - m_xy[1] = 2 * event->xy[1] - event->prev_xy[1]; + if (event->type == MOUSEPAN) { + m_xy[0] = event->xy[0] + WM_event_absolute_delta_x(event); + m_xy[1] = event->xy[1] + WM_event_absolute_delta_y(event); } else { copy_v2_v2_int(m_xy, event->prev_xy); diff --git a/source/blender/editors/space_view3d/view3d_navigate_view_zoom.cc b/source/blender/editors/space_view3d/view3d_navigate_view_zoom.cc index 6e920ef6e3a..855bac3ec04 100644 --- a/source/blender/editors/space_view3d/view3d_navigate_view_zoom.cc +++ b/source/blender/editors/space_view3d/view3d_navigate_view_zoom.cc @@ -498,15 +498,16 @@ static int viewzoom_invoke_impl(bContext *C, else { eV3D_OpEvent event_code = ELEM(event->type, MOUSEZOOM, MOUSEPAN) ? VIEW_CONFIRM : VIEW_PASS; if (event_code == VIEW_CONFIRM) { - if (U.uiflag & USER_ZOOM_HORIZ) { - vod->init.event_xy[0] = vod->prev.event_xy[0] = xy[0]; + int m_xy[2]; + if (event->type == MOUSEPAN) { + m_xy[0] = event->xy[0] + WM_event_absolute_delta_x(event); + m_xy[1] = event->xy[1] + WM_event_absolute_delta_y(event); } - else { - /* Set y move = x move as MOUSEZOOM uses only x axis to pass magnification value */ - vod->init.event_xy[1] = vod->prev.event_xy[1] = vod->init.event_xy[1] + xy[0] - - event->prev_xy[0]; + else { /* MOUSEZOOM */ + m_xy[0] = event->prev_xy[0]; + m_xy[1] = event->xy[1] - (event->xy[0] - event->prev_xy[0]); } - viewzoom_apply(vod, event->prev_xy, USER_ZOOM_DOLLY, (U.uiflag & USER_ZOOM_INVERT) != 0); + viewzoom_apply(vod, m_xy, USER_ZOOM_DOLLY, (U.uiflag & USER_ZOOM_INVERT) != 0); ED_view3d_camera_lock_autokey(vod->v3d, vod->rv3d, C, false, true); return OPERATOR_FINISHED; diff --git a/source/blender/editors/transform/transform.cc b/source/blender/editors/transform/transform.cc index d7e7a66709f..762e8480d00 100644 --- a/source/blender/editors/transform/transform.cc +++ b/source/blender/editors/transform/transform.cc @@ -1136,7 +1136,7 @@ int transformEvent(TransInfo *t, const wmEvent *event) case TFM_MODAL_PROPSIZE: /* MOUSEPAN usage... */ if (t->flag & T_PROP_EDIT) { - float fac = 1.0f + 0.005f * (event->xy[1] - event->prev_xy[1]); + float fac = 1.0f + 0.005f * WM_event_absolute_delta_y(event) / UI_SCALE_FAC; t->prop_size *= fac; if (t->spacetype == SPACE_VIEW3D && t->persp != RV3D_ORTHO) { t->prop_size = max_ff(min_ff(t->prop_size, ((View3D *)t->view)->clip_end),