diff -Nur -Xdiff_ignore ../../cvs/freeciv/client/gui-gtk/messagewin.c ./client/gui-gtk/messagewin.c --- ../../cvs/freeciv/client/gui-gtk/messagewin.c Sun Jul 28 10:30:31 2002 +++ ./client/gui-gtk/messagewin.c Fri Aug 9 22:57:08 2002 @@ -93,6 +93,7 @@ { gtk_clist_set_row_style (GTK_CLIST (meswin_list), n, meswin_visited_style); + set_message_visited_state(n, TRUE); } /**************************************************************** @@ -102,6 +103,7 @@ { gtk_clist_set_row_style (GTK_CLIST (meswin_list), n, meswin_not_visited_style); + set_message_visited_state(n, FALSE); } /**************************************************************** @@ -221,7 +223,11 @@ for (i = 0; i < num; i++) { gtk_clist_append(GTK_CLIST(meswin_list), &get_message(i)->descr); - meswin_not_visited_item(i); + if(get_message(i)->visited) { + meswin_visited_item(i); + } else { + meswin_not_visited_item(i); + } } gtk_clist_thaw(GTK_CLIST(meswin_list)); diff -Nur -Xdiff_ignore ../../cvs/freeciv/client/messagewin_common.c ./client/messagewin_common.c --- ../../cvs/freeciv/client/messagewin_common.c Sun Jul 28 10:30:30 2002 +++ ./client/messagewin_common.c Fri Aug 9 23:05:53 2002 @@ -109,7 +109,7 @@ char *game_prefix2 = _("Game: "); size_t gp_len1 = strlen(game_prefix1); size_t gp_len2 = strlen(game_prefix2); - char *s = fc_malloc(strlen(packet->message) + min_msg_len); + char *s = fc_malloc(MAX(strlen(packet->message), min_msg_len) + 1); int i, nspc; change = TRUE; @@ -137,6 +137,7 @@ messages[messages_total].event = packet->event; messages[messages_total].descr = s; messages[messages_total].location_ok = (packet->x != -1 && packet->y != -1); + messages[messages_total].visited = FALSE; messages_total++; /* @@ -171,6 +172,14 @@ int get_num_messages(void) { return messages_total; +} + +/************************************************************************** + Sets the visited-state of a message +**************************************************************************/ +void set_message_visited_state(int message_index, bool state) +{ + messages[message_index].visited = state; } /************************************************************************** diff -Nur -Xdiff_ignore ../../cvs/freeciv/client/messagewin_common.h ./client/messagewin_common.h --- ../../cvs/freeciv/client/messagewin_common.h Thu Jul 18 12:15:14 2002 +++ ./client/messagewin_common.h Fri Aug 9 23:03:32 2002 @@ -20,7 +20,7 @@ char *descr; int x, y; enum event_type event; - bool location_ok, city_ok; + bool location_ok, city_ok, visited; }; void meswin_freeze(void); @@ -33,6 +33,7 @@ struct message *get_message(int message_index); int get_num_messages(void); +void set_message_visited_state(int message_index, bool state); void meswin_popup_city(int message_index); void meswin_goto(int message_index); void meswin_double_click(int message_index);