diff options
Diffstat (limited to 'source/blender/editors/space_node/node_intern.hh')
-rw-r--r-- | source/blender/editors/space_node/node_intern.hh | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/source/blender/editors/space_node/node_intern.hh b/source/blender/editors/space_node/node_intern.hh index f3ba405c6d0..2e55bb0cb28 100644 --- a/source/blender/editors/space_node/node_intern.hh +++ b/source/blender/editors/space_node/node_intern.hh @@ -43,6 +43,9 @@ struct bNodeLink; struct bNodeSocket; struct wmGizmoGroupType; struct wmKeyConfig; +namespace blender { +struct float2; +} struct wmWindow; /** Temporary data used in node link drag modal operator. */ @@ -50,14 +53,29 @@ struct bNodeLinkDrag { /** Links dragged by the operator. */ blender::Vector<bNodeLink *> links; bool from_multi_input_socket; - int in_out; + eNodeSocketInOut in_out; + + /** Draw handler for the "+" icon when dragging a link in empty space. */ + void *draw_handle; /** Temporarily stores the last picked link from multi-input socket operator. */ - struct bNodeLink *last_picked_multi_input_socket_link; + bNodeLink *last_picked_multi_input_socket_link; + + /** + * Temporarily stores the last hovered socket for multi-input socket operator. + * Store it to recalculate sorting after it is no longer hovered. + */ + bNode *last_node_hovered_while_dragging_a_link; - /** Temporarily stores the last hovered socket for multi-input socket operator. - * Store it to recalculate sorting after it is no longer hovered. */ - struct bNode *last_node_hovered_while_dragging_a_link; + /* The cursor position, used for drawing a + icon when dragging a node link. */ + std::array<int, 2> cursor; + + /** The node the drag started at. */ + bNode *start_node; + /** The socket the drag started at. */ + bNodeSocket *start_socket; + /** The number of links connected to the #start_socket when the drag started. */ + int start_link_count; /* Data for edge panning */ View2DEdgePanData pan_data; @@ -327,4 +345,9 @@ namespace blender::ed::space_node { Vector<ui::ContextPathItem> context_path_for_space_node(const bContext &C); -} +void invoke_node_link_drag_add_menu(bContext &C, + bNode &node, + bNodeSocket &socket, + const float2 &cursor); + +} // namespace blender::ed::space_node |