From 15715cd89856140e70dfcdaf97b70d8f06d96e2b Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Fri, 15 Apr 2016 15:12:22 +0000 Subject: Move platform-dependent implementations of Fl::en/dis/able_im() to the Fl_Screen_Driver class git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11618 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- FL/Fl_Screen_Driver.H | 3 +++ src/Fl.cxx | 10 ++++++++++ src/Fl_cocoa.mm | 4 ++-- src/Fl_win32.cxx | 4 ++-- src/Fl_x.cxx | 4 ++-- src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H | 2 ++ src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H | 2 ++ src/drivers/X11/Fl_X11_Screen_Driver.H | 2 ++ 8 files changed, 25 insertions(+), 6 deletions(-) diff --git a/FL/Fl_Screen_Driver.H b/FL/Fl_Screen_Driver.H index f1bee4bc9..1d19c16ca 100644 --- a/FL/Fl_Screen_Driver.H +++ b/FL/Fl_Screen_Driver.H @@ -135,6 +135,9 @@ public: virtual int input_widget_handle_key(int key, unsigned mods, unsigned shift, Fl_Input *input); // implement to support Fl::get_mouse() virtual void get_mouse(int &x, int &y) {} + // optional methods to enable/disable input methods for complex scripts + virtual void enable_im() {} + virtual void disable_im() {} }; diff --git a/src/Fl.cxx b/src/Fl.cxx index 1527b5f72..775a43837 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -1941,6 +1941,16 @@ int Fl::clipboard_contains(const char *type) return Fl::system_driver()->clipboard_contains(type); } +void Fl::enable_im() +{ + Fl::screen_driver()->enable_im(); +} + +void Fl::disable_im() +{ + Fl::screen_driver()->disable_im(); +} + // // End of "$Id$". // diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index da4e627b9..faf59a8b4 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -1827,7 +1827,7 @@ static int input_method_startup() return retval; } -void Fl::enable_im() { +void Fl_Cocoa_Screen_Driver::enable_im() { if (!input_method_startup()) return; im_enabled = 1; @@ -1840,7 +1840,7 @@ void Fl::enable_im() { KeyScript(smKeyEnableKybds); } -void Fl::disable_im() { +void Fl_Cocoa_Screen_Driver::disable_im() { if (!input_method_startup()) return; im_enabled = 0; diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index f830442e2..b37f0994f 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -548,7 +548,7 @@ static Fl_Win32_At_Exit win32_at_exit; static char im_enabled = 1; -void Fl::enable_im() { +void Fl_WinAPI_Screen_Driver::enable_im() { fl_open_display(); Fl_X* i = Fl_X::first; @@ -560,7 +560,7 @@ void Fl::enable_im() { im_enabled = 1; } -void Fl::disable_im() { +void Fl_WinAPI_Screen_Driver::disable_im() { fl_open_display(); Fl_X* i = Fl_X::first; diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index d4a1f4f12..04e82abbc 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -653,7 +653,7 @@ void fl_xim_deactivate(void) { fl_xim_win = 0; } -void Fl::enable_im() { +void Fl_X11_Screen_Driver::enable_im() { Fl_Window *win; win = Fl::first_window(); @@ -665,7 +665,7 @@ void Fl::enable_im() { } } -void Fl::disable_im() { +void Fl_X11_Screen_Driver::disable_im() { fl_xim_deactivate(); } diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H index b64cf91b2..eea642760 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H @@ -91,6 +91,8 @@ public: virtual uchar *read_image(uchar *p, int x, int y, int w, int h, int alpha); virtual int input_widget_handle_key(int key, unsigned mods, unsigned shift, Fl_Input *input); virtual void get_mouse(int &x, int &y); + virtual void enable_im(); + virtual void disable_im(); }; diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H index b24045433..80ced415b 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H @@ -73,6 +73,8 @@ public: virtual int compose(int &del); virtual uchar *read_win_rectangle(uchar *p, int X, int Y, int w, int h, int alpha); virtual void get_mouse(int &x, int &y); + virtual void enable_im(); + virtual void disable_im(); }; diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.H b/src/drivers/X11/Fl_X11_Screen_Driver.H index 72f4358b2..a2b8b628d 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.H +++ b/src/drivers/X11/Fl_X11_Screen_Driver.H @@ -79,6 +79,8 @@ public: virtual int text_display_can_leak(); virtual uchar *read_win_rectangle(uchar *p, int X, int Y, int w, int h, int alpha); virtual void get_mouse(int &x, int &y); + virtual void enable_im(); + virtual void disable_im(); }; -- cgit v1.2.3