Asset Browser: Avoid appending asset data-block when drop operator will fail
For assets, the copy callback of the drop-box would append the asset data-block. Check if the operator's poll succeeds before calling the copy callback. Otherwise the data-block is "secretly" appended, which the user doesn't expect and won't notice without checking the file data in the Outliner. For masks I had to extend the poll function, it didn't check context sufficiently.
This commit is contained in:
@@ -312,6 +312,13 @@ void NODE_OT_add_reroute(wmOperatorType *ot)
|
||||
|
||||
/* ****************** Add File Node Operator ******************* */
|
||||
|
||||
static bool node_add_file_poll(bContext *C)
|
||||
{
|
||||
const SpaceNode *snode = CTX_wm_space_node(C);
|
||||
return ED_operator_node_editable(C) &&
|
||||
ELEM(snode->nodetree->type, NTREE_SHADER, NTREE_TEXTURE, NTREE_COMPOSIT);
|
||||
}
|
||||
|
||||
static int node_add_file_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
@@ -396,7 +403,7 @@ void NODE_OT_add_file(wmOperatorType *ot)
|
||||
/* callbacks */
|
||||
ot->exec = node_add_file_exec;
|
||||
ot->invoke = node_add_file_invoke;
|
||||
ot->poll = ED_operator_node_editable;
|
||||
ot->poll = node_add_file_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
|
||||
|
||||
Reference in New Issue
Block a user