@@ -936,14 +936,16 @@ f_ill(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
936
936
(void )chg_state (s , ST_O_PICK , ST_O_PATH , "Keyboard illuminate" );
937
937
} else {
938
938
/* 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
+ }
947
949
}
948
950
}
949
951
}
@@ -1056,17 +1058,18 @@ f_sed(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])
1056
1058
return TCL_ERROR ;
1057
1059
}
1058
1060
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
+ }
1067
1071
}
1068
1072
1069
-
1070
1073
return TCL_OK ;
1071
1074
}
1072
1075
0 commit comments