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 /source/blender/editors/space_node/node_edit.c
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.
Diffstat (limited to 'source/blender/editors/space_node/node_edit.c')
-rw-r--r--source/blender/editors/space_node/node_edit.c43
1 files changed, 22 insertions, 21 deletions
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;