Allowing characters between 0x80 and 0x9f to be enetered into Fl_Input_ derived widgets. Although these were not defined in the western ISO code page, they seem to be implemented in most X11 drivers now as MSWindows Latin-1. For example, the Euro symbol is at 0x80. It should now be possible to enter the Euro sign and other chars in this range correctly. Please verify.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4971 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2006-04-17 17:56:05 +00:00
parent 1184d7eee6
commit e682ec6339
2 changed files with 11 additions and 8 deletions

View File

@ -90,12 +90,13 @@ const char* Fl_Input_::expand(const char* p, char* buf) const {
*o++ = ' ';
#else
// in ISO 8859-1, undefined characters are rendered as octal
} else if (c >= 128 && c < 0xA0) {
// this is commented out since most X11 seems to use MSWindows Latin-1
//} else if (c >= 128 && c < 0xA0) {
// these codes are not defined in ISO code, so we output the octal code instead
*o++ = '\\';
*o++ = ((c>>6)&0x03) + '0';
*o++ = ((c>>3)&0x07) + '0';
*o++ = (c&0x07) + '0';
// *o++ = '\\';
// *o++ = ((c>>6)&0x03) + '0';
// *o++ = ((c>>3)&0x07) + '0';
// *o++ = (c&0x07) + '0';
} else if (c == 0xA0) { // nbsp
*o++ = ' ';
#endif
@ -124,9 +125,10 @@ double Fl_Input_::expandpos(
#ifdef __APPLE__
// in MacRoman, all characters are defined
#else
} else if (c >= 128 && c < 0xA0) {
// in Windows Latin-1 all characters are defined
//} else if (c >= 128 && c < 0xA0) {
// these codes are not defined in ISO code, so we output the octal code instead
n += 4;
// n += 4;
#endif
} else {
n++;

View File

@ -58,7 +58,8 @@ int Fl::test_shortcut(int shortcut) {
#ifdef __APPLE__
if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) {
#else
if (v > 32 && v < 0x7f || v >= 0xa0 && v <= 0xff) {
// most X11 use MSWindows Latin-1 if set to Western encoding, so 0x80 to 0xa0 are defined
if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) {
#endif
if (isupper(v)) {
shortcut |= FL_SHIFT;