aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-03-29 09:32:23 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-03-29 09:32:23 +0000
commit6ff0f164b9c470a3be62859031944eadabbf3243 (patch)
treedb51734b3ee046da84dd644d0d4d2aafc17630c8
parent5a5a9d14466480ba7597b61bebeb9ea1c09d7048 (diff)
don't join (presumably) itemized lines on line-wrapping.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@194 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.ja5
-rw-r--r--configure.in2
-rw-r--r--src/compose.c53
4 files changed, 59 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index be44c501..ad861a2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2005-03-29
+ * src/compose.c: don't join (presumably) itemized lines on
+ line-wrapping.
+
+2005-03-29
+
* version 1.9.7
2005-03-29
diff --git a/ChangeLog.ja b/ChangeLog.ja
index ecc4afdd..4f628861 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,10 @@
2005-03-29
+ * src/compose.c: 行整形時に箇条書きの(と思われる)行を結合しない
+ ようにした。
+
+2005-03-29
+
* version 1.9.7
2005-03-29
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)) {