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 clutter_text_buffer_get_property (GObject *obj, guint prop_id, GValue *value, GParamSpec *pspec) { ClutterTextBuffer *buffer = CLUTTER_TEXT_BUFFER (obj); switch (prop_id) { case PROP_TEXT: g_value_set_string (value, clutter_text_buffer_get_text (buffer)); break; case PROP_LENGTH: g_value_set_uint (value, clutter_text_buffer_get_length (buffer)); break; case PROP_MAX_LENGTH: g_value_set_int (value, clutter_text_buffer_get_max_length (buffer)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } }