X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_hline.c;h=938c4998343bc44627fb2ad6056803e0cd7ab51d;hp=0ff2d5bdb6df7d9ce1586a9a2f94f4e38dc71737;hb=3e37c7d3fa122563a9d88168926f61286ef30cd3;hpb=3a0d9d27e0cf115ff9dcc6163c251bccaa62bd7d diff --git a/ncurses/base/lib_hline.c b/ncurses/base/lib_hline.c index 0ff2d5bd..938c4998 100644 --- a/ncurses/base/lib_hline.c +++ b/ncurses/base/lib_hline.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,2017 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 * @@ -29,6 +30,8 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim 1992,1995 * * and: Eric S. Raymond * + * and: Thomas E. Dickey 1996-on * + * and: Sven Verdoolaege 2001 * ****************************************************************************/ /* @@ -40,23 +43,21 @@ #include -MODULE_ID("$Id: lib_hline.c,v 1.12 2009/10/24 22:31:53 tom Exp $") +MODULE_ID("$Id: lib_hline.c,v 1.16 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) whline(WINDOW *win, chtype ch, int n) { int code = ERR; - NCURSES_SIZE_T start; - NCURSES_SIZE_T end; T((T_CALLED("whline(%p,%s,%d)"), (void *) win, _tracechtype(ch), n)); if (win) { struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T wch; + int start = win->_curx; + int end = start + n - 1; - start = win->_curx; - end = start + n - 1; if (end > win->_maxx) end = win->_maxx; @@ -68,6 +69,14 @@ whline(WINDOW *win, chtype ch, int n) SetChar2(wch, ch); wch = _nc_render(win, wch); +#if USE_WIDEC_SUPPORT + if (start > 0 && isWidecExt(line->text[start])) { + SetChar2(line->text[start - 1], ' '); + } + if (end < win->_maxx && isWidecExt(line->text[end + 1])) { + SetChar2(line->text[end + 1], ' '); + } +#endif while (end >= start) { line->text[end] = wch; end--;