ship_gui.c
changeset 1246 45f15251412b
parent 1108 6c05bdeb9d41
child 1294 bc831562148e
--- a/ship_gui.c	Mon Jan 31 07:23:15 2005 +0000
+++ b/ship_gui.c	Mon Jan 31 11:03:23 2005 +0000
@@ -965,8 +965,7 @@
 		/* draw sorting criteria string */
 		DrawString(85, 15, _vehicle_sort_listing[vl->sort_type], 0x10);
 		/* draw arrow pointing up/down for ascending/descending sorting */
-		DoDrawString(
-			vl->flags & VL_DESC ? "\xAA" : "\xA0", 69, 15, 0x10);
+		DoDrawString(vl->flags & VL_DESC ? "\xAA" : "\xA0", 69, 15, 0x10);
 
 		max = min(w->vscroll.pos + w->vscroll.cap, vl->list_length);
 		for (i = w->vscroll.pos; i < max; ++i) {
@@ -1005,6 +1004,7 @@
 		case 3: /* Flip sorting method ascending/descending */
 			vl->flags ^= VL_DESC;
 			vl->flags |= VL_RESORT;
+			_sorting.ship.order = !!(vl->flags & VL_DESC);
 			SetWindowDirty(w);
 			break;
 		case 4: case 5:/* Select sorting criteria dropdown menu */
@@ -1066,18 +1066,19 @@
 			// value has changed -> resort
 			vl->flags |= VL_RESORT;
 			vl->sort_type = e->dropdown.index;
+			_sorting.ship.criteria = vl->sort_type;
 
 			// enable 'Sort By' if a sorter criteria is chosen
 			if (vl->sort_type != SORT_BY_UNSORTED)
-				w->disabled_state &= ~(1 << 3);
+				CLRBIT(w->disabled_state, 3);
 		}
 		SetWindowDirty(w);
 		break;
 
 	case WE_CREATE: /* set up resort timer */
 		vl->sort_list = NULL;
-		vl->flags = VL_REBUILD;
-		vl->sort_type = SORT_BY_UNSORTED;
+		vl->flags = VL_REBUILD | (_sorting.ship.order << (VL_DESC - 1));
+		vl->sort_type = _sorting.ship.criteria;
 		vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
 		break;