Mercurial > pidgin
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); |