Skip to content

Commit 1690470

Browse files
committed
Need to be able to reset menus - NULL is a valid input for mmenu_set. Make sure the menus are reset after destroying s_edit.
1 parent aef25b4 commit 1690470

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/mged/edsol.c

+18
Original file line numberDiff line numberDiff line change
@@ -1237,6 +1237,8 @@ oedit_reject(struct mged_state *s)
12371237
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
12381238
rt_solid_edit_destroy(s->s_edit);
12391239
s->s_edit = NULL;
1240+
mmenu_set(s, MENU_L1, NULL);
1241+
mmenu_set(s, MENU_L2, NULL);
12401242
}
12411243

12421244

@@ -1301,6 +1303,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
13011303
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13021304
rt_solid_edit_destroy(s->s_edit);
13031305
s->s_edit = NULL;
1306+
mmenu_set(s, MENU_L1, NULL);
1307+
mmenu_set(s, MENU_L2, NULL);
13041308
return TCL_OK;
13051309
}
13061310

@@ -1309,6 +1313,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
13091313
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13101314
rt_solid_edit_destroy(s->s_edit);
13111315
s->s_edit = NULL;
1316+
mmenu_set(s, MENU_L1, NULL);
1317+
mmenu_set(s, MENU_L2, NULL);
13121318
return TCL_ERROR;
13131319
}
13141320
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
@@ -1318,6 +1324,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
13181324
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13191325
rt_solid_edit_destroy(s->s_edit);
13201326
s->s_edit = NULL;
1327+
mmenu_set(s, MENU_L1, NULL);
1328+
mmenu_set(s, MENU_L2, NULL);
13211329
return TCL_ERROR;
13221330
}
13231331

@@ -1356,6 +1364,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
13561364
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13571365
rt_solid_edit_destroy(s->s_edit);
13581366
s->s_edit = NULL;
1367+
mmenu_set(s, MENU_L1, NULL);
1368+
mmenu_set(s, MENU_L2, NULL);
13591369
return TCL_ERROR; /* FAIL */
13601370
}
13611371

@@ -1378,13 +1388,17 @@ sedit_apply(struct mged_state *s, int accept_flag)
13781388
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13791389
rt_solid_edit_destroy(s->s_edit);
13801390
s->s_edit = NULL;
1391+
mmenu_set(s, MENU_L1, NULL);
1392+
mmenu_set(s, MENU_L2, NULL);
13811393
return TCL_ERROR;
13821394
}
13831395
}
13841396

13851397
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
13861398
rt_solid_edit_destroy(s->s_edit);
13871399
s->s_edit = NULL;
1400+
mmenu_set(s, MENU_L1, NULL);
1401+
mmenu_set(s, MENU_L2, NULL);
13881402
return TCL_OK;
13891403
}
13901404

@@ -1439,6 +1453,8 @@ sedit_reject(struct mged_state *s)
14391453
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
14401454
rt_solid_edit_destroy(s->s_edit);
14411455
s->s_edit = NULL;
1456+
mmenu_set(s, MENU_L1, NULL);
1457+
mmenu_set(s, MENU_L2, NULL);
14421458
return;
14431459
}
14441460
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
@@ -1468,6 +1484,8 @@ sedit_reject(struct mged_state *s)
14681484
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
14691485
rt_solid_edit_destroy(s->s_edit);
14701486
s->s_edit = NULL;
1487+
mmenu_set(s, MENU_L1, NULL);
1488+
mmenu_set(s, MENU_L2, NULL);
14711489
}
14721490

14731491
int

src/mged/menu.c

-3
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,6 @@ mged_mmenu_set(int UNUSED(ac), const char **UNUSED(av), void *d, void *ms)
269269
void
270270
mmenu_set(struct mged_state *s, int index, struct rt_solid_edit_menu_item *value)
271271
{
272-
if (!value)
273-
return;
274-
275272
Tcl_DString ds_menu;
276273
struct bu_vls menu_string = BU_VLS_INIT_ZERO;
277274

0 commit comments

Comments
 (0)