diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-07-11 09:27:06 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-07-11 09:27:06 +0000 |
commit | ce4ea6da4ec2b2b88f7b9b03f94c5d859be4ef1b (patch) | |
tree | c87161b3841df8ad8453ffb0880255bb153c4e65 /src | |
parent | cf6897a4d43c2484850f48be399b4816c180c9cc (diff) |
fixed duplicate signature problem in re-edit or after editing with external editor.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@417 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/compose.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/compose.c b/src/compose.c index b7bb97e5..0f5abb1a 100644 --- a/src/compose.c +++ b/src/compose.c @@ -200,6 +200,7 @@ static void compose_reedit_set_entry (Compose *compose, static void compose_insert_sig (Compose *compose, gboolean replace, gboolean scroll); +static void compose_enable_sig (Compose *compose); static gchar *compose_get_signature_str (Compose *compose); static void compose_insert_file (Compose *compose, @@ -1026,6 +1027,7 @@ void compose_reedit(MsgInfo *msginfo) strcrchomp(buf); gtk_text_buffer_insert(buffer, &iter, buf, -1); } + compose_enable_sig(compose); compose->autowrap = prev_autowrap; fclose(fp); } @@ -1629,6 +1631,32 @@ static void compose_insert_sig(Compose *compose, gboolean replace, gtk_text_view_scroll_mark_onscreen(text, mark); } +static void compose_enable_sig(Compose *compose) +{ + GtkTextView *text = GTK_TEXT_VIEW(compose->text); + GtkTextBuffer *buffer; + GtkTextIter iter, start, end; + gchar *sig_str; + + g_return_if_fail(compose->account != NULL); + + buffer = gtk_text_view_get_buffer(text); + gtk_text_buffer_get_start_iter(buffer, &iter); + + sig_str = compose_get_signature_str(compose); + if (!sig_str) + return; + + if (gtkut_text_buffer_find(buffer, &iter, sig_str, TRUE, &start)) { + end = start; + gtk_text_iter_forward_chars(&end, g_utf8_strlen(sig_str, -1)); + gtk_text_buffer_apply_tag(buffer, compose->sig_tag, + &start, &end); + } + + g_free(sig_str); +} + static gchar *compose_get_signature_str(Compose *compose) { gchar *sig_body = NULL; @@ -5210,6 +5238,7 @@ static gboolean compose_input_cb(GIOChannel *source, GIOCondition condition, gtk_text_buffer_set_text(buffer, "", 0); compose_insert_file(compose, compose->exteditor_file, FALSE); + compose_enable_sig(compose); gtk_text_buffer_get_start_iter(buffer, &iter); gtk_text_buffer_place_cursor(buffer, &iter); |