X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fwidechar%2Flib_ins_wch.c;h=ef9e1b0a3fd2ef51ee720d91a70337ed79057405;hp=7bc7ac8c4eb789d8dc76df517633af53138007cb;hb=26522e4669dbf45cba32138b5d81c6c292e88e60;hpb=55ccd2b959766810cf7db8d1c4462f338ce0afc8 diff --git a/ncurses/widechar/lib_ins_wch.c b/ncurses/widechar/lib_ins_wch.c index 7bc7ac8c..ef9e1b0a 100644 --- a/ncurses/widechar/lib_ins_wch.c +++ b/ncurses/widechar/lib_ins_wch.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2002-2003,2005 Free Software Foundation, Inc. * + * Copyright (c) 2002-2005,2009 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 * @@ -39,7 +39,7 @@ #include -MODULE_ID("$Id: lib_ins_wch.c,v 1.7 2005/09/17 19:25:13 tom Exp $") +MODULE_ID("$Id: lib_ins_wch.c,v 1.9 2009/05/30 14:52:42 tom Exp $") /* * Insert the given character, updating the current location to simplify @@ -112,12 +112,14 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) n = wcslen(wstr); code = OK; if (n > 0) { + SCREEN *sp = _nc_screen_of(win); + oy = win->_cury; ox = win->_curx; for (cp = wstr; *cp && ((cp - wstr) < n); cp++) { int len = wcwidth(*cp); - if (len != 1) { + if (len != 1 || !is8bits(*cp)) { cchar_t tmp_cchar; wchar_t tmp_wchar = *cp; memset(&tmp_cchar, 0, sizeof(tmp_cchar)); @@ -129,7 +131,7 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) code = _nc_insert_wch(win, &tmp_cchar); } else { /* tabs, other ASCII stuff */ - code = _nc_insert_ch(win, (chtype) (*cp)); + code = _nc_insert_ch(sp, win, (chtype) (*cp)); } if (code != OK) break;