diff -ru -X /home/jjm/cvs/no.freeciv FreecivCVS/client/control.c freeciv/client/control.c --- FreecivCVS/client/control.c Mon Jun 12 10:07:28 2000 +++ freeciv/client/control.c Fri Jun 16 22:07:14 2000 @@ -71,6 +71,17 @@ } /************************************************************************** +Center on the focus unit, if off-screen and auto_center_on_unit is true. +**************************************************************************/ +void auto_center_on_focus_unit(void) +{ + if (punit_focus && + auto_center_on_unit && + !tile_visible_and_not_on_border_mapcanvas(punit_focus->x, punit_focus->y)) + center_tile_mapcanvas(punit_focus->x, punit_focus->y); +} + +/************************************************************************** note: punit can be NULL We make sure that the previous focus unit is refreshed, if necessary, _after_ setting the new focus unit (otherwise if the previous unit is @@ -83,9 +94,7 @@ punit_focus=punit; if(punit) { - if(auto_center_on_unit && - !tile_visible_and_not_on_border_mapcanvas(punit->x, punit->y)) - center_tile_mapcanvas(punit->x, punit->y); + auto_center_on_focus_unit(); punit->focus_status=FOCUS_AVAIL; refresh_tile_mapcanvas(punit->x, punit->y, 1); diff -ru -X /home/jjm/cvs/no.freeciv FreecivCVS/client/control.h freeciv/client/control.h --- FreecivCVS/client/control.h Mon Jun 12 10:07:28 2000 +++ freeciv/client/control.h Fri Jun 16 22:08:56 2000 @@ -52,6 +52,7 @@ void wakeup_sentried_units(int x, int y); +void auto_center_on_focus_unit(void); void advance_unit_focus(void); struct unit *get_unit_in_focus(void); void set_unit_focus(struct unit *punit); diff -ru -X /home/jjm/cvs/no.freeciv FreecivCVS/client/packhand.c freeciv/client/packhand.c --- FreecivCVS/client/packhand.c Fri Jun 16 13:36:54 2000 +++ freeciv/client/packhand.c Fri Jun 16 22:04:40 2000 @@ -329,9 +329,9 @@ update_info_label(); player_set_unit_focus_status(game.player_ptr); - update_unit_focus(); - + auto_center_on_focus_unit(); + update_unit_info_label(get_unit_in_focus()); seconds_to_turndone=game.timeout;