(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.
authorpeter1138
Tue, 05 Dec 2006 14:18:58 +0000
changeset 5248 2aa0c4cc8f23
parent 5247 c3eece01af11
child 5249 b04b34842727
(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.
newgrf_gui.c
--- a/newgrf_gui.c	Tue Dec 05 13:58:20 2006 +0000
+++ b/newgrf_gui.c	Tue Dec 05 14:18:58 2006 +0000
@@ -331,15 +331,24 @@
 				}
 
 				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;