From 6ff0f164b9c470a3be62859031944eadabbf3243 Mon Sep 17 00:00:00 2001 From: hiro Date: Tue, 29 Mar 2005 09:32:23 +0000 Subject: don't join (presumably) itemized lines on line-wrapping. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@194 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 5 +++++ ChangeLog.ja | 5 +++++ configure.in | 2 +- src/compose.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 59 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index be44c501..ad861a2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-03-29 + + * src/compose.c: don't join (presumably) itemized lines on + line-wrapping. + 2005-03-29 * version 1.9.7 diff --git a/ChangeLog.ja b/ChangeLog.ja index ecc4afdd..4f628861 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,8 @@ +2005-03-29 + + * src/compose.c: 行整形時に箇条書きの(と思われる)行を結合しない + ようにした。 + 2005-03-29 * version 1.9.7 diff --git a/configure.in b/configure.in index 4cd2451f..5f328438 100644 --- a/configure.in +++ b/configure.in @@ -9,7 +9,7 @@ MINOR_VERSION=9 MICRO_VERSION=7 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION= +EXTRA_VERSION=+svn VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/compose.c b/src/compose.c index 6b723918..c49cda0b 100644 --- a/src/compose.c +++ b/src/compose.c @@ -1974,6 +1974,44 @@ static gchar *compose_get_quote_str(GtkTextBuffer *buffer, return NULL; } +/* return TRUE if the line is itemized */ +static gboolean compose_is_itemized(GtkTextBuffer *buffer, + const GtkTextIter *start) +{ + GtkTextIter iter = *start; + gunichar wc; + gchar ch[6]; + gint clen; + + if (gtk_text_iter_ends_line(&iter)) + return FALSE; + + while (1) { + wc = gtk_text_iter_get_char(&iter); + if (!g_unichar_isspace(wc)) + break; + gtk_text_iter_forward_char(&iter); + if (gtk_text_iter_ends_line(&iter)) + return FALSE; + } + + clen = g_unichar_to_utf8(wc, ch); + if (clen != 1) + return FALSE; + + if (!strchr("*-+", ch[0])) + return FALSE; + + gtk_text_iter_forward_char(&iter); + if (gtk_text_iter_ends_line(&iter)) + return FALSE; + wc = gtk_text_iter_get_char(&iter); + if (g_unichar_isspace(wc)) + return TRUE; + + return FALSE; +} + static gboolean compose_get_line_break_pos(GtkTextBuffer *buffer, const GtkTextIter *start, GtkTextIter *break_pos, @@ -2070,7 +2108,7 @@ static gboolean compose_join_next_line(GtkTextBuffer *buffer, GtkTextIter *iter, const gchar *quote_str) { - GtkTextIter iter_ = *iter, cur, prev, next; + GtkTextIter iter_ = *iter, cur, prev, next, end; PangoLogAttr attrs[3]; gchar *str; gchar *next_quote_str; @@ -2091,16 +2129,21 @@ static gboolean compose_join_next_line(GtkTextBuffer *buffer, } g_free(next_quote_str); - /* delete quote str */ + end = iter_; if (quote_len > 0) { - GtkTextIter end = iter_; - gtk_text_iter_forward_chars(&end, quote_len); if (gtk_text_iter_ends_line(&end)) return FALSE; - gtk_text_buffer_delete(buffer, &iter_, &end); } + /* don't join itemized lines */ + if (compose_is_itemized(buffer, &end)) + return FALSE; + + /* delete quote str */ + if (quote_len > 0) + gtk_text_buffer_delete(buffer, &iter_, &end); + /* delete linebreak and extra spaces */ prev = cur = iter_; while (gtk_text_iter_backward_char(&cur)) { -- cgit v1.2.3