}
-static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
+static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event)
{
static float lastofs[3] = {0,0,0};
View3D *v3d = CTX_wm_view3d(C);
if (rv3d->persmat[2][1] < 0.0f)
vod->reverse= -1.0f;
+ rv3d->rflag |= RV3D_NAVIGATING;
+}
+
+static void viewops_data_free(bContext *C, wmOperator *op)
+{
+ Paint *p = paint_get_active(CTX_data_scene(C));
+ ViewOpsData *vod= op->customdata;
+
+ vod->rv3d->rflag &= ~RV3D_NAVIGATING;
+
+ if(p && (p->flags & PAINT_FAST_NAVIGATE))
+ ED_region_tag_redraw(vod->ar);
+
+ MEM_freeN(vod);
+ op->customdata= NULL;
}
/* ************************** viewrotate **********************************/
}
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
-
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
return OPERATOR_CANCELLED;
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
vod= op->customdata;
/* switch from camera view when: */
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
static int viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
/* add temp handler */
WM_event_add_modal_handler(C, op);
}
else if (event_code==VIEW_CONFIRM) {
request_depth_update(CTX_wm_region_view3d(C));
-
- MEM_freeN(vod);
- op->customdata= NULL;
+ viewops_data_free(C, op);
return OPERATOR_FINISHED;
}
}
else {
/* makes op->customdata */
- viewops_data(C, op, event);
+ viewops_data_create(C, op, event);
/* add temp handler */
WM_event_add_modal_handler(C, op);