diff options
| author | Manolo Gouy <Manolo> | 2016-03-28 16:17:39 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2016-03-28 16:17:39 +0000 |
| commit | 4fbbab8b41f4775752587f18c7d1b32bbd947c27 (patch) | |
| tree | 2b00fbd77ab8778f586bbe861cf715ffedee608f /src/Fl_compose.cxx | |
| parent | 28d1a2d6848d5abe555fd0ddae8b57cec6f900ca (diff) | |
Rewrite Fl_compose.cxx under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11454 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_compose.cxx')
| -rw-r--r-- | src/Fl_compose.cxx | 75 |
1 files changed, 3 insertions, 72 deletions
diff --git a/src/Fl_compose.cxx b/src/Fl_compose.cxx index d32acd799..505bc2994 100644 --- a/src/Fl_compose.cxx +++ b/src/Fl_compose.cxx @@ -22,21 +22,12 @@ Utility functions to support text input. */ #include <FL/Fl.H> -#include <FL/x.H> +#include <FL/Fl_System_Driver.H> #ifndef FL_DOXYGEN int Fl::compose_state = 0; -#ifdef __APPLE__ // PORTME: Fl_Screen_Driver - platform character composition -int Fl_X::next_marked_length = 0; -#endif #endif -#if defined(WIN32) || defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform character composition -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: implement keyboard composing in the code below" -#else // X11 -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. @@ -79,63 +70,9 @@ extern XIC fl_xim_ic; other user-interface things to allow characters to be selected. */ int Fl::compose(int& del) { - int condition; -#if defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform character composition - int has_text_key = Fl::compose_state || Fl::e_keysym <= '~' || Fl::e_keysym == FL_Iso_Key || - (Fl::e_keysym >= FL_KP && Fl::e_keysym <= FL_KP_Last && Fl::e_keysym != FL_KP_Enter); - condition = Fl::e_state&(FL_META | FL_CTRL) || - (Fl::e_keysym >= FL_Shift_L && Fl::e_keysym <= FL_Alt_R) || // called from flagsChanged - !has_text_key ; -#else - unsigned char ascii = (unsigned char)e_text[0]; -#if defined(WIN32) - condition = (e_state & (FL_ALT | FL_META)) && !(ascii & 128) ; -#else - condition = (e_state & (FL_ALT | FL_META | FL_CTRL)) && !(ascii & 128) ; -#endif // WIN32 -#endif // __APPLE__ // PORTME: Fl_Screen_Driver - platform character composition - if (condition) { del = 0; return 0;} // this stuff is to be treated as a function key - del = Fl::compose_state; -#ifdef __APPLE__ // PORTME: Fl_Screen_Driver - platform character composition - Fl::compose_state = Fl_X::next_marked_length; -#else - Fl::compose_state = 0; -// Only insert non-control characters: - if ( (!Fl::compose_state) && ! (ascii & ~31 && ascii!=127)) { return 0; } -#endif - return 1; -} - -#ifdef __APPLE__ // PORTME: Fl_Screen_Driver - platform character composition -static int insertion_point_x = 0; -static int insertion_point_y = 0; -static int insertion_point_height = 0; -static bool insertion_point_location_is_valid = false; - -void Fl::reset_marked_text() { - Fl::compose_state = 0; - Fl_X::next_marked_length = 0; - insertion_point_location_is_valid = false; + return Fl_System_Driver::driver()->compose(del); } -int Fl_X::insertion_point_location(int *px, int *py, int *pheight) -// return true if the current coordinates of the insertion point are available -{ - if ( ! insertion_point_location_is_valid ) return false; - *px = insertion_point_x; - *py = insertion_point_y; - *pheight = insertion_point_height; - return true; -} - -void Fl::insertion_point_location(int x, int y, int height) { - insertion_point_location_is_valid = true; - insertion_point_x = x; - insertion_point_y = y; - insertion_point_height = height; -} -#endif // __APPLE__ // PORTME: Fl_Screen_Driver - platform character composition - /** 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 @@ -144,13 +81,7 @@ void Fl::insertion_point_location(int x, int y, int height) { */ void Fl::compose_reset() { - Fl::compose_state = 0; -#if defined(WIN32) || defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform character composition -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: compose reset extra functions" -#else - if (fl_xim_ic) XmbResetIC(fl_xim_ic); -#endif + Fl_System_Driver::driver()->compose_reset(); } // |
