/****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
+ * Copyright (c) 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 *
#include <ctype.h>
-MODULE_ID("$Id: tty_update.c,v 1.293 2017/07/29 13:09:05 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.298 2018/05/05 19:11:55 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
|| is_wacs_value(CharOfD(ch))
#endif
)) {
+ int c8;
my_ch = CHDEREF(ch); /* work around const param */
+ c8 = CharOf(my_ch);
#if USE_WIDEC_SUPPORT
/*
* This is crude & ugly, but works most of the time. It checks if the
chlen = 1;
}
#endif /* !NCURSES_WCWIDTH_GRAPHICS */
- }
+ } else
#endif
+ if (!SP_PARM->_screen_acs_map[c8]) {
+ chtype temp = UChar(SP_PARM->_acs_map[c8]);
+ RemAttr(attr, A_ALTCHARSET);
+ SetChar(my_ch, temp, AttrOf(attr));
+ }
+
/*
* If we (still) have alternate character set, it is the normal 8bit
* flavor. The _screen_acs_map[] array tells if the character was
}
} else if (repeat_char != 0 &&
#if USE_WIDEC_SUPPORT
- (CharOf(ntext0) < ACS_LEN) &&
+ (!SP_PARM->_screen_unicode &&
+ ((AttrOf(ntext0) & A_ALTCHARSET) == 0 ||
+ (CharOf(ntext0) < ACS_LEN))) &&
#endif
runcount > SP_PARM->_rep_cost) {
NCURSES_CH_T temp;
UpdateAttrs(SP_PARM, ntext0);
temp = ntext0;
if ((AttrOf(temp) & A_ALTCHARSET) &&
- SP_PARM->_acs_map != 0) {
+ SP_PARM->_acs_map != 0 &&
+ (SP_PARM->_acs_map[CharOf(temp)] & A_CHARTEXT) != 0) {
SetChar(temp,
- SP_PARM->_acs_map[CharOf(temp)],
- AttrOf(temp) | A_ALTCHARSET);
+ (SP_PARM->_acs_map[CharOf(ntext0)] & A_CHARTEXT),
+ AttrOf(ntext0) | A_ALTCHARSET);
}
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
TPARM_2(repeat_char,
SP_PARM->_fifohold--;
#if USE_SIZECHANGE
- if ((SP_PARM->_endwin == ewRunning)
+ if ((SP_PARM->_endwin == ewSuspend)
|| _nc_handle_sigwinch(SP_PARM)) {
/*
* This is a transparent extension: XSI does not address it,
NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG);
/* restore user-defined colors, if any */
- if (SP_PARM->_color_defs < 0) {
+ if (SP_PARM->_color_defs < 0 && !SP_PARM->_direct_color.value) {
int n;
SP_PARM->_color_defs = -(SP_PARM->_color_defs);
for (n = 0; n < SP_PARM->_color_defs; ++n) {