diff options
author | Germano <germano.costa@ig.com.br> | 2018-01-21 23:45:47 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2018-01-21 23:45:47 +0300 |
commit | 790025c01ed76c06e69e6054f1a718ca57771e28 (patch) | |
tree | 7461d495f199142172b0efa34e5ad75ea65def6a /source/blender/editors/screen/screen_ops.c | |
parent | 99efebd2dd24a8e0827cf0f13bc40c2844946676 (diff) | |
parent | 8d671f6f6550605ac738f7a9727375a024614837 (diff) |
Merge branch 'master' into blender2.8
# Conflicts:
# intern/cycles/blender/blender_mesh.cpp
# source/blender/editors/screen/screen_ops.c
# source/blender/editors/space_view3d/drawobject.c
Diffstat (limited to 'source/blender/editors/screen/screen_ops.c')
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index a69f9188f59..3c6c4058b84 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1470,8 +1470,6 @@ static void SCREEN_OT_area_move(wmOperatorType *ot) */ typedef struct sAreaSplitData { - int x, y; /* last used mouse position */ - int origval; /* for move areas */ int bigger, smaller; /* constraints for moving new edge */ int delta; /* delta move edge */ @@ -1718,9 +1716,6 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event) sd = (sAreaSplitData *)op->customdata; - sd->x = event->x; - sd->y = event->y; - if (event->type == EVT_ACTIONZONE_AREA) { /* do the split */ @@ -1792,8 +1787,15 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) const int dir = RNA_property_enum_get(op->ptr, prop_dir); sd->delta = (dir == 'v') ? event->x - sd->origval : event->y - sd->origval; - if (sd->previewmode == 0) - area_move_apply_do(C, sd->delta, sd->origval, dir, sd->bigger, sd->smaller, sd->do_snap); + + if (sd->previewmode == 0) { + if (sd->do_snap) { + const int snap_loc = area_snap_calc_location( + CTX_wm_screen(C), sd->delta, sd->origval, dir, sd->bigger, sd->smaller); + sd->delta = snap_loc - sd->origval; + } + area_move_apply_do(C, sd->delta, sd->origval, dir, sd->bigger, sd->smaller, false); + } else { if (sd->sarea) { ED_area_tag_redraw(sd->sarea); @@ -1802,7 +1804,26 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) sd->sarea = BKE_screen_find_area_xy(CTX_wm_screen(C), SPACE_TYPE_ANY, event->x, event->y); if (sd->sarea) { - ED_area_tag_redraw(sd->sarea); + ScrArea *sa = sd->sarea; + if (dir == 'v') { + sd->origsize = sa->winx; + sd->origmin = sa->totrct.xmin; + } + else { + sd->origsize = sa->winy; + sd->origmin = sa->totrct.ymin; + } + + if (sd->do_snap) { + sa->v1->editflag = sa->v2->editflag = sa->v3->editflag = sa->v4->editflag = 1; + + const int snap_loc = area_snap_calc_location( + CTX_wm_screen(C), sd->delta, sd->origval, dir, sd->origmin + sd->origsize, -sd->origmin); + + sa->v1->editflag = sa->v2->editflag = sa->v3->editflag = sa->v4->editflag = 0; + sd->delta = snap_loc - sd->origval; + } + update_factor = true; } @@ -1836,8 +1857,6 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) RNA_property_enum_set(op->ptr, prop_dir, (dir == 'v') ? 'h' : 'v'); area_split_preview_update_cursor(C, op); update_factor = true; - - ED_area_tag_redraw(sd->sarea); } } } @@ -1857,31 +1876,12 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) if (update_factor) { const int dir = RNA_property_enum_get(op->ptr, prop_dir); - float fac; - - if (dir == 'v') { - sd->origsize = sd->sarea->winx; - sd->origmin = sd->sarea->totrct.xmin; - } - else { - sd->origsize = sd->sarea->winy; - sd->origmin = sd->sarea->totrct.ymin; - } - - if (sd->do_snap) { - ScrArea *sa = sd->sarea; - sa->v1->editflag = sa->v2->editflag = sa->v3->editflag = sa->v4->editflag = 1; + float fac = (float)(sd->delta + sd->origval - sd->origmin) / sd->origsize; + RNA_float_set(op->ptr, "factor", fac); - int snap_loc = area_snap_calc_location( - CTX_wm_screen(C), sd->delta, sd->origval, dir, sd->origmin + sd->origsize, -sd->origmin); - - sa->v1->editflag = sa->v2->editflag = sa->v3->editflag = sa->v4->editflag = 0; - fac = snap_loc - sd->origmin; - } - else { - fac = (dir == 'v') ? event->x - sd->origmin : event->y - sd->origmin; + if (sd->sarea) { + ED_area_tag_redraw(sd->sarea); } - RNA_float_set(op->ptr, "factor", fac / (float)sd->origsize); } return OPERATOR_RUNNING_MODAL; |