Skip to content

Commit

Permalink
Need to be able to reset menus - NULL is a valid input for mmenu_set.…
Browse files Browse the repository at this point in the history
… Make sure the menus are reset after destroying s_edit.
  • Loading branch information
starseeker committed Feb 6, 2025
1 parent aef25b4 commit 1690470
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
18 changes: 18 additions & 0 deletions src/mged/edsol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1237,6 +1237,8 @@ oedit_reject(struct mged_state *s)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
}


Expand Down Expand Up @@ -1301,6 +1303,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_OK;
}

Expand All @@ -1309,6 +1313,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_ERROR;
}
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
Expand All @@ -1318,6 +1324,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_ERROR;
}

Expand Down Expand Up @@ -1356,6 +1364,8 @@ sedit_apply(struct mged_state *s, int accept_flag)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_ERROR; /* FAIL */
}

Expand All @@ -1378,13 +1388,17 @@ sedit_apply(struct mged_state *s, int accept_flag)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_ERROR;
}
}

Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return TCL_OK;
}

Expand Down Expand Up @@ -1439,6 +1453,8 @@ sedit_reject(struct mged_state *s)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
return;
}
struct ged_bv_data *bdata = (struct ged_bv_data *)illump->s_u_data;
Expand Down Expand Up @@ -1468,6 +1484,8 @@ sedit_reject(struct mged_state *s)
Tcl_UnlinkVar(s->interp, "edit_solid_flag");
rt_solid_edit_destroy(s->s_edit);
s->s_edit = NULL;
mmenu_set(s, MENU_L1, NULL);
mmenu_set(s, MENU_L2, NULL);
}

int
Expand Down
3 changes: 0 additions & 3 deletions src/mged/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,9 +269,6 @@ mged_mmenu_set(int UNUSED(ac), const char **UNUSED(av), void *d, void *ms)
void
mmenu_set(struct mged_state *s, int index, struct rt_solid_edit_menu_item *value)
{
if (!value)
return;

Tcl_DString ds_menu;
struct bu_vls menu_string = BU_VLS_INIT_ZERO;

Expand Down

0 comments on commit 1690470

Please sign in to comment.