summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorHideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>2001-03-14 22:03:24 +0000
committerHidetoshi Tajima <tajima@src.gnome.org>2001-03-14 22:03:24 +0000
commit02f376a91fcc7c4a1e0600bea8fcca07f5fb1c98 (patch)
tree17dba998f725edbe35dc33f91dc5cc76a066dda6 /modules
parentcf89a05f075bfd3207266cb4fd9f3d5948f3857d (diff)
downloadgtk+-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.c30
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);