--- freeciv-1.7.2.stock/client/gui-xaw/mapview.c Fri Jan 1 19:48:32 1999 +++ freeciv-1.7.2/client/gui-xaw/mapview.c Sat Feb 6 11:54:56 1999 @@ -912,21 +912,27 @@ void put_city_pixmap(struct city *pcity, Pixmap pm, int xtile, int ytile) { struct Sprite *mysprite; + struct tile *ptile; + struct unit *punit; - if(use_solid_color_behind_units) { - XSetForeground(display, fill_bg_gc, colors_standard[COLOR_STD_RACE0+ - game.players[pcity->owner].race]); - XFillRectangle(display, pm, fill_bg_gc, - 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,o))) { + if(use_solid_color_behind_units) { + XSetForeground(display, fill_bg_gc, colors_standard[COLOR_STD_RACE0+ + game.players[pcity->owner].race]); + XFillRectangle(display, pm, fill_bg_gc, + 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); + XCopyArea(display, mysprite->pixmap, pm, civ_gc, 0, 0, + mysprite->width, mysprite->height, + xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_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); - XCopyArea(display, mysprite->pixmap, pm, civ_gc, 0, 0, - mysprite->width, mysprite->height, - xtile*NORMAL_TILE_WIDTH, ytile*NORMAL_TILE_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));