diff options
| author | Manolo Gouy <Manolo> | 2011-03-21 16:32:37 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2011-03-21 16:32:37 +0000 |
| commit | dfc067ecfcecb67c31935a005edc477a163b64c5 (patch) | |
| tree | 88d3912767808819cc9081e684cfde36527acb7b | |
| parent | a36bca971a6c6d01aba0823b04eb5baede995b9b (diff) | |
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
| -rw-r--r-- | FL/Fl.H | 8 | ||||
| -rw-r--r-- | src/Fl_compose.cxx | 18 |
2 files changed, 19 insertions, 7 deletions
@@ -678,13 +678,7 @@ public: static int event_length() {return e_length;} static int compose(int &del); - /** - 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. - */ - static void compose_reset() {compose_state = 0;} + static void compose_reset(); static int event_inside(int,int,int,int); static int event_inside(const Fl_Widget*); static int test_shortcut(Fl_Shortcut); 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$" // |
