Skip to content

Commit aef25b4

Browse files
committed
Only need to set up s_edit once per cycle.
1 parent dffd5f4 commit aef25b4

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

src/mged/chgview.c

+20-17
Original file line numberDiff line numberDiff line change
@@ -936,14 +936,16 @@ f_ill(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
936936
(void)chg_state(s, ST_O_PICK, ST_O_PATH, "Keyboard illuminate");
937937
} else {
938938
/* Check details, Init menu, set state=ST_S_EDIT */
939-
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
940-
s->s_edit = rt_solid_edit_create(&bdata->s_fullpath, s->dbip, &s->tol.tol, view_state->vs_gvp);
941-
if (s->s_edit) {
942-
Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit->edit_flag, TCL_LINK_INT);
943-
s->s_edit->mv_context = mged_variables->mv_context;
944-
s->s_edit->vlfree = &rt_vlfree;
945-
mged_edit_clbk_sync(s->s_edit, s);
946-
init_sedit(s);
939+
if (!s->s_edit) {
940+
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
941+
s->s_edit = rt_solid_edit_create(&bdata->s_fullpath, s->dbip, &s->tol.tol, view_state->vs_gvp);
942+
if (s->s_edit) {
943+
Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit->edit_flag, TCL_LINK_INT);
944+
s->s_edit->mv_context = mged_variables->mv_context;
945+
s->s_edit->vlfree = &rt_vlfree;
946+
mged_edit_clbk_sync(s->s_edit, s);
947+
init_sedit(s);
948+
}
947949
}
948950
}
949951
}
@@ -1056,17 +1058,18 @@ f_sed(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
10561058
return TCL_ERROR;
10571059
}
10581060

1059-
/* Set up solid edit state */
1060-
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
1061-
s->s_edit = rt_solid_edit_create(&bdata->s_fullpath, s->dbip, &s->tol.tol, view_state->vs_gvp);
1062-
if (s->s_edit) {
1063-
Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit->edit_flag, TCL_LINK_INT);
1064-
s->s_edit->mv_context = mged_variables->mv_context;
1065-
s->s_edit->vlfree = &rt_vlfree;
1066-
mged_edit_clbk_sync(s->s_edit, s);
1061+
/* Set up solid edit state, if f_ill hasn't already done so. */
1062+
if (!s->s_edit) {
1063+
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
1064+
s->s_edit = rt_solid_edit_create(&bdata->s_fullpath, s->dbip, &s->tol.tol, view_state->vs_gvp);
1065+
if (s->s_edit) {
1066+
Tcl_LinkVar(s->interp, "edit_solid_flag", (char *)&s->s_edit->edit_flag, TCL_LINK_INT);
1067+
s->s_edit->mv_context = mged_variables->mv_context;
1068+
s->s_edit->vlfree = &rt_vlfree;
1069+
mged_edit_clbk_sync(s->s_edit, s);
1070+
}
10671071
}
10681072

1069-
10701073
return TCL_OK;
10711074
}
10721075

0 commit comments

Comments
 (0)