static void cb_entry_insert_text (GtkEditable *editable, gchar const *text, gint len_bytes, gint *pos_in_chars, WBCGtk *wbcg) { char const *str = gtk_entry_get_text (GTK_ENTRY (editable)); int pos_in_bytes = g_utf8_offset_to_pointer (str, *pos_in_chars) - str; if (wbcg->auto_completing && len_bytes != 0 && (!g_unichar_isalpha (g_utf8_get_char (text)) || *pos_in_chars != gtk_entry_get_text_length (GTK_ENTRY (editable)))) { wbcg->auto_completing = FALSE; } if (wbcg->edit_line.full_content) { (void)pango_attr_list_filter (wbcg->edit_line.cur_fmt, cb_set_attr_list_len, GINT_TO_POINTER (len_bytes)); go_pango_attr_list_open_hole (wbcg->edit_line.full_content, pos_in_bytes, len_bytes); pango_attr_list_splice (wbcg->edit_line.full_content, wbcg->edit_line.cur_fmt, pos_in_bytes, 0); go_pango_attr_list_open_hole (wbcg->edit_line.markup, pos_in_bytes, len_bytes); pango_attr_list_splice (wbcg->edit_line.markup, wbcg->edit_line.cur_fmt, pos_in_bytes, 0); } }
static void wbcg_edit_init_markup (WBCGtk *wbcg, PangoAttrList *markup) { SheetView const *sv; char const *text; GnmStyle const *style; g_return_if_fail (wbcg->edit_line.full_content == NULL); wbcg->edit_line.markup = markup; sv = wb_control_cur_sheet_view (GNM_WBC (wbcg)); style = sheet_style_get (sv->sheet, sv->edit_pos.col, sv->edit_pos.row); wbcg->edit_line.cell_attrs = gnm_style_generate_attrs_full (style); wbcg->edit_line.full_content = pango_attr_list_copy (wbcg->edit_line.cell_attrs); pango_attr_list_splice (wbcg->edit_line.full_content, markup, 0, 0); text = gtk_entry_get_text (wbcg_get_entry (wbcg)); set_cur_fmt (wbcg, strlen (text) - 1); }
JNIEXPORT void JNICALL Java_org_gnome_pango_PangoAttrList_pango_1attr_1list_1splice ( JNIEnv* env, jclass cls, jlong _self, jlong _other, jint _pos, jint _len ) { PangoAttrList* self; PangoAttrList* other; gint pos; gint len; // convert parameter self self = (PangoAttrList*) _self; // convert parameter other other = (PangoAttrList*) _other; // convert parameter pos pos = (gint) _pos; // convert parameter len len = (gint) _len; // call function pango_attr_list_splice(self, other, pos, len); // cleanup parameter self // cleanup parameter other // cleanup parameter pos // cleanup parameter len }