diff -ru -X /home/jjm/cvs/no.freeciv FreecivCVS/client/gui-xaw/dialogs.c freeciv/client/gui-xaw/dialogs.c --- FreecivCVS/client/gui-xaw/dialogs.c Mon Feb 28 16:37:25 2000 +++ freeciv/client/gui-xaw/dialogs.c Sat Mar 18 10:08:06 2000 @@ -40,6 +40,7 @@ #include "mem.h" #include "packets.h" #include "player.h" +#include "rand.h" #include "support.h" #include "chatline.h" @@ -66,6 +67,7 @@ static Widget races_dialog_shell=NULL; static Widget races_form, races_toggles_form, races_label; static Widget *races_toggles=NULL; +static int *races_toggles_to_nations=NULL; static Widget races_leader_form, races_leader; static Widget races_leader_pick_popupmenu, races_leader_pick_menubutton; static Widget races_sex_toggles[2], races_sex_form, races_sex_label; @@ -129,6 +131,8 @@ static int races_style_buttons_get_current(void); static void races_sex_buttons_set_current(int i); +static int races_indirect_compare(const void *first, const void *second); + static void races_toggles_callback(Widget w, XtPointer client_data, XtPointer call_data); static void races_leader_pick_callback(Widget w, XtPointer client_data, @@ -1747,6 +1751,8 @@ free(races_toggles); races_toggles = fc_calloc(game.playable_nation_count,sizeof(Widget)); + free(races_toggles_to_nations); + races_toggles_to_nations = fc_calloc(game.playable_nation_count,sizeof(int)); for( i = 0; i < ((game.playable_nation_count-1)/per_row)+1; i++) { index = i * per_row; @@ -1973,7 +1979,7 @@ for(i=0; i>=1; - } - - mybits=bits2; - - for(i=32; i>=1; + for(i=0; i> ((race<32)?race:race-32) )&1 ); + XtSetSensitive(races_toggles[i], sens); } if((selected=races_buttons_get_current())==-1) - return; + return; + race = races_toggles_to_nations[selected]; - if( (bits1 & (1<32 && (bits2 & (1<<(selected-32))) ) ) - XawToggleUnsetCurrent(races_toggles[0]); + if( (bits1 & (1<32 && (bits2 & (1<<(race-32))) ) ) + XawToggleUnsetCurrent(races_toggles[0]); } - /************************************************************************** ... **************************************************************************/ void races_toggles_callback(Widget w, XtPointer client_data, XtPointer call_data) { - int i, j; + int index, race; + int j; int leader_count; char **leaders; Widget entry; - for(i=0; i