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 Toenne <lukas.toenne@googlemail.com>2011-11-22 21:49:06 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2011-11-22 21:49:06 +0400
commitb450d3c3b6585cefe52d007c0088c4dc7b2e78ec (patch)
treefc4cb80a0b3c3940b8529b8620dd7bff49a10467 /source/blender/editors/space_node/drawnode.c
parent470cfd4aeb010b4a674d27ace3cfffad2ca6c4f0 (diff)
Fix for long-standing TODO item: Clicking on overlapping nodes would activate buttons below.
This patch adds a new CLIP_EVENTS flag for uiBlock, which will prevent the ui_but_find_mouse_over search function from looking into "lower" uiBlocks (i.e. those further back in the list). The order of block creation for nodes has also been updated to use the z-ordering (just the nodetree->nodes list). In order for this to work, the bounding box values of the uiBlocks have to be set explicitely to fit the node size, those are usually either zero or calculated from the internal buttons.
Diffstat (limited to 'source/blender/editors/space_node/drawnode.c')
-rw-r--r--source/blender/editors/space_node/drawnode.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 29f67844827..4e9ac08d8c8 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -471,6 +471,7 @@ static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode)
float locx, locy;
rctf *rect= &gnode->totr;
float node_group_frame= U.dpi*NODE_GROUP_FRAME/72;
+ float group_header= 26*U.dpi/72;
int counter;
int dy;
@@ -594,6 +595,15 @@ static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode)
gsock = gsock->next;
}
}
+
+ /* Set the block bounds to clip mouse events from underlying nodes.
+ * Add margin for header and input/output columns.
+ */
+ uiExplicitBoundsBlock(gnode->block,
+ rect->xmin - node_group_frame,
+ rect->ymin,
+ rect->xmax + node_group_frame,
+ rect->ymax + group_header);
}
}