Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2014-05-09 10:51:37 +0400
committerLukas Tönne <lukas.toenne@gmail.com>2014-05-09 10:53:48 +0400
commitd61f8a5a22b7658582470cd15ba5f3713e9c3570 (patch)
treef29a1b1d61b19f728e7771bb5f1cdb99ad5fd040
parentc5a946b2b8baa0330237db724e5af383a9ae3088 (diff)
Fix T40094 Faulty resizing behavior of frame node.
Frame nodes still have the "hidden" flag like all other nodes, but this has to be ignored during resizing. width/height range for the frame nodes must be unlimited for this to work correctly.
-rw-r--r--source/blender/editors/space_node/drawnode.c2
-rw-r--r--source/blender/editors/space_node/node_edit.c43
2 files changed, 23 insertions, 22 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 78333de1fe9..8ef1d0bef99 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -335,7 +335,7 @@ static void node_draw_frame_prepare(const bContext *UNUSED(C), bNodeTree *ntree,
{
const float margin = 1.5f * U.widget_unit;
NodeFrame *data = (NodeFrame *)node->storage;
- int bbinit;
+ bool bbinit;
bNode *tnode;
rctf rect, noderect;
float xmax, ymax;
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index f9b5b097787..fc0c82faba8 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -874,37 +874,38 @@ static int node_resize_modal(bContext *C, wmOperator *op, const wmEvent *event)
dy = (my - nsw->mystart) / UI_DPI_FAC;
if (node) {
- if (node->flag & NODE_HIDDEN) {
- float widthmin = 0.0f;
- float widthmax = 100.0f;
- if (nsw->directions & NODE_RESIZE_RIGHT) {
- node->miniwidth = nsw->oldminiwidth + dx;
- CLAMP(node->miniwidth, widthmin, widthmax);
- }
- if (nsw->directions & NODE_RESIZE_LEFT) {
- float locmax = nsw->oldlocx + nsw->oldminiwidth;
-
- node->locx = nsw->oldlocx + dx;
- CLAMP(node->locx, locmax - widthmax, locmax - widthmin);
- node->miniwidth = locmax - node->locx;
- }
+ /* width can use node->width or node->miniwidth (hidden nodes) */
+ float *pwidth;
+ float oldwidth, widthmin, widthmax;
+ /* ignore hidden flag for frame nodes */
+ bool use_hidden = (node->type != NODE_FRAME);
+ if (use_hidden && node->flag & NODE_HIDDEN) {
+ pwidth = &node->miniwidth;
+ oldwidth = nsw->oldminiwidth;
+ widthmin = 0.0f;
+ widthmax = 100.0f;
}
else {
- float widthmin = node->typeinfo->minwidth;
- float widthmax = node->typeinfo->maxwidth;
+ pwidth = &node->width;
+ oldwidth = nsw->oldwidth;
+ widthmin = node->typeinfo->minwidth;
+ widthmax = node->typeinfo->maxwidth;
+ }
+
+ {
if (nsw->directions & NODE_RESIZE_RIGHT) {
- node->width = nsw->oldwidth + dx;
- CLAMP(node->width, widthmin, widthmax);
+ *pwidth = oldwidth + dx;
+ CLAMP(*pwidth, widthmin, widthmax);
}
if (nsw->directions & NODE_RESIZE_LEFT) {
- float locmax = nsw->oldlocx + nsw->oldwidth;
+ float locmax = nsw->oldlocx + oldwidth;
node->locx = nsw->oldlocx + dx;
CLAMP(node->locx, locmax - widthmax, locmax - widthmin);
- node->width = locmax - node->locx;
+ *pwidth = locmax - node->locx;
}
}
-
+
/* height works the other way round ... */
{
float heightmin = UI_DPI_FAC * node->typeinfo->minheight;