Merge branch 'blender-v3.3-release'
This commit is contained in:
commit
6a9cf59ce1
|
@ -27,6 +27,13 @@
|
|||
#include "transform_convert.h"
|
||||
#include "transform_snap.h"
|
||||
|
||||
struct TransCustomDataNode {
|
||||
View2DEdgePanData edgepan_data;
|
||||
|
||||
/* Compare if the view has changed so we can update with `transformViewUpdate`. */
|
||||
rctf viewrect_prev;
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Node Transform Creation
|
||||
* \{ */
|
||||
|
@ -95,15 +102,17 @@ static void createTransNodeData(bContext *UNUSED(C), TransInfo *t)
|
|||
SpaceNode *snode = t->area->spacedata.first;
|
||||
|
||||
/* Custom data to enable edge panning during the node transform */
|
||||
View2DEdgePanData *customdata = MEM_callocN(sizeof(*customdata), __func__);
|
||||
struct TransCustomDataNode *customdata = MEM_callocN(sizeof(*customdata), __func__);
|
||||
UI_view2d_edge_pan_init(t->context,
|
||||
customdata,
|
||||
&customdata->edgepan_data,
|
||||
NODE_EDGE_PAN_INSIDE_PAD,
|
||||
NODE_EDGE_PAN_OUTSIDE_PAD,
|
||||
NODE_EDGE_PAN_SPEED_RAMP,
|
||||
NODE_EDGE_PAN_MAX_SPEED,
|
||||
NODE_EDGE_PAN_DELAY,
|
||||
NODE_EDGE_PAN_ZOOM_INFLUENCE);
|
||||
customdata->viewrect_prev = customdata->edgepan_data.initial_rect;
|
||||
|
||||
t->custom.type.data = customdata;
|
||||
t->custom.type.use_free = true;
|
||||
|
||||
|
@ -153,13 +162,12 @@ static void createTransNodeData(bContext *UNUSED(C), TransInfo *t)
|
|||
static void flushTransNodes(TransInfo *t)
|
||||
{
|
||||
const float dpi_fac = UI_DPI_FAC;
|
||||
float offset[2] = {0.0f, 0.0f};
|
||||
|
||||
View2DEdgePanData *customdata = (View2DEdgePanData *)t->custom.type.data;
|
||||
struct TransCustomDataNode *customdata = (struct TransCustomDataNode *)t->custom.type.data;
|
||||
|
||||
if (t->options & CTX_VIEW2D_EDGE_PAN) {
|
||||
if (t->state == TRANS_CANCEL) {
|
||||
UI_view2d_edge_pan_cancel(t->context, customdata);
|
||||
UI_view2d_edge_pan_cancel(t->context, &customdata->edgepan_data);
|
||||
}
|
||||
else {
|
||||
/* Edge panning functions expect window coordinates, mval is relative to region */
|
||||
|
@ -167,13 +175,17 @@ static void flushTransNodes(TransInfo *t)
|
|||
t->region->winrct.xmin + t->mval[0],
|
||||
t->region->winrct.ymin + t->mval[1],
|
||||
};
|
||||
const rctf rect = t->region->v2d.cur;
|
||||
UI_view2d_edge_pan_apply(t->context, customdata, xy);
|
||||
if (!BLI_rctf_compare(&rect, &t->region->v2d.cur, FLT_EPSILON)) {
|
||||
/* Additional offset due to change in view2D rect. */
|
||||
BLI_rctf_transform_pt_v(&t->region->v2d.cur, &rect, offset, offset);
|
||||
tranformViewUpdate(t);
|
||||
}
|
||||
UI_view2d_edge_pan_apply(t->context, &customdata->edgepan_data, xy);
|
||||
}
|
||||
}
|
||||
|
||||
float offset[2] = {0.0f, 0.0f};
|
||||
if (t->state != TRANS_CANCEL) {
|
||||
if (!BLI_rctf_compare(&customdata->viewrect_prev, &t->region->v2d.cur, FLT_EPSILON)) {
|
||||
/* Additional offset due to change in view2D rect. */
|
||||
BLI_rctf_transform_pt_v(&t->region->v2d.cur, &customdata->viewrect_prev, offset, offset);
|
||||
tranformViewUpdate(t);
|
||||
customdata->viewrect_prev = t->region->v2d.cur;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue