307
307
bNode *node, *tnode;
308
308
bNodeSocket *sock, *tsock;
310
310
int selected = 0;
312
312
/* get mouse coordinates in view2d space */
313
UI_view2d_region_to_view(&ar->v2d, mval[0], mval[1], &mx, &my);
314
/* node_find_indicated_socket uses snode->mx/my */
315
snode->cursor[0] = mx;
316
snode->cursor[1] = my;
313
UI_view2d_region_to_view(&ar->v2d, mval[0], mval[1], &cursor[0], &cursor[1]);
319
316
/* first do socket selection, these generally overlap with nodes.
320
317
* socket selection only in extend mode.
322
if (node_find_indicated_socket(snode, &node, &sock, SOCK_IN)) {
319
if (node_find_indicated_socket(snode, &node, &sock, cursor, SOCK_IN)) {
323
320
node_socket_toggle(node, sock, 1);
326
else if (node_find_indicated_socket(snode, &node, &sock, SOCK_OUT)) {
323
else if (node_find_indicated_socket(snode, &node, &sock, cursor, SOCK_OUT)) {
327
324
if (sock->flag & SELECT) {
328
325
node_socket_deselect(node, sock, 1);
343
340
/* find the closest visible node */
344
node = node_under_mouse_select(snode->edittree, mx, my);
341
node = node_under_mouse_select(snode->edittree, cursor[0], cursor[1]);
347
344
if ((node->flag & SELECT) && (node->flag & NODE_ACTIVE) == 0) {
362
359
else { /* extend == 0 */
364
361
/* find the closest visible node */
365
node = node_under_mouse_select(snode->edittree, mx, my);
362
node = node_under_mouse_select(snode->edittree, cursor[0], cursor[1]);
368
365
for (tnode = snode->edittree->nodes.first; tnode; tnode = tnode->next) {
834
831
if (active->totr.xmax < ar->v2d.cur.xmin || active->totr.xmin > ar->v2d.cur.xmax ||
835
832
active->totr.ymax < ar->v2d.cur.ymin || active->totr.ymin > ar->v2d.cur.ymax)
837
space_node_view_flag(C, snode, CTX_wm_region(C), NODE_SELECT);
834
const int smooth_viewtx = WM_operator_smooth_viewtx_get(op);
835
space_node_view_flag(C, snode, ar, NODE_SELECT, smooth_viewtx);
898
896
if (active->totr.xmax < ar->v2d.cur.xmin || active->totr.xmin > ar->v2d.cur.xmax ||
899
897
active->totr.ymax < ar->v2d.cur.ymin || active->totr.ymin > ar->v2d.cur.ymax)
901
space_node_view_flag(C, snode, ar, NODE_SELECT);
899
space_node_view_flag(C, snode, ar, NODE_SELECT, U.smooth_viewtx);
926
924
uiEndBlock(C, block);
928
926
// uiButActiveOnly(C, ar, block, but); XXX using this here makes Blender hang - investigate
929
event = *(win->eventstate); /* XXX huh huh? make api call */
927
wm_event_init_from_window(win, &event);
930
928
event.type = EVT_BUT_OPEN;
931
929
event.val = KM_PRESS;
932
930
event.customdata = but;