static int transform_invoke(bContext *C, wmOperator *op, const wmEvent *event) { if (!transformops_data(C, op, event)) { G.moving = 0; return OPERATOR_CANCELLED; } if (RNA_struct_property_is_set(op->ptr, "value")) { return transform_exec(C, op); } else { /* add temp handler */ WM_event_add_modal_handler(C, op); op->flag |= OP_IS_MODAL_GRAB_CURSOR; // XXX maybe we want this with the manipulator only? return OPERATOR_RUNNING_MODAL; } }
static int transform_exec(bContext *C, wmOperator *op) { TransInfo *t; if (!transformops_data(C, op, NULL)) { G.moving = 0; return OPERATOR_CANCELLED; } t = op->customdata; t->options |= CTX_AUTOCONFIRM; transformApply(C, t); transformEnd(C, t); transformops_exit(C, op); return OPERATOR_FINISHED; }