Fix T58267: node socket grabbing not working well with box select tool.

This commit is contained in:
Brecht Van Lommel
2018-11-30 18:27:04 +01:00
parent ed5202ac6a
commit 8d4da34883

View File

@@ -560,16 +560,25 @@ static int node_box_select_invoke(bContext *C, wmOperator *op, const wmEvent *ev
const bool tweak = RNA_boolean_get(op->ptr, "tweak");
if (tweak) {
/* prevent initiating the box select if the mouse is over a node */
/* this allows box select on empty space, but drag-translate on nodes */
/* prevent initiating the box select if the mouse is over a node or
* node socket. this allows box select on empty space, but drag-translate
* on nodes */
SpaceNode *snode = CTX_wm_space_node(C);
ARegion *ar = CTX_wm_region(C);
float mx, my;
float mouse[2];
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &mx, &my);
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &mouse[0], &mouse[1]);
if (node_under_mouse_tweak(snode->edittree, mx, my))
if (node_under_mouse_tweak(snode->edittree, mouse[0], mouse[1])) {
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
}
bNode *node;
bNodeSocket *sock;
if (node_find_indicated_socket(snode, &node, &sock, mouse, SOCK_IN | SOCK_OUT)) {
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
}
}
return WM_gesture_box_invoke(C, op, event);