diff options
author | HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com> | 2001-03-14 22:03:24 +0000 |
---|---|---|
committer | Hidetoshi Tajima <tajima@src.gnome.org> | 2001-03-14 22:03:24 +0000 |
commit | 02f376a91fcc7c4a1e0600bea8fcca07f5fb1c98 (patch) | |
tree | 17dba998f725edbe35dc33f91dc5cc76a066dda6 /modules | |
parent | cf89a05f075bfd3207266cb4fd9f3d5948f3857d (diff) | |
download | gtk+-02f376a91fcc7c4a1e0600bea8fcca07f5fb1c98.tar.gz |
add set_cursor_pos() virtual method
2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
* gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
* gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
* gtk/gtkimcontext.h (struct _GtkIMContextClass): add
set_cursor_pos() virtual method
* modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
(gtk_im_context_xim_set_cursor_pos): add implementation for
set_cursor_pos() method
* gtk/gtkentry.c (recompute_idle_func): set current cursor
position to input methods
Diffstat (limited to 'modules')
-rw-r--r-- | modules/input/gtkimcontextxim.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c index 5829b5f49e..e0384d4c33 100644 --- a/modules/input/gtkimcontextxim.c +++ b/modules/input/gtkimcontextxim.c @@ -40,6 +40,8 @@ static gboolean gtk_im_context_xim_filter_keypress (GtkIMContext *co static void gtk_im_context_xim_reset (GtkIMContext *context); static void gtk_im_context_xim_focus_in (GtkIMContext *context); static void gtk_im_context_xim_focus_out (GtkIMContext *context); +static void gtk_im_context_xim_set_cursor_pos (GtkIMContext *context, + GdkRectangle *area); static void gtk_im_context_xim_get_preedit_string (GtkIMContext *context, gchar **str, PangoAttrList **attrs, @@ -213,6 +215,7 @@ gtk_im_context_xim_class_init (GtkIMContextXIMClass *class) im_context_class->get_preedit_string = gtk_im_context_xim_get_preedit_string; im_context_class->focus_in = gtk_im_context_xim_focus_in; im_context_class->focus_out = gtk_im_context_xim_focus_out; + im_context_class->set_cursor_pos = gtk_im_context_xim_set_cursor_pos; gobject_class->finalize = gtk_im_context_xim_finalize; } @@ -392,6 +395,33 @@ gtk_im_context_xim_focus_out (GtkIMContext *context) } static void +gtk_im_context_xim_set_cursor_pos (GtkIMContext *context, + GdkRectangle *area) +{ + GtkIMContextXIM *context_xim = GTK_IM_CONTEXT_XIM (context); + XIC ic = gtk_im_context_xim_get_ic (context_xim); + + XVaNestedList preedit_attr; + XPoint spot; + + if (!ic) + return; + + spot.x = area->x; + spot.y = area->y; + + preedit_attr = XVaCreateNestedList (0, + XNSpotLocation, &spot, + 0); + XSetICValues (ic, + XNPreeditAttributes, preedit_attr, + NULL); + XFree(preedit_attr); + + return; +} + +static void gtk_im_context_xim_reset (GtkIMContext *context) { GtkIMContextXIM *context_xim = GTK_IM_CONTEXT_XIM (context); |