static int localview_exec(bContext *C, wmOperator *op) { const int smooth_viewtx = WM_operator_smooth_viewtx_get(op); wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); ScrArea *sa = CTX_wm_area(C); View3D *v3d = CTX_wm_view3d(C); bool changed; if (v3d->localvd) { changed = view3d_localview_exit(wm, win, bmain, scene, sa, smooth_viewtx); } else { changed = view3d_localview_init(wm, win, bmain, scene, sa, smooth_viewtx, op->reports); } if (changed) { DAG_id_type_tag(bmain, ID_OB); ED_area_tag_redraw(sa); /* unselected objects become selected when exiting */ if (v3d->localvd == NULL) { WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); } return OPERATOR_FINISHED; } else { return OPERATOR_CANCELLED; } }
static int localview_exec(bContext *C, wmOperator *op) { Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); ScrArea *sa = CTX_wm_area(C); View3D *v3d = CTX_wm_view3d(C); bool change; if (v3d->localvd) { change = view3d_localview_exit(bmain, scene, sa); } else { change = view3d_localview_init(bmain, scene, sa, op->reports); } if (change) { DAG_id_type_tag(bmain, ID_OB); ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; } else { return OPERATOR_CANCELLED; } }