~ubuntu-branches/ubuntu/utopic/blender/utopic-proposed

« back to all changes in this revision

Viewing changes to source/blender/editors/space_node/node_select.c

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-02-19 11:24:23 UTC
  • mfrom: (14.2.23 sid)
  • Revision ID: package-import@ubuntu.com-20140219112423-rkmaz2m7ha06d4tk
Tags: 2.69-3ubuntu1
* Merge with Debian; remaining changes:
  - Configure without OpenImageIO on armhf, as it is not available on
    Ubuntu.

Show diffs side-by-side

added added

removed removed

Lines of Context:
306
306
{
307
307
        bNode *node, *tnode;
308
308
        bNodeSocket *sock, *tsock;
309
 
        float mx, my;
 
309
        float cursor[2];
310
310
        int selected = 0;
311
311
        
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]);
317
314
        
318
315
        if (extend) {
319
316
                /* first do socket selection, these generally overlap with nodes.
320
317
                 * socket selection only in extend mode.
321
318
                 */
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);
324
321
                        selected = 1;
325
322
                }
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);
329
326
                        }
341
338
                }
342
339
                else {
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]);
345
342
                        
346
343
                        if (node) {
347
344
                                if ((node->flag & SELECT) && (node->flag & NODE_ACTIVE) == 0) {
362
359
        else {  /* extend == 0 */
363
360
                
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]);
366
363
                
367
364
                if (node) {
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)
836
833
                {
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);
838
836
                }
839
837
        }
840
838
        
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)
900
898
                {
901
 
                        space_node_view_flag(C, snode, ar, NODE_SELECT);
 
899
                        space_node_view_flag(C, snode, ar, NODE_SELECT, U.smooth_viewtx);
902
900
                }
903
901
 
904
902
        }
926
924
        uiEndBlock(C, block);
927
925
        
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;