Revision 3177 src/textview.c
| textview.c (revision 3177) | ||
|---|---|---|
| 249 | 249 |
static gboolean textview_uri_security_check (TextView *textview, |
| 250 | 250 |
RemoteURI *uri); |
| 251 | 251 |
static void textview_uri_list_remove_all (GSList *uri_list); |
| 252 |
static void textview_uri_list_update_offsets (TextView *textview, |
|
| 253 |
gint start, |
|
| 254 |
gint add); |
|
| 252 | 255 |
|
| 253 | 256 |
|
| 254 | 257 |
TextView *textview_create(void) |
| ... | ... | |
| 509 | 512 |
|
| 510 | 513 |
gtk_text_buffer_get_end_iter(buffer, &iter); |
| 511 | 514 |
textview->body_pos = gtk_text_iter_get_offset(&iter); |
| 515 |
debug_print("textview_show_message: body_pos: %d\n",
|
|
| 516 |
textview->body_pos); |
|
| 512 | 517 |
} else {
|
| 513 | 518 |
gtk_text_buffer_get_end_iter(buffer, &iter); |
| 514 | 519 |
mark = gtk_text_buffer_get_mark(buffer, "attach-file-pos"); |
| ... | ... | |
| 627 | 632 |
|
| 628 | 633 |
gtk_text_buffer_get_end_iter(buffer, &iter); |
| 629 | 634 |
textview->body_pos = gtk_text_iter_get_offset(&iter); |
| 635 |
debug_print("textview_show_part: body_pos: %d\n",
|
|
| 636 |
textview->body_pos); |
|
| 630 | 637 |
if (!mimeinfo->main) |
| 631 | 638 |
gtk_text_buffer_insert(buffer, &iter, "\n", 1); |
| 632 | 639 |
} else {
|
| ... | ... | |
| 1045 | 1052 |
g_free(filename); |
| 1046 | 1053 |
} else if (prefs_common.show_attached_files_first) {
|
| 1047 | 1054 |
gint count; |
| 1055 |
gint prev_pos, new_pos; |
|
| 1048 | 1056 |
|
| 1049 | 1057 |
mark = gtk_text_buffer_get_mark(buffer, "attach-file-pos"); |
| 1050 | 1058 |
|
| 1051 | 1059 |
gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark); |
| 1060 |
prev_pos = gtk_text_iter_get_offset(&iter); |
|
| 1052 | 1061 |
count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(mark), "attach-file-count")); |
| 1053 | 1062 |
if (count == 0) {
|
| 1054 | 1063 |
textview_insert_pad(textview, &iter, 4); |
| ... | ... | |
| 1056 | 1065 |
} |
| 1057 | 1066 |
textview_add_part_widget(textview, &iter, mimeinfo, buf); |
| 1058 | 1067 |
gtk_text_buffer_move_mark(buffer, mark, &iter); |
| 1068 |
new_pos = gtk_text_iter_get_offset(&iter); |
|
| 1069 |
textview_uri_list_update_offsets(textview, new_pos, new_pos - prev_pos); |
|
| 1059 | 1070 |
g_object_set_data(G_OBJECT(mark), "attach-file-count", GINT_TO_POINTER(count + 1)); |
| 1060 | 1071 |
gtk_text_buffer_get_end_iter(buffer, &iter); |
| 1061 | 1072 |
} else {
|
| ... | ... | |
| 2202 | 2213 |
RemoteURI *uri_ = (RemoteURI *)cur->data; |
| 2203 | 2214 |
|
| 2204 | 2215 |
if (start_pos == uri_->start && end_pos == uri_->end) {
|
| 2216 |
debug_print("uri found: (%d, %d): %s\n",
|
|
| 2217 |
start_pos, end_pos, uri_->uri); |
|
| 2205 | 2218 |
uri = uri_; |
| 2206 | 2219 |
break; |
| 2207 | 2220 |
} |
| ... | ... | |
| 2700 | 2713 |
|
| 2701 | 2714 |
g_slist_free(uri_list); |
| 2702 | 2715 |
} |
| 2716 |
|
|
| 2717 |
static void textview_uri_list_update_offsets(TextView *textview, gint start, gint add) |
|
| 2718 |
{
|
|
| 2719 |
GSList *cur; |
|
| 2720 |
|
|
| 2721 |
debug_print("textview_uri_list_update_offsets: from %d: add %d\n", start, add);
|
|
| 2722 |
|
|
| 2723 |
for (cur = textview->uri_list; cur != NULL; cur = cur->next) {
|
|
| 2724 |
RemoteURI *uri = (RemoteURI *)cur->data; |
|
| 2725 |
|
|
| 2726 |
if (uri->start >= start) {
|
|
| 2727 |
debug_print("textview_uri_list_update_offsets: update: (%d, %d) -> (%d, %d)\n", uri->start, uri->end, uri->start + add, uri->end + add);
|
|
| 2728 |
uri->start += add; |
|
| 2729 |
uri->end += add; |
|
| 2730 |
} |
|
| 2731 |
} |
|
| 2732 |
} |
|
Also available in: Unified diff