|
fltk 1.3.0rc3
About: FLTK (Fast Light Tool Kit) is a cross-platform C++ GUI toolkit for UNIX/Linux (X11), Microsoft Windows, and MacOS X. Release candidate.
SfR Fresh Dox: fltk-1.3.0rc3-source.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation) ![]() |
00001 // 00002 // "$Id: Fl_compose.cxx 8173 2011-01-03 16:50:34Z manolo $" 00003 // 00004 // Character compose processing for the Fast Light Tool Kit (FLTK). 00005 // 00006 // Copyright 1998-2010 by Bill Spitzak and others. 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // Library General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU Library General Public 00019 // License along with this library; if not, write to the Free Software 00020 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00021 // USA. 00022 // 00023 // Please report all bugs and problems on the following page: 00024 // 00025 // http://www.fltk.org/str.php 00026 // 00027 00028 #include <FL/Fl.H> 00029 #include <FL/x.H> 00030 00031 #ifndef FL_DOXYGEN 00032 // at present, this is effectively used by Mac OS X only 00033 int Fl::compose_state = 0; 00034 #endif 00035 00054 int Fl::compose(int& del) { 00055 // character composition is now handled by the OS 00056 del = 0; 00057 #if defined(__APPLE__) 00058 // this stuff is to be treated as a function key 00059 if(Fl::e_length == 0 || Fl::e_keysym == FL_Enter || Fl::e_keysym == FL_KP_Enter || 00060 Fl::e_keysym == FL_Tab || Fl::e_keysym == FL_Escape || Fl::e_state&(FL_META | FL_CTRL) ) { 00061 return 0; 00062 } 00063 #else 00064 unsigned char ascii = (unsigned)e_text[0]; 00065 if ((e_state & (FL_ALT | FL_META)) && !(ascii & 128)) return 0; 00066 #endif 00067 if(Fl::compose_state) { 00068 del = Fl::compose_state; 00069 Fl::compose_state = 0; 00070 } else { 00071 #ifndef __APPLE__ 00072 // Only insert non-control characters: 00073 if (! (ascii & ~31 && ascii!=127)) { return 0; } 00074 #endif 00075 } 00076 return 1; 00077 } 00078 00079 // 00080 // End of "$Id: Fl_compose.cxx 8173 2011-01-03 16:50:34Z manolo $" 00081 // 00082