(svn r7373) -Codechange: when removing a GRF from the list, make the next one selected, or the previous file if the last item is being removed. This makes clearing the list easier.

This commit is contained in:
peter1138 2006-12-05 14:18:58 +00:00
parent 9218fc16e6
commit cc2c2a0fb1
1 changed files with 11 additions and 2 deletions

View File

@ -331,15 +331,24 @@ static void NewGRFWndProc(Window *w, WindowEvent *e)
}
case 4: { /* Remove GRF */
GRFConfig **pc, *c;
GRFConfig **pc, *c, *newsel;
/* Choose the next GRF file to be the selected file */
newsel = WP(w, newgrf_d).sel->next;
for (pc = WP(w, newgrf_d).list; (c = *pc) != NULL; pc = &c->next) {
/* If the new selection is empty (i.e. we're deleting the last item
* in the list, pick the file just before the selected file */
if (newsel == NULL && c->next == WP(w, newgrf_d).sel) newsel = c;
if (c == WP(w, newgrf_d).sel) {
*pc = c->next;
free(c);
break;
}
}
WP(w, newgrf_d).sel = NULL;
WP(w, newgrf_d).sel = newsel;
SetupNewGRFWindow(w);
SetWindowDirty(w);
break;