From dfc067ecfcecb67c31935a005edc477a163b64c5 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Mon, 21 Mar 2011 16:32:37 +0000 Subject: Fix STR #2587: under Xlib, the X input method must be reset by the Fl::compose_reset() function. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8522 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_compose.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/Fl_compose.cxx b/src/Fl_compose.cxx index 7069c1f27..1ea06bfde 100644 --- a/src/Fl_compose.cxx +++ b/src/Fl_compose.cxx @@ -33,6 +33,10 @@ int Fl::compose_state = 0; #endif +#if !defined(WIN32) && !defined(__APPLE__) +extern XIC fl_xim_ic; +#endif + /** Any text editing widget should call this for each FL_KEYBOARD event. Use of this function is very simple. @@ -76,6 +80,20 @@ int Fl::compose(int& del) { return 1; } +/** + If the user moves the cursor, be sure to call Fl::compose_reset(). + The next call to Fl::compose() will start out in an initial state. In + particular it will not set "del" to non-zero. This call is very fast + so it is ok to call it many times and in many places. + */ +void Fl::compose_reset() +{ + Fl::compose_state = 0; +#if !defined(WIN32) && !defined(__APPLE__) + if (fl_xim_ic) XmbResetIC(fl_xim_ic); +#endif +} + // // End of "$Id$" // -- cgit v1.2.3