comparison src/gtkimhtml.c @ 7779:de9a47ff006a

[gaim-migrate @ 8424] copy plain text. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Sat, 06 Dec 2003 21:55:22 +0000
parents 3db18c16f573
children 666f672a869a
comparison
equal deleted inserted replaced
7778:3db18c16f573 7779:de9a47ff006a
359 #if GTK_CHECK_VERSION(2,2,0) 359 #if GTK_CHECK_VERSION(2,2,0)
360 static void gtk_imhtml_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, GtkIMHtml *imhtml) { 360 static void gtk_imhtml_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, GtkIMHtml *imhtml) {
361 GtkTextIter start, end; 361 GtkTextIter start, end;
362 GtkTextMark *sel = gtk_text_buffer_get_selection_bound(imhtml->text_buffer); 362 GtkTextMark *sel = gtk_text_buffer_get_selection_bound(imhtml->text_buffer);
363 GtkTextMark *ins = gtk_text_buffer_get_insert(imhtml->text_buffer); 363 GtkTextMark *ins = gtk_text_buffer_get_insert(imhtml->text_buffer);
364 char *text;
364 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &start, sel); 365 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &start, sel);
365 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &end, ins); 366 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &end, ins);
366 367
367 char *text = gtk_imhtml_get_markup_range(imhtml, &start, &end); 368
368 if (info == TARGET_HTML) { 369 if (info == TARGET_HTML) {
369 int len; 370 int len;
370 GString *str = g_string_new(NULL); 371 GString *str = g_string_new(NULL);
372 text = gtk_imhtml_get_markup_range(imhtml, &start, &end);
371 373
372 /* Mozilla asks that we start our text/html with the Unicode byte order mark */ 374 /* Mozilla asks that we start our text/html with the Unicode byte order mark */
373 str = g_string_append_unichar(str, 0xfeff); 375 str = g_string_append_unichar(str, 0xfeff);
374 str = g_string_append(str, text); 376 str = g_string_append(str, text);
375 str = g_string_append_unichar(str, 0x0000); 377 str = g_string_append_unichar(str, 0x0000);
376 char *selection = g_convert(str->str, str->len, "UCS-2", "UTF-8", NULL, &len, NULL); 378 char *selection = g_convert(str->str, str->len, "UCS-2", "UTF-8", NULL, &len, NULL);
377 gtk_selection_data_set (selection_data, gdk_atom_intern("text/html", FALSE), 16, selection, len); 379 gtk_selection_data_set (selection_data, gdk_atom_intern("text/html", FALSE), 16, selection, len);
378 g_string_free(str, TRUE); 380 g_string_free(str, TRUE);
379 g_free(text);
380 g_free(selection); 381 g_free(selection);
381 } else { 382 } else {
383 text = gtk_text_buffer_get_text(imhtml, &start, &end, FALSE);
382 gtk_selection_data_set_text(selection_data, text, strlen(text)); 384 gtk_selection_data_set_text(selection_data, text, strlen(text));
383 } 385 }
386 g_free(text);
384 } 387 }
385 388
386 static void gtk_imhtml_clipboard_clear(GtkClipboard *clipboard, GtkIMHtml *imhtml) 389 static void gtk_imhtml_clipboard_clear(GtkClipboard *clipboard, GtkIMHtml *imhtml)
387 { 390 {
388 GtkTextIter insert; 391 GtkTextIter insert;
2517 str = g_string_append(str, sspan->start_tag); 2520 str = g_string_append(str, sspan->start_tag);
2518 if (sspan->end) { 2521 if (sspan->end) {
2519 //espan = sspan; 2522 //espan = sspan;
2520 //gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &eiter, espan->end); 2523 //gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &eiter, espan->end);
2521 closers = g_list_insert_sorted(closers, sspan, (GCompareFunc)span_compare_end); 2524 closers = g_list_insert_sorted(closers, sspan, (GCompareFunc)span_compare_end);
2522 if (closers->data != espan) { 2525 espan = (GtkIMHtmlFormatSpan*)closers->data;
2523 espan = (GtkIMHtmlFormatSpan*)closers->data; 2526 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &eiter, espan->end);
2524 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &eiter, espan->end); 2527
2525 }
2526 } 2528 }
2527 starters = starters->next; 2529 starters = starters->next;
2528 if (starters) { 2530 if (starters) {
2529 sspan = (GtkIMHtmlFormatSpan*)starters->data; 2531 sspan = (GtkIMHtmlFormatSpan*)starters->data;
2530 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &siter, sspan->start); 2532 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &siter, sspan->start);