summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-04-15 15:12:22 +0000
committerManolo Gouy <Manolo>2016-04-15 15:12:22 +0000
commit15715cd89856140e70dfcdaf97b70d8f06d96e2b (patch)
tree0148a5736d10a5f0c11a3ba6f9e1db2c8459424b
parent397a3b83bf431e8bd00bbfb3c34ba4813fc55152 (diff)
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
-rw-r--r--FL/Fl_Screen_Driver.H3
-rw-r--r--src/Fl.cxx10
-rw-r--r--src/Fl_cocoa.mm4
-rw-r--r--src/Fl_win32.cxx4
-rw-r--r--src/Fl_x.cxx4
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H2
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.H2
-rw-r--r--src/drivers/X11/Fl_X11_Screen_Driver.H2
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();
};