Fix snap gizmo flickering while dragging
Ignore click-drag for non-mouse button drag events Alternative to fix issue detailed in D10886.
This commit is contained in:
@@ -861,6 +861,7 @@ int WM_event_modifier_flag(const struct wmEvent *event);
|
|||||||
|
|
||||||
bool WM_event_is_modal_tweak_exit(const struct wmEvent *event, int tweak_event);
|
bool WM_event_is_modal_tweak_exit(const struct wmEvent *event, int tweak_event);
|
||||||
bool WM_event_is_last_mousemove(const struct wmEvent *event);
|
bool WM_event_is_last_mousemove(const struct wmEvent *event);
|
||||||
|
bool WM_event_is_mouse_drag(const struct wmEvent *event);
|
||||||
|
|
||||||
int WM_event_drag_threshold(const struct wmEvent *event);
|
int WM_event_drag_threshold(const struct wmEvent *event);
|
||||||
bool WM_event_drag_test(const struct wmEvent *event, const int prev_xy[2]);
|
bool WM_event_drag_test(const struct wmEvent *event, const int prev_xy[2]);
|
||||||
|
|||||||
@@ -592,7 +592,7 @@ static int gizmo_tweak_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||||||
const int highlight_part_init = gz->highlight_part;
|
const int highlight_part_init = gz->highlight_part;
|
||||||
|
|
||||||
if (gz->drag_part != -1) {
|
if (gz->drag_part != -1) {
|
||||||
if (ISTWEAK(event->type) || (event->val == KM_CLICK_DRAG)) {
|
if (WM_event_is_mouse_drag(event)) {
|
||||||
gz->highlight_part = gz->drag_part;
|
gz->highlight_part = gz->drag_part;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -735,7 +735,7 @@ wmGizmo *wm_gizmomap_highlight_find(wmGizmoMap *gzmap,
|
|||||||
|
|
||||||
/* Ensure for drag events we use the location where the user clicked.
|
/* Ensure for drag events we use the location where the user clicked.
|
||||||
* Without this click-dragging on a gizmo can accidentally act on the wrong gizmo. */
|
* Without this click-dragging on a gizmo can accidentally act on the wrong gizmo. */
|
||||||
if (ISTWEAK(event->type) || (event->val == KM_CLICK_DRAG)) {
|
if (WM_event_is_mouse_drag(event)) {
|
||||||
mval[0] += event->x - event->prevclickx;
|
mval[0] += event->x - event->prevclickx;
|
||||||
mval[1] += event->y - event->prevclicky;
|
mval[1] += event->y - event->prevclicky;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,6 +265,11 @@ bool WM_event_is_last_mousemove(const wmEvent *event)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool WM_event_is_mouse_drag(const wmEvent *event)
|
||||||
|
{
|
||||||
|
return ISTWEAK(event->type) || (ISMOUSE_BUTTON(event->type) && (event->val == KM_CLICK_DRAG));
|
||||||
|
}
|
||||||
|
|
||||||
/** \} */
|
/** \} */
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
|||||||
Reference in New Issue
Block a user