--- freeciv-1.7.2.stock/client/gui-gtk/mapview.c Tue Feb 2 20:00:06 1999 +++ freeciv-1.7.2/client/gui-gtk/mapview.c Sat Feb 6 11:55:10 1999 @@ -903,22 +903,28 @@ void put_city_pixmap(struct city *pcity, GdkPixmap *pm, int xtile, int ytile) { SPRITE *mysprite; + struct tile *ptile; + struct unit *punit; - if(use_solid_color_behind_units) { - gdk_gc_set_foreground( fill_bg_gc, colors_standard[COLOR_STD_RACE0+ - game.players[pcity->owner].race] ); - gdk_draw_rectangle( pm, fill_bg_gc, TRUE, - xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_HEIGHT, - NORMAL_TILE_WIDTH, NORMAL_TILE_HEIGHT ); + ptile=map_get_tile( pcity->x, pcity->y ); + punit=get_unit_in_focus(); + if((punit&&punit->x==pcity->x&&punit->y==pcity->y)||(punit=unit_list_get(&ptile->units,0))) { + if(use_solid_color_behind_units) { + gdk_gc_set_foreground( fill_bg_gc, colors_standard[COLOR_STD_RACE0+ + game.players[pcity->owner].race] ); + gdk_draw_rectangle( pm, fill_bg_gc, TRUE, + xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_HEIGHT, + NORMAL_TILE_WIDTH, NORMAL_TILE_HEIGHT ); + } + else if(!flags_are_transparent) { /* observe transparency here, too! */ + mysprite=get_tile_sprite(game.players[pcity->owner].race+FLAG_TILES); + gdk_draw_pixmap( pm, civ_gc, mysprite->pixmap, + 0, 0, + xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_HEIGHT, + mysprite->width, mysprite->height ); + } else + pixmap_put_overlay_tile(pm,xtile,ytile,game.players[pcity->owner].race+FLAG_TILES); } - else if(!flags_are_transparent) { /* observe transparency here, too! */ - mysprite=get_tile_sprite(game.players[pcity->owner].race+FLAG_TILES); - gdk_draw_pixmap( pm, civ_gc, mysprite->pixmap, - 0, 0, - xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_HEIGHT, - mysprite->width, mysprite->height ); - } else - pixmap_put_overlay_tile(pm,xtile,ytile,game.players[pcity->owner].race+FLAG_TILES); pixmap_put_overlay_tile(pm, xtile, ytile, CITY_TILE+ city_got_citywalls(pcity));