Fix: avoid tagging file as modified when clicking in node editor
This commit is contained in:
@@ -642,7 +642,11 @@ bool nodeIsParentAndChild(const bNode *parent, const bNode *child);
|
||||
|
||||
int nodeCountSocketLinks(const bNodeTree *ntree, const bNodeSocket *sock);
|
||||
|
||||
void nodeSetSelected(bNode *node, bool select);
|
||||
/**
|
||||
* Selects or deselects the node. If the node is deselected, all its sockets are deselected too.
|
||||
* \return True if any selection was changed.
|
||||
*/
|
||||
bool nodeSetSelected(bNode *node, bool select);
|
||||
/**
|
||||
* Two active flags, ID nodes have special flag for buttons display.
|
||||
*/
|
||||
|
||||
@@ -3839,20 +3839,26 @@ bNode *nodeGetActive(bNodeTree *ntree)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void nodeSetSelected(bNode *node, const bool select)
|
||||
bool nodeSetSelected(bNode *node, const bool select)
|
||||
{
|
||||
if (select) {
|
||||
node->flag |= NODE_SELECT;
|
||||
return;
|
||||
bool changed = false;
|
||||
if (select != ((node->flag & NODE_SELECT) != 0)) {
|
||||
changed = true;
|
||||
SET_FLAG_FROM_TEST(node->flag, select, NODE_SELECT);
|
||||
}
|
||||
node->flag &= ~NODE_SELECT;
|
||||
/* deselect sockets too */
|
||||
if (select) {
|
||||
return changed;
|
||||
}
|
||||
/* Deselect sockets too. */
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
|
||||
changed |= (sock->flag & NODE_SELECT) != 0;
|
||||
sock->flag &= ~NODE_SELECT;
|
||||
}
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &node->outputs) {
|
||||
changed |= (sock->flag & NODE_SELECT) != 0;
|
||||
sock->flag &= ~NODE_SELECT;
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
void nodeClearActive(bNodeTree *ntree)
|
||||
|
||||
@@ -203,7 +203,7 @@ void node_keymap(wmKeyConfig *keyconf);
|
||||
rctf node_frame_rect_inside(const SpaceNode &snode, const bNode &node);
|
||||
bool node_or_socket_isect_event(const bContext &C, const wmEvent &event);
|
||||
|
||||
void node_deselect_all(bNodeTree &node_tree);
|
||||
bool node_deselect_all(bNodeTree &node_tree);
|
||||
void node_socket_select(bNode *node, bNodeSocket &sock);
|
||||
void node_socket_deselect(bNode *node, bNodeSocket &sock, bool deselect_node);
|
||||
void node_deselect_all_input_sockets(bNodeTree &node_tree, bool deselect_nodes);
|
||||
|
||||
@@ -245,11 +245,13 @@ static void node_socket_toggle(bNode *node, bNodeSocket &sock, bool deselect_nod
|
||||
}
|
||||
}
|
||||
|
||||
void node_deselect_all(bNodeTree &node_tree)
|
||||
bool node_deselect_all(bNodeTree &node_tree)
|
||||
{
|
||||
bool changed = false;
|
||||
for (bNode *node : node_tree.all_nodes()) {
|
||||
nodeSetSelected(node, false);
|
||||
changed |= nodeSetSelected(node, false);
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
void node_deselect_all_input_sockets(bNodeTree &node_tree, const bool deselect_nodes)
|
||||
@@ -631,8 +633,7 @@ static bool node_mouse_select(bContext *C,
|
||||
}
|
||||
else if (found || params->deselect_all) {
|
||||
/* Deselect everything. */
|
||||
node_deselect_all(node_tree);
|
||||
changed = true;
|
||||
changed = node_deselect_all(node_tree);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user