Index: client/gui-gtk/citydlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/citydlg.c,v retrieving revision 1.36 diff -u -r1.36 citydlg.c --- citydlg.c 2000/02/02 13:48:14 1.36 +++ citydlg.c 2000/02/02 19:22:26 @@ -1678,6 +1678,16 @@ /**************************************************************** ... *****************************************************************/ +static void change_list_callback(GtkWidget *w, gint row, gint col, GdkEvent *ev, gpointer data) + /* Allows new production options to be selected via a double-click */ +{ + if(ev && ev->type==GDK_2BUTTON_PRESS) + change_to_callback(w, data); +} + +/**************************************************************** +... +*****************************************************************/ void change_callback(GtkWidget *w, gpointer data) { GtkWidget *cshell, *button, *scrolled; @@ -1703,6 +1713,10 @@ gtk_clist_column_titles_passive(GTK_CLIST(pdialog->change_list)); scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolled), pdialog->change_list); + + /* Set up the doubleclick-on-list-item handler */ + gtk_signal_connect(GTK_OBJECT(pdialog->change_list), "select_row", + GTK_SIGNAL_FUNC(change_list_callback), pdialog); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); Index: client/gui-gtk/cityrep.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/cityrep.c,v retrieving revision 1.24 diff -u -r1.24 cityrep.c --- cityrep.c 2000/01/19 17:43:04 1.24 +++ cityrep.c 2000/02/02 19:22:27 @@ -73,6 +73,7 @@ void city_config_callback(GtkWidget *widget, gpointer data); static gboolean city_change_callback(GtkWidget *w, GdkEvent *event, gpointer data); static gboolean city_select_callback(GtkWidget *w, GdkEvent *event, gpointer data); +static void city_report_list_callback(GtkWidget *w, gint row, gint col, GdkEvent *ev, gpointer data); GtkWidget *city_dialog_shell=NULL; GtkWidget *city_label; @@ -448,6 +449,9 @@ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_widget_set_usize(city_list, 620, 250); + gtk_signal_connect(GTK_OBJECT(city_list), "select_row", + GTK_SIGNAL_FUNC(city_report_list_callback), NULL); + gtk_box_pack_start( GTK_BOX( GTK_DIALOG(city_dialog_shell)->vbox ), scrolled, TRUE, TRUE, 0 ); @@ -1089,6 +1093,17 @@ popup_city_dialog(copy->data, 0); g_list_free(copy); +} + +/**************************************************************** +... +*****************************************************************/ + +static void city_report_list_callback(GtkWidget *w, gint row, gint col, GdkEvent *ev, gpointer data) +{ + /* Pops up a city when it's double-clicked */ + if(ev && ev->type==GDK_2BUTTON_PRESS) + city_popup_callback(w, data); } /****************************************************************