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

« back to all changes in this revision

Viewing changes to source/blender/editors/space_node/node_edit.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:
510
510
        
511
511
        out = nodeAddStaticNode(C, sce->nodetree, CMP_NODE_COMPOSITE);
512
512
        out->locx = 300.0f; out->locy = 400.0f;
513
 
        out->id = &sce->id;
514
 
        id_us_plus(out->id);
515
513
        
516
514
        in = nodeAddStaticNode(C, sce->nodetree, CMP_NODE_R_LAYERS);
517
515
        in->locx = 10.0f; in->locy = 400.0f;
518
 
        in->id = &sce->id;
519
 
        id_us_plus(in->id);
520
516
        nodeSetActive(sce->nodetree, in);
521
517
        
522
518
        /* links from color to color */
858
854
        nsw->oldminiwidth = node->miniwidth;
859
855
        nsw->directions = dir;
860
856
        
861
 
        WM_cursor_modal(CTX_wm_window(C), node_get_resize_cursor(dir));
 
857
        WM_cursor_modal_set(CTX_wm_window(C), node_get_resize_cursor(dir));
862
858
        /* add modal handler */
863
859
        WM_event_add_modal_handler(C, op);
864
860
}
865
861
 
866
862
static void node_resize_exit(bContext *C, wmOperator *op, int UNUSED(cancel))
867
863
{
868
 
        WM_cursor_restore(CTX_wm_window(C));
 
864
        WM_cursor_modal_restore(CTX_wm_window(C));
869
865
        
870
866
        MEM_freeN(op->customdata);
871
867
        op->customdata = NULL;
1060
1056
 
1061
1057
/* checks snode->mouse position, and returns found node/socket */
1062
1058
/* type is SOCK_IN and/or SOCK_OUT */
1063
 
int node_find_indicated_socket(SpaceNode *snode, bNode **nodep, bNodeSocket **sockp, int in_out)
 
1059
int node_find_indicated_socket(SpaceNode *snode, bNode **nodep, bNodeSocket **sockp, float cursor[2], int in_out)
1064
1060
{
1065
1061
        bNode *node;
1066
1062
        bNodeSocket *sock;
1072
1068
        /* check if we click in a socket */
1073
1069
        for (node = snode->edittree->nodes.first; node; node = node->next) {
1074
1070
                
1075
 
                rect.xmin = snode->cursor[0] - (NODE_SOCKSIZE + 4);
1076
 
                rect.ymin = snode->cursor[1] - (NODE_SOCKSIZE + 4);
1077
 
                rect.xmax = snode->cursor[0] + (NODE_SOCKSIZE + 4);
1078
 
                rect.ymax = snode->cursor[1] + (NODE_SOCKSIZE + 4);
 
1071
                rect.xmin = cursor[0] - (NODE_SOCKSIZE + 4);
 
1072
                rect.ymin = cursor[1] - (NODE_SOCKSIZE + 4);
 
1073
                rect.xmax = cursor[0] + (NODE_SOCKSIZE + 4);
 
1074
                rect.ymax = cursor[1] + (NODE_SOCKSIZE + 4);
1079
1075
                
1080
1076
                if (!(node->flag & NODE_HIDDEN)) {
1081
1077
                        /* extra padding inside and out - allow dragging on the text areas too */
1735
1731
                node = nodeGetActive(snode->edittree);
1736
1732
        }
1737
1733
 
1738
 
        if (!node)
 
1734
        if (!node || node->type != CMP_NODE_OUTPUT_FILE)
1739
1735
                return OPERATOR_CANCELLED;
1740
1736
 
1741
1737
        RNA_string_get(op->ptr, "file_path", file_path);
1781
1777
                node = nodeGetActive(snode->edittree);
1782
1778
        }
1783
1779
 
1784
 
        if (!node)
 
1780
        if (!node || node->type != CMP_NODE_OUTPUT_FILE)
1785
1781
                return OPERATOR_CANCELLED;
1786
1782
        
1787
1783
        if (!ntreeCompositOutputFileRemoveActiveSocket(ntree, node))
1823
1819
        else if (snode && snode->edittree)
1824
1820
                node = nodeGetActive(snode->edittree);
1825
1821
 
1826
 
        if (!node)
 
1822
        if (!node || node->type != CMP_NODE_OUTPUT_FILE)
1827
1823
                return OPERATOR_CANCELLED;
1828
1824
 
1829
1825
        nimf = node->storage;
2091
2087
        return OPERATOR_FINISHED;
2092
2088
}
2093
2089
 
2094
 
static int node_clipboard_paste_invoke(bContext *C, wmOperator *op, const wmEvent *event)
2095
 
{
2096
 
        ARegion *ar = CTX_wm_region(C);
2097
 
        SpaceNode *snode = CTX_wm_space_node(C);
2098
 
 
2099
 
        /* convert mouse coordinates to v2d space */
2100
 
        UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &snode->cursor[0], &snode->cursor[1]);
2101
 
 
2102
 
        return node_clipboard_paste_exec(C, op);
2103
 
}
2104
 
 
2105
2090
void NODE_OT_clipboard_paste(wmOperatorType *ot)
2106
2091
{
2107
2092
        /* identifiers */
2111
2096
 
2112
2097
        /* api callbacks */
2113
2098
        ot->exec = node_clipboard_paste_exec;
2114
 
        ot->invoke = node_clipboard_paste_invoke;
2115
2099
        ot->poll = ED_operator_node_editable;
2116
2100
 
2117
2101
        /* flags */
2262
2246
                return OPERATOR_CANCELLED;
2263
2247
        
2264
2248
        switch (direction) {
2265
 
        case 1: {       /* up */
2266
 
                bNodeSocket *before = iosock->prev;
2267
 
                BLI_remlink(lb, iosock);
2268
 
                if (before)
2269
 
                        BLI_insertlinkbefore(lb, before, iosock);
2270
 
                else
2271
 
                        BLI_addhead(lb, iosock);
2272
 
                break;
2273
 
        }
2274
 
        case 2: {       /* down */
2275
 
                bNodeSocket *after = iosock->next;
2276
 
                BLI_remlink(lb, iosock);
2277
 
                if (after)
2278
 
                        BLI_insertlinkafter(lb, after, iosock);
2279
 
                else
2280
 
                        BLI_addtail(lb, iosock);
2281
 
                break;
2282
 
        }
 
2249
                case 1:
 
2250
                {       /* up */
 
2251
                        bNodeSocket *before = iosock->prev;
 
2252
                        BLI_remlink(lb, iosock);
 
2253
                        if (before)
 
2254
                                BLI_insertlinkbefore(lb, before, iosock);
 
2255
                        else
 
2256
                                BLI_addhead(lb, iosock);
 
2257
                        break;
 
2258
                }
 
2259
                case 2:
 
2260
                {       /* down */
 
2261
                        bNodeSocket *after = iosock->next;
 
2262
                        BLI_remlink(lb, iosock);
 
2263
                        if (after)
 
2264
                                BLI_insertlinkafter(lb, after, iosock);
 
2265
                        else
 
2266
                                BLI_addtail(lb, iosock);
 
2267
                        break;
 
2268
                }
2283
2269
        }
2284
2270
        
2285
2271
        ntreeUpdateTree(CTX_data_main(C), ntree);