summaryrefslogtreecommitdiff
path: root/src/Fl_compose.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-03-28 16:17:39 +0000
committerManolo Gouy <Manolo>2016-03-28 16:17:39 +0000
commit4fbbab8b41f4775752587f18c7d1b32bbd947c27 (patch)
tree2b00fbd77ab8778f586bbe861cf715ffedee608f /src/Fl_compose.cxx
parent28d1a2d6848d5abe555fd0ddae8b57cec6f900ca (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.cxx75
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();
}
//