static VALUE rg_set_surrounding(VALUE self, VALUE text, VALUE cursor_index) { StringValue(text); gtk_im_context_set_surrounding(_SELF(self), RSTRING_PTR(text), RSTRING_LEN(text), NUM2INT(cursor_index)); return self; }
static gboolean st_im_text_retrieve_surrounding_cb (GtkIMContext *context, StIMText *imtext) { ClutterText *clutter_text = CLUTTER_TEXT (imtext); ClutterTextBuffer *buffer; const gchar *text; gint cursor_pos; buffer = clutter_text_get_buffer (clutter_text); text = clutter_text_buffer_get_text (buffer); cursor_pos = clutter_text_get_cursor_position (clutter_text); if (cursor_pos < 0) cursor_pos = clutter_text_buffer_get_length (buffer); gtk_im_context_set_surrounding (context, text, /* length and cursor_index are in bytes */ clutter_text_buffer_get_bytes (buffer), g_utf8_offset_to_pointer (text, cursor_pos) - text); return TRUE; }
static void fcitx_im_context_set_surrounding (GtkIMContext *context, const gchar *text, gint len, gint cursor_index) { g_return_if_fail (context != NULL); g_return_if_fail (FCITX_IS_IM_CONTEXT (context)); g_return_if_fail (text != NULL); g_return_if_fail (strlen (text) >= len); g_return_if_fail (0 <= cursor_index && cursor_index <= len); FcitxIMContext *fcitxcontext = FCITX_IM_CONTEXT (context); if (fcitx_client_is_valid(fcitxcontext->client) && !(fcitxcontext->capacity & CAPACITY_PASSWORD)) { guint cursor_pos; guint utf8_len; gchar *p; p = g_strndup (text, len); cursor_pos = g_utf8_strlen (p, cursor_index); utf8_len = g_utf8_strlen(p, len); guint anchor_pos = get_selection_anchor_point (fcitxcontext, cursor_pos, utf8_len); fcitx_client_set_surrounding_text (fcitxcontext->client, p, cursor_pos, anchor_pos); g_free (p); } gtk_im_context_set_surrounding (fcitxcontext->slave, text, len, cursor_index); }
boolean scim_bridge_client_imcontext_replace_surrounding_text (ScimBridgeClientIMContext *imcontext, int cursor_position, const char *string) { gtk_im_context_set_surrounding (GTK_IM_CONTEXT (imcontext), string, -1, cursor_position); return TRUE; }