diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_Input.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_Screen_Driver.cxx | 4 | ||||
| -rw-r--r-- | src/Fl_System_Driver.cxx | 4 | ||||
| -rw-r--r-- | src/Fl_Text_Display.cxx | 4 | ||||
| -rw-r--r-- | src/Fl_cocoa.mm | 2 | ||||
| -rw-r--r-- | src/Fl_compose.cxx | 6 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx | 12 | ||||
| -rw-r--r-- | src/drivers/Darwin/Fl_Darwin_System_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/Darwin/Fl_Darwin_System_Driver.cxx | 13 | ||||
| -rw-r--r-- | src/drivers/Posix/Fl_Posix_System_Driver.H | 3 | ||||
| -rw-r--r-- | src/drivers/Posix/Fl_Posix_System_Driver.cxx | 18 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx | 16 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_System_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx | 16 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.H | 3 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.cxx | 17 | ||||
| -rw-r--r-- | src/fl_dnd_win32.cxx | 4 | ||||
| -rw-r--r-- | src/fl_dnd_x.cxx | 4 |
21 files changed, 67 insertions, 71 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx index 9e56971f5..f160876a3 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -1879,7 +1879,7 @@ int Fl::use_high_res_GL_ = 0; int Fl::dnd() { - return Fl_System_Driver::driver()->dnd(); + return Fl::screen_driver()->dnd(); } void Fl::reset_marked_text() { diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx index 25329b694..e075f0836 100644 --- a/src/Fl_Input.cxx +++ b/src/Fl_Input.cxx @@ -687,7 +687,7 @@ int Fl_Input::handle(int event) { dnd_save_focus = this; // drag the data: copy(0); - Fl_System_Driver::driver()->dnd(1); + Fl::screen_driver()->dnd(1); return 1; } } diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx index a3210c7de..09621d6a4 100644 --- a/src/Fl_Screen_Driver.cxx +++ b/src/Fl_Screen_Driver.cxx @@ -145,6 +145,10 @@ const char *Fl_Screen_Driver::get_system_scheme() /** The bullet character used by default by Fl_Secret_Input */ int Fl_Screen_Driver::secret_input_character = 0x2022; +void Fl_Screen_Driver::compose_reset() { + Fl::compose_state = 0; +} + // // End of "$Id$". // diff --git a/src/Fl_System_Driver.cxx b/src/Fl_System_Driver.cxx index 60406bc09..798c1296d 100644 --- a/src/Fl_System_Driver.cxx +++ b/src/Fl_System_Driver.cxx @@ -372,10 +372,6 @@ int Fl_System_Driver::clocale_printf(FILE *output, const char *format, va_list a return vfprintf(output, format, args); } -void Fl_System_Driver::compose_reset() { - Fl::compose_state = 0; -} - // // End of "$Id$". // diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index 4d516c261..7417bb5b5 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -31,7 +31,7 @@ #include <FL/Fl_Text_Buffer.H> #include <FL/Fl_Text_Display.H> #include <FL/Fl_Window.H> -#include <FL/Fl_System_Driver.H> +#include <FL/Fl_Screen_Driver.H> #if defined(WIN32) || defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform editor feel #elif defined(FL_PORTING) @@ -3912,7 +3912,7 @@ int Fl_Text_Display::handle(int event) { if (dragType==DRAG_START_DND) { if (!Fl::event_is_click() && Fl::dnd_text_ops()) { const char* copy = buffer()->selection_text(); - Fl_System_Driver::driver()->dnd(1); + Fl::screen_driver()->dnd(1); free((void*)copy); } return 1; diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 3c51afe6c..4fa197e2f 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3949,7 +3949,7 @@ static NSImage *defaultDragImage(int *pwidth, int *pheight) } -int Fl_Darwin_System_Driver::dnd(int use_selection) +int Fl_Cocoa_Screen_Driver::dnd(int use_selection) { CFDataRef text = CFDataCreate(kCFAllocatorDefault, (UInt8*)fl_selection_buffer[0], fl_selection_length[0]); if (text==NULL) return false; diff --git a/src/Fl_compose.cxx b/src/Fl_compose.cxx index 505bc2994..8a65841a8 100644 --- a/src/Fl_compose.cxx +++ b/src/Fl_compose.cxx @@ -22,7 +22,7 @@ Utility functions to support text input. */ #include <FL/Fl.H> -#include <FL/Fl_System_Driver.H> +#include <FL/Fl_Screen_Driver.H> #ifndef FL_DOXYGEN int Fl::compose_state = 0; @@ -70,7 +70,7 @@ int Fl::compose_state = 0; other user-interface things to allow characters to be selected. */ int Fl::compose(int& del) { - return Fl_System_Driver::driver()->compose(del); + return Fl::screen_driver()->compose(del); } /** @@ -81,7 +81,7 @@ int Fl::compose(int& del) { */ void Fl::compose_reset() { - Fl_System_Driver::driver()->compose_reset(); + Fl::screen_driver()->compose_reset(); } // diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H index 60e2355d8..0c0d64566 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H @@ -83,6 +83,8 @@ public: virtual void reset_marked_text(); virtual void insertion_point_location(int x, int y, int height); int insertion_point_location(int *px, int *py, int *pheight); + virtual int dnd(int use_selection); + virtual int compose(int &del); }; diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx index 3ca490153..470aa2c77 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx @@ -264,6 +264,18 @@ void Fl_Cocoa_Screen_Driver::insertion_point_location(int x, int y, int height) insertion_point_height = height; } +int Fl_Cocoa_Screen_Driver::compose(int &del) { + int condition; + 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 ; + if (condition) { del = 0; return 0;} // this stuff is to be treated as a function key + del = Fl::compose_state; + Fl::compose_state = Fl_X::next_marked_length; + return 1; +} // // End of "$Id$". diff --git a/src/drivers/Darwin/Fl_Darwin_System_Driver.H b/src/drivers/Darwin/Fl_Darwin_System_Driver.H index bfb1a66ea..3ba7155b6 100644 --- a/src/drivers/Darwin/Fl_Darwin_System_Driver.H +++ b/src/drivers/Darwin/Fl_Darwin_System_Driver.H @@ -48,8 +48,6 @@ public: Fl_Darwin_System_Driver(); virtual int single_arg(const char *arg); virtual int arg_and_value(const char *name, const char *value); - virtual int compose(int &del); - virtual int dnd(int use_selection); virtual int mkdir(const char* f, int mode) {return ::mkdir(f, mode);} virtual int open(const char* f, int oflags, int pmode) { return pmode == -1 ? ::open(f, oflags) : ::open(f, oflags, pmode); diff --git a/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx b/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx index e700dfdfc..d28c8f516 100644 --- a/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx +++ b/src/drivers/Darwin/Fl_Darwin_System_Driver.cxx @@ -59,19 +59,6 @@ int Fl_Darwin_System_Driver::arg_and_value(const char *name, const char *value) return strcmp(name, "NSDocumentRevisionsDebugMode") == 0; } -int Fl_Darwin_System_Driver::compose(int &del) { - int condition; - 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 ; - if (condition) { del = 0; return 0;} // this stuff is to be treated as a function key - del = Fl::compose_state; - Fl::compose_state = Fl_X::next_marked_length; - return 1; -} - int Fl_Darwin_System_Driver::clocale_printf(FILE *output, const char *format, va_list args) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 if (fl_mac_os_version >= 100400) { diff --git a/src/drivers/Posix/Fl_Posix_System_Driver.H b/src/drivers/Posix/Fl_Posix_System_Driver.H index c1f9988f5..9551f5867 100644 --- a/src/drivers/Posix/Fl_Posix_System_Driver.H +++ b/src/drivers/Posix/Fl_Posix_System_Driver.H @@ -47,9 +47,6 @@ class Fl_Posix_System_Driver : public Fl_System_Driver public: virtual void display_arg(const char *arg); virtual int XParseGeometry(const char*, int*, int*, unsigned int*, unsigned int*); - virtual int compose(int &del); - virtual void compose_reset(); - virtual int dnd(int unused); virtual int mkdir(const char* f, int mode) {return ::mkdir(f, mode);} virtual int open(const char* f, int oflags, int pmode) { return pmode == -1 ? ::open(f, oflags) : ::open(f, oflags, pmode); diff --git a/src/drivers/Posix/Fl_Posix_System_Driver.cxx b/src/drivers/Posix/Fl_Posix_System_Driver.cxx index c6ca65585..5d42330f6 100644 --- a/src/drivers/Posix/Fl_Posix_System_Driver.cxx +++ b/src/drivers/Posix/Fl_Posix_System_Driver.cxx @@ -47,24 +47,6 @@ int Fl_Posix_System_Driver::XParseGeometry(const char* string, int* x, int* y, return ::XParseGeometry(string, x, y, width, height); } -int Fl_Posix_System_Driver::compose(int& del) { - int condition; - unsigned char ascii = (unsigned char)Fl::e_text[0]; - condition = (Fl::e_state & (FL_ALT | FL_META | FL_CTRL)) && !(ascii & 128) ; - if (condition) { del = 0; return 0;} // this stuff is to be treated as a function key - del = Fl::compose_state; - Fl::compose_state = 0; - // Only insert non-control characters: - if ( (!Fl::compose_state) && ! (ascii & ~31 && ascii!=127)) { return 0; } - return 1; -} - -void Fl_Posix_System_Driver::compose_reset() -{ - Fl::compose_state = 0; - if (fl_xim_ic) XmbResetIC(fl_xim_ic); -} - int Fl_Posix_System_Driver::clocale_printf(FILE *output, const char *format, va_list args) { char *saved_locale = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H index 1bbcb00ee..f874750a7 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H @@ -69,6 +69,8 @@ public: virtual void repeat_timeout(double time, Fl_Timeout_Handler cb, void *argp); virtual int has_timeout(Fl_Timeout_Handler cb, void *argp); virtual void remove_timeout(Fl_Timeout_Handler cb, void *argp); + virtual int dnd(int unused); + virtual int compose(int &del); }; diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx index 3c386223a..7cca121db 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx @@ -510,7 +510,21 @@ void Fl_WinAPI_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void* data) } } - +int Fl_WinAPI_Screen_Driver::compose(int &del) { + unsigned char ascii = (unsigned char)Fl::e_text[0]; + int condition = (Fl::e_state & (FL_ALT | FL_META)) && !(ascii & 128) ; + if (condition) { // this stuff is to be treated as a function key + del = 0; + return 0; + } + del = Fl::compose_state; + Fl::compose_state = 0; + // Only insert non-control characters: + if ( (!Fl::compose_state) && ! (ascii & ~31 && ascii!=127)) { + return 0; + } + return 1; +} // // End of "$Id$". diff --git a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.H index 67684dc07..dd58c5671 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.H @@ -45,8 +45,6 @@ public: virtual void warning(const char *format, va_list args); virtual void error(const char *format, va_list args); virtual void fatal(const char *format, va_list args); - virtual int compose(int &del); - virtual int dnd(int unused); virtual char *utf2mbcs(const char *s); virtual char *getenv(const char* v); virtual int open(const char* f, int oflags, int pmode); diff --git a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx index 13e74914f..9f7693da0 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx @@ -62,22 +62,6 @@ void Fl_WinAPI_System_Driver::fatal(const char *format, va_list args) { ::exit(1); } -int Fl_WinAPI_System_Driver::compose(int &del) { - unsigned char ascii = (unsigned char)Fl::e_text[0]; - int condition = (Fl::e_state & (FL_ALT | FL_META)) && !(ascii & 128) ; - if (condition) { // this stuff is to be treated as a function key - del = 0; - return 0; - } - del = Fl::compose_state; - Fl::compose_state = 0; - // Only insert non-control characters: - if ( (!Fl::compose_state) && ! (ascii & ~31 && ascii!=127)) { - return 0; - } - return 1; -} - char *Fl_WinAPI_System_Driver::utf2mbcs(const char *s) { if (!s) return NULL; size_t l = strlen(s); diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.H b/src/drivers/X11/Fl_X11_Screen_Driver.H index 4d107abd1..0cfe6311a 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.H +++ b/src/drivers/X11/Fl_X11_Screen_Driver.H @@ -73,6 +73,9 @@ public: virtual void repeat_timeout(double time, Fl_Timeout_Handler cb, void *argp); virtual int has_timeout(Fl_Timeout_Handler cb, void *argp); virtual void remove_timeout(Fl_Timeout_Handler cb, void *argp); + virtual int dnd(int unused); + virtual int compose(int &del); + virtual void compose_reset(); }; diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index f938b1417..03981271c 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -34,6 +34,7 @@ #endif extern Atom fl_NET_WORKAREA; +extern XIC fl_xim_ic; // in Fl_x.cxx // Add these externs to allow X11 port to build - same as Fl_WinAPI_Screen_Driver.cxx. // These should be in an internal header somewhere? @@ -609,7 +610,23 @@ void Fl_X11_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void *argp) { } } +int Fl_X11_Screen_Driver::compose(int& del) { + int condition; + unsigned char ascii = (unsigned char)Fl::e_text[0]; + condition = (Fl::e_state & (FL_ALT | FL_META | FL_CTRL)) && !(ascii & 128) ; + if (condition) { del = 0; return 0;} // this stuff is to be treated as a function key + del = Fl::compose_state; + Fl::compose_state = 0; + // Only insert non-control characters: + if ( (!Fl::compose_state) && ! (ascii & ~31 && ascii!=127)) { return 0; } + return 1; +} +void Fl_X11_Screen_Driver::compose_reset() +{ + Fl::compose_state = 0; + if (fl_xim_ic) XmbResetIC(fl_xim_ic); +} // // End of "$Id$". diff --git a/src/fl_dnd_win32.cxx b/src/fl_dnd_win32.cxx index 35963b9f4..8efb8dcbb 100644 --- a/src/fl_dnd_win32.cxx +++ b/src/fl_dnd_win32.cxx @@ -24,7 +24,7 @@ #include <FL/x.H> #include <FL/Fl_Window.H> #include <FL/fl_utf8.h> -#include "drivers/WinAPI/Fl_WinAPI_System_Driver.H" +#include "drivers/WinAPI/Fl_WinAPI_Screen_Driver.H" #include "flstring.h" #include <stdio.h> #include <stdlib.h> @@ -521,7 +521,7 @@ public: }; -int Fl_WinAPI_System_Driver::dnd(int unused) +int Fl_WinAPI_Screen_Driver::dnd(int unused) { DWORD dropEffect; ReleaseCapture(); diff --git a/src/fl_dnd_x.cxx b/src/fl_dnd_x.cxx index da33e0ecc..3772b8439 100644 --- a/src/fl_dnd_x.cxx +++ b/src/fl_dnd_x.cxx @@ -20,7 +20,7 @@ #include <FL/Fl_Window.H> #include <FL/x.H> #include "flstring.h" -#include "drivers/Posix/Fl_Posix_System_Driver.H" +#include "drivers/X11/Fl_X11_Screen_Driver.H" extern Atom fl_XdndAware; @@ -80,7 +80,7 @@ static int local_handle(int event, Fl_Window* window) { return ret; } -int Fl_Posix_System_Driver::dnd(int unused) { +int Fl_X11_Screen_Driver::dnd(int unused) { Fl_Window *source_fl_win = Fl::first_window(); Fl::first_window()->cursor(FL_CURSOR_MOVE); Window source_window = fl_xid(Fl::first_window()); |
