static int view_pan_modal(bContext *C, wmOperator *op, const wmEvent *event) { SpaceClip *sc = CTX_wm_space_clip(C); ViewPanData *vpd = op->customdata; float offset[2]; switch (event->type) { case MOUSEMOVE: copy_v2_v2(vpd->vec, &vpd->xorig); offset[0] = (vpd->x - event->x) / sc->zoom; offset[1] = (vpd->y - event->y) / sc->zoom; RNA_float_set_array(op->ptr, "offset", offset); view_pan_exec(C, op); break; case ESCKEY: view_pan_exit(C, op, 1); return OPERATOR_CANCELLED; case SPACEKEY: view_pan_exit(C, op, 0); return OPERATOR_FINISHED; default: if (event->type == vpd->event_type && event->val == KM_RELEASE) { view_pan_exit(C, op, 0); return OPERATOR_FINISHED; } break; } return OPERATOR_RUNNING_MODAL; }
static int view_pan_cancel(bContext *C, wmOperator *op) { view_pan_exit(C, op, 1); return OPERATOR_CANCELLED; }
static void view_pan_cancel(bContext *C, wmOperator *op) { view_pan_exit(C, op, true); }