diff --git a/src/librt/primitives/arb8/edarb.c b/src/librt/primitives/arb8/edarb.c index 96095f2060..ce96da35ea 100644 --- a/src/librt/primitives/arb8/edarb.c +++ b/src/librt/primitives/arb8/edarb.c @@ -1329,7 +1329,6 @@ rt_solid_edit_arb_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_arb_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -1352,7 +1351,6 @@ rt_solid_edit_arb_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_arb_edit(s); return 0; } diff --git a/src/librt/primitives/ars/edars.c b/src/librt/primitives/ars/edars.c index 56bbfb1841..0e67e10c61 100644 --- a/src/librt/primitives/ars/edars.c +++ b/src/librt/primitives/ars/edars.c @@ -923,7 +923,6 @@ rt_solid_edit_ars_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_ars_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -948,7 +947,6 @@ rt_solid_edit_ars_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_ars_edit(s); return 0; } diff --git a/src/librt/primitives/bot/edbot.c b/src/librt/primitives/bot/edbot.c index 0b28d5e030..ac5de1e2a4 100644 --- a/src/librt/primitives/bot/edbot.c +++ b/src/librt/primitives/bot/edbot.c @@ -779,7 +779,6 @@ rt_solid_edit_bot_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_bot_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -814,7 +813,6 @@ rt_solid_edit_bot_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_bot_edit(s); return 0; } diff --git a/src/librt/primitives/bspline/edbspline.c b/src/librt/primitives/bspline/edbspline.c index 88f993fe44..459efabbe1 100644 --- a/src/librt/primitives/bspline/edbspline.c +++ b/src/librt/primitives/bspline/edbspline.c @@ -391,7 +391,6 @@ rt_solid_edit_bspline_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_bspline_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -421,7 +420,6 @@ rt_solid_edit_bspline_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_bspline_edit(s); return 0; } diff --git a/src/librt/primitives/cline/edcline.c b/src/librt/primitives/cline/edcline.c index 7096f92389..347ec8e1a3 100644 --- a/src/librt/primitives/cline/edcline.c +++ b/src/librt/primitives/cline/edcline.c @@ -330,7 +330,6 @@ rt_solid_edit_cline_edit_xy( case ECMD_CLINE_SCALE_T: case ECMD_CLINE_SCALE_R: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_cline_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -347,7 +346,6 @@ rt_solid_edit_cline_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_cline_edit(s); return 0; } diff --git a/src/librt/primitives/dsp/eddsp.c b/src/librt/primitives/dsp/eddsp.c index 01e4fa776b..06a40d13f3 100644 --- a/src/librt/primitives/dsp/eddsp.c +++ b/src/librt/primitives/dsp/eddsp.c @@ -279,7 +279,6 @@ rt_solid_edit_dsp_edit_xy( case ECMD_DSP_SCALE_Y: case ECMD_DSP_SCALE_ALT: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_dsp_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -293,7 +292,6 @@ rt_solid_edit_dsp_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_dsp_edit(s); return 0; } diff --git a/src/librt/primitives/ebm/edebm.c b/src/librt/primitives/ebm/edebm.c index e2bbc2a0b8..ea73233dd8 100644 --- a/src/librt/primitives/ebm/edebm.c +++ b/src/librt/primitives/ebm/edebm.c @@ -265,7 +265,6 @@ rt_solid_edit_ebm_edit_xy( case RT_SOLID_EDIT_PSCALE: case ECMD_EBM_HEIGHT: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_ebm_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -279,7 +278,6 @@ rt_solid_edit_ebm_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_ebm_edit(s); return 0; } diff --git a/src/librt/primitives/extrude/edextrude.c b/src/librt/primitives/extrude/edextrude.c index 818fb931b7..4985640c2b 100644 --- a/src/librt/primitives/extrude/edextrude.c +++ b/src/librt/primitives/extrude/edextrude.c @@ -364,7 +364,6 @@ rt_solid_edit_extrude_edit_xy( case RT_SOLID_EDIT_PSCALE: case ECMD_EXTR_SCALE_H: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_extrude_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -381,7 +380,6 @@ rt_solid_edit_extrude_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_extrude_edit(s); return 0; } diff --git a/src/librt/primitives/metaball/edmetaball.c b/src/librt/primitives/metaball/edmetaball.c index 29837ab8f5..20502fc17c 100644 --- a/src/librt/primitives/metaball/edmetaball.c +++ b/src/librt/primitives/metaball/edmetaball.c @@ -534,7 +534,6 @@ rt_solid_edit_metaball_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_metaball_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -558,7 +557,6 @@ rt_solid_edit_metaball_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_metaball_edit(s); return 0; } diff --git a/src/librt/primitives/nmg/ednmg.c b/src/librt/primitives/nmg/ednmg.c index 6e43dd6af1..902d17c659 100644 --- a/src/librt/primitives/nmg/ednmg.c +++ b/src/librt/primitives/nmg/ednmg.c @@ -1021,7 +1021,6 @@ rt_solid_edit_nmg_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_nmg_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -1049,7 +1048,6 @@ rt_solid_edit_nmg_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_nmg_edit(s); return 0; } diff --git a/src/librt/primitives/pipe/edpipe.c b/src/librt/primitives/pipe/edpipe.c index be0ce38cb5..b113b40a7b 100644 --- a/src/librt/primitives/pipe/edpipe.c +++ b/src/librt/primitives/pipe/edpipe.c @@ -1224,7 +1224,6 @@ rt_solid_edit_pipe_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_pipe_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -1250,7 +1249,6 @@ rt_solid_edit_pipe_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_pipe_edit(s); return 0; } diff --git a/src/librt/primitives/tgc/edtgc.c b/src/librt/primitives/tgc/edtgc.c index 0ad7425e23..fbbadf7d59 100644 --- a/src/librt/primitives/tgc/edtgc.c +++ b/src/librt/primitives/tgc/edtgc.c @@ -816,10 +816,13 @@ rt_solid_edit_tgc_pscale(struct rt_solid_edit *s) int rt_solid_edit_tgc_edit(struct rt_solid_edit *s) { + int ret = 0; + switch (s->edit_flag) { case RT_SOLID_EDIT_SCALE: /* scale the solid uniformly about its vertex point */ - return rt_solid_edit_generic_sscale(s, &s->es_int); + ret = rt_solid_edit_generic_sscale(s, &s->es_int); + break; case RT_SOLID_EDIT_TRANS: /* translate solid */ rt_solid_edit_generic_strans(s, &s->es_int); @@ -829,18 +832,28 @@ rt_solid_edit_tgc_edit(struct rt_solid_edit *s) rt_solid_edit_generic_srot(s, &s->es_int); break; case ECMD_TGC_MV_H: - return ecmd_tgc_mv_h(s); + ret = ecmd_tgc_mv_h(s); + break; case ECMD_TGC_MV_HH: - return ecmd_tgc_mv_hh(s); + ret = ecmd_tgc_mv_hh(s); + break; case ECMD_TGC_ROT_H: - return ecmd_tgc_rot_h(s); + ret = ecmd_tgc_rot_h(s); + break; case ECMD_TGC_ROT_AB: - return ecmd_tgc_rot_ab(s); + ret = ecmd_tgc_rot_ab(s); + break; default: - return rt_solid_edit_tgc_pscale(s); + ret = rt_solid_edit_tgc_pscale(s); } - return 0; + bu_clbk_t f = NULL; + void *d = NULL; + rt_solid_edit_map_clbk_get(&f, &d, s->m, ECMD_REPLOT_EDITING_SOLID, BU_CLBK_DURING); + if (f) + (*f)(0, NULL, d, NULL); + + return ret; } int @@ -858,7 +871,6 @@ rt_solid_edit_tgc_edit_xy( case RT_SOLID_EDIT_SCALE: case RT_SOLID_EDIT_PSCALE: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_tgc_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -879,12 +891,10 @@ rt_solid_edit_tgc_edit_xy( default: // Everything else should be a scale rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_tgc_edit(s); return 0; } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_tgc_edit(s); return 0; } diff --git a/src/librt/primitives/vol/edvol.c b/src/librt/primitives/vol/edvol.c index b2c0b0e094..488f5e2ce9 100644 --- a/src/librt/primitives/vol/edvol.c +++ b/src/librt/primitives/vol/edvol.c @@ -366,7 +366,6 @@ rt_solid_edit_vol_edit_xy( case ECMD_VOL_THRESH_LO: case ECMD_VOL_THRESH_HI: rt_solid_edit_generic_sscale_xy(s, mousevec); - rt_solid_edit_vol_edit(s); return 0; case RT_SOLID_EDIT_TRANS: rt_solid_edit_generic_strans_xy(&pos_view, s, mousevec); @@ -380,7 +379,6 @@ rt_solid_edit_vol_edit_xy( } rt_update_edit_absolute_tran(s, pos_view); - rt_solid_edit_vol_edit(s); return 0; } diff --git a/src/mged/edsol.c b/src/mged/edsol.c index 5a7ba86eaf..51a14714f3 100644 --- a/src/mged/edsol.c +++ b/src/mged/edsol.c @@ -754,15 +754,21 @@ sedit_mouse(struct mged_state *s, const vect_t mousevec) if (s->s_edit->edit_flag <= 0) return; + int ret = 0; const struct rt_db_internal *ip = &s->s_edit->es_int; if (EDOBJ[ip->idb_type].ft_edit_xy) { bu_vls_trunc(s->s_edit->log_str, 0); - (*EDOBJ[ip->idb_type].ft_edit_xy)(s->s_edit, mousevec); + ret = (*EDOBJ[ip->idb_type].ft_edit_xy)(s->s_edit, mousevec); if (bu_vls_strlen(s->s_edit->log_str)) { Tcl_AppendResult(s->interp, bu_vls_cstr(s->s_edit->log_str), (char *)NULL); bu_vls_trunc(s->s_edit->log_str, 0); } } + + if (ret == BRLCAD_ERROR) + return; + + rt_solid_edit_process(s->s_edit); }