diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 47120a06d..7a2467d09 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -179,8 +179,7 @@ X11: enable a scroll bar in menu windows X11: support pre-selected entries in menu windows X11: make the extended command menu be easier to use and look a little nicer X11: make the getline text entry widget display a bigger text entry area -unix: add CHECK_PLNAME-option to sysconf to make WIZARDS, EXPLORERS, and - SHELLERS check player name instead of user's login name +X11: color didn't work when the map was displayed as text rather than tiles General New Features @@ -215,6 +214,11 @@ Platform- and/or Interface-Specific New Features tty: menu_overlay -option to clear screen and align menus to left tty: compile-time option to output escape codes for tile data hints unix: compile-time option MSGHANDLER to pass messages to external program +unix: add CHECK_PLNAME-option to sysconf to make WIZARDS, EXPLORERS, and + SHELLERS check player's character name instead of login name +X11: new NetHack*highlight_prompt resource to control whether the persistent + prompt line between the map and message windows for the NetHack*slow + configuration will be highlighted when it's expecting input NetHack Community Patches (or Variation) Included diff --git a/win/X11/winmap.c b/win/X11/winmap.c index 93f5dd6c3..f089a5da2 100644 --- a/win/X11/winmap.c +++ b/win/X11/winmap.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 winmap.c $NHDT-Date: 1454977918 2016/02/09 00:31:58 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.27 $ */ +/* NetHack 3.6 winmap.c $NHDT-Date: 1454986883 2016/02/09 03:01:23 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.28 $ */ /* Copyright (c) Dean Luick, 1992 */ /* NetHack may be freely redistributed. See license for details. */ @@ -102,6 +102,7 @@ int bkglyph UNUSED; int color, och; unsigned special; #ifdef TEXTCOLOR + int colordif; register unsigned char *co_ptr; #endif @@ -116,24 +117,22 @@ int bkglyph UNUSED; /* Only update if we need to. */ ch_ptr = &map_info->text_map.text[y][x]; - -#ifdef TEXTCOLOR - co_ptr = &map_info->text_map.colors[y][x]; - if (*ch_ptr != ch || *co_ptr != color) -#else - if (*ch_ptr != ch) -#endif - { + if (*ch_ptr != ch) { *ch_ptr = ch; -#ifdef TEXTCOLOR - if ((special & MG_PET) && iflags.hilite_pet) - color += CLR_MAX; - if ((special & MG_OBJPILE) && iflags.hilite_pile) - *co_ptr = color; -#endif if (!map_info->is_tile) update_bbox = TRUE; } +#ifdef TEXTCOLOR + co_ptr = &map_info->text_map.colors[y][x]; + colordif = (((special & MG_PET) && iflags.hilite_pet) + || ((special & MG_OBJPILE) && iflags.hilite_pile)) + ? CLR_MAX : 0; + if (*co_ptr != (uchar) (color + colordif)) { + *co_ptr = (uchar) (color + colordif); + if (!map_info->is_tile) + update_bbox = TRUE; + } +#endif } if (update_bbox) { /* update row bbox */ @@ -844,7 +843,8 @@ Font font; set_color_gc(CLR_BRIGHT_CYAN, XtNbright_cyan); set_color_gc(CLR_WHITE, XtNwhite); #else - set_gc(wp->w, font, XtNforeground, bgpixel, &map_info->text_map.copy_gc, + set_gc(wp->w, font, XtNforeground, bgpixel, + &map_info->text_map.copy_gc, &map_info->text_map.inv_copy_gc); #endif } @@ -943,17 +943,17 @@ struct xwindow *wp; map_all_stone(map_info); (void) memset((genericptr_t) map_info->text_map.text, ' ', - sizeof(map_info->text_map.text)); + sizeof map_info->text_map.text); #ifdef TEXTCOLOR (void) memset((genericptr_t) map_info->text_map.colors, NO_COLOR, - sizeof(map_info->text_map.colors)); + sizeof map_info->text_map.colors); #endif /* force a full update */ (void) memset((genericptr_t) map_info->t_start, (char) 0, - sizeof(map_info->t_start)); + sizeof map_info->t_start); (void) memset((genericptr_t) map_info->t_stop, (char) COLNO - 1, - sizeof(map_info->t_stop)); + sizeof map_info->t_stop); display_map_window(wp); } @@ -978,8 +978,8 @@ struct xwindow *wp; #ifdef VERBOSE printf("Font information:\n"); printf("fid = %ld, direction = %d\n", fs->fid, fs->direction); - printf("first = %d, last = %d\n", fs->min_char_or_byte2, - fs->max_char_or_byte2); + printf("first = %d, last = %d\n", + fs->min_char_or_byte2, fs->max_char_or_byte2); printf("all chars exist? %s\n", fs->all_chars_exist ? "yes" : "no"); printf("min_bounds:lb=%d rb=%d width=%d asc=%d des=%d attr=%d\n", fs->min_bounds.lbearing, fs->min_bounds.rbearing, @@ -990,8 +990,8 @@ struct xwindow *wp; fs->max_bounds.width, fs->max_bounds.ascent, fs->max_bounds.descent, fs->max_bounds.attributes); printf("per_char = 0x%lx\n", (unsigned long) fs->per_char); - printf("Text: (max) width = %d, height = %d\n", text_map->square_width, - text_map->square_height); + printf("Text: (max) width = %d, height = %d\n", + text_map->square_width, text_map->square_height); #endif if (fs->min_bounds.width != fs->max_bounds.width) @@ -1002,9 +1002,9 @@ struct xwindow *wp; * keyhit buffer */ #define INBUF_SIZE 64 -int inbuf[INBUF_SIZE]; -int incount = 0; -int inptr = 0; /* points to valid data */ +static int inbuf[INBUF_SIZE]; +static int incount = 0; +static int inptr = 0; /* points to valid data */ /* * Keyboard and button event handler for map window. @@ -1249,8 +1249,8 @@ boolean inverted; } #ifdef VERBOSE_UPDATE - printf("update: [0x%x] %d %d %d %d\n", (int) wp->w, start_row, stop_row, - start_col, stop_col); + printf("update: [0x%x] %d %d %d %d\n", + (int) wp->w, start_row, stop_row, start_col, stop_col); #endif win_start_row = start_row; win_start_col = start_col; @@ -1273,8 +1273,8 @@ boolean inverted; src_y = (tile / TILES_PER_ROW) * tile_height; XCopyArea(dpy, tile_pixmap, XtWindow(wp->w), tile_map->black_gc, /* no grapics_expose */ - src_x, src_y, tile_width, tile_height, dest_x, - dest_y); + src_x, src_y, tile_width, tile_height, + dest_x, dest_y); if (glyph_is_pet(glyph) && iflags.hilite_pet) { /* draw pet annotation (a heart) */ @@ -1412,10 +1412,8 @@ Dimension cols, rows; } num_args = 0; - XtSetArg(args[num_args], XtNwidth, wp->pixel_width); - num_args++; - XtSetArg(args[num_args], XtNheight, wp->pixel_height); - num_args++; + XtSetArg(args[num_args], XtNwidth, wp->pixel_width); num_args++; + XtSetArg(args[num_args], XtNheight, wp->pixel_height); num_args++; XtSetValues(wp->w, args, num_args); } @@ -1426,10 +1424,10 @@ struct xwindow *wp; struct map_info_t *map_info = wp->map_information; struct text_map_info_t *text_map = &map_info->text_map; - (void) memset((genericptr_t) text_map->text, ' ', sizeof(text_map->text)); + (void) memset((genericptr_t) text_map->text, ' ', sizeof text_map->text); #ifdef TEXTCOLOR (void) memset((genericptr_t) text_map->colors, NO_COLOR, - sizeof(text_map->colors)); + sizeof text_map->colors); #endif get_char_info(wp);