svn merge ^/trunk/blender -r49854:49867
[blender.git] / source / blender / editors / space_node / node_draw.c
index 57b08de2d71621ca56cac96cfaeda83052c40fc2..643ac177933640150da048d60ed1322af05a834f 100644 (file)
@@ -1039,6 +1039,8 @@ static void node_draw(const bContext *C, ARegion *ar, SpaceNode *snode, bNodeTre
                node->typeinfo->drawfunc(C, ar, snode, ntree, node);
 }
 
+#define USE_DRAW_TOT_UPDATE
+
 void node_draw_nodetree(const bContext *C, ARegion *ar, SpaceNode *snode, bNodeTree *ntree)
 {
        bNode *node;
@@ -1046,9 +1048,22 @@ void node_draw_nodetree(const bContext *C, ARegion *ar, SpaceNode *snode, bNodeT
        int a;
        
        if (ntree == NULL) return;      /* groups... */
-       
+
+#ifdef USE_DRAW_TOT_UPDATE
+       if (ntree->nodes.first) {
+               BLI_rctf_init_minmax(&ar->v2d.tot);
+       }
+#endif
+
        /* draw background nodes, last nodes in front */
        for (a = 0, node = ntree->nodes.first; node; node = node->next, a++) {
+
+#ifdef USE_DRAW_TOT_UPDATE
+               /* unrelated to background nodes, update the v2d->tot,
+                * can be anywhere before we draw the scroll bars */
+               BLI_rctf_union(&ar->v2d.tot, &node->totr);
+#endif
+
                if (!(node->flag & NODE_BACKGROUND))
                        continue;
                node->nr = a;        /* index of node in list, used for exec event code */