X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftrace%2Flib_traceatr.c;h=9402627505084d6a07163414c53cef8864272cc5;hp=1ed5a5ecae3d692a7b5c044e6dde0049e1596510;hb=9b4c4abadc0a29999c5ddad5aa8d769fee28d687;hpb=58369d647d003dd9d9e1ecfc5ab07982db28f3da diff --git a/ncurses/trace/lib_traceatr.c b/ncurses/trace/lib_traceatr.c index 1ed5a5ec..94026275 100644 --- a/ncurses/trace/lib_traceatr.c +++ b/ncurses/trace/lib_traceatr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2017,2018 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -43,7 +44,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_traceatr.c,v 1.89 2017/10/21 23:12:09 tom Exp $") +MODULE_ID("$Id: lib_traceatr.c,v 1.94 2020/02/02 23:34:34 tom Exp $") #define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name)) @@ -285,19 +286,21 @@ _tracechtype2(int bufnum, chtype ch) if (result != 0) { const char *found; + attr_t attr = ChAttrOf(ch); _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum)); - if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) { + if ((found = _nc_altcharset_name(attr, ch)) != 0) { (void) _nc_trace_bufcat(bufnum, found); + attr &= ~A_ALTCHARSET; } else (void) _nc_trace_bufcat(bufnum, _nc_tracechar(CURRENT_SCREEN, (int) ChCharOf(ch))); - if (ChAttrOf(ch) != A_NORMAL) { + if (attr != A_NORMAL) { (void) _nc_trace_bufcat(bufnum, " | "); (void) _nc_trace_bufcat(bufnum, - _traceattr2(bufnum + 20, ChAttrOf(ch))); + _traceattr2(bufnum + 20, attr)); } result = _nc_trace_bufcat(bufnum, r_brace); @@ -363,7 +366,7 @@ _tracecchar_t2(int bufnum, const cchar_t *ch) char temp[80]; _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "{%d:\\u%lx}", - wcwidth(ch->chars[PUTC_i]), + _nc_wacs_width(ch->chars[PUTC_i]), (unsigned long) ch->chars[PUTC_i]); (void) _nc_trace_bufcat(bufnum, temp); break; @@ -382,6 +385,18 @@ _tracecchar_t2(int bufnum, const cchar_t *ch) (void) _nc_trace_bufcat(bufnum, " | "); (void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr)); } +#if NCURSES_EXT_COLORS + /* + * Just in case the extended color is different from the chtype + * value, trace both. + */ + if (ch->ext_color != PairNumber(attr)) { + char temp[80]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + " X_COLOR{%d:%d}", ch->ext_color, PairNumber(attr)); + (void) _nc_trace_bufcat(bufnum, temp); + } +#endif } result = _nc_trace_bufcat(bufnum, r_brace);