return do_join;
}
+#define STEXT_FREEZE() \
+ if (!frozen) { gtk_stext_freeze(text); frozen = TRUE; }
+
static void compose_wrap_line_all(Compose *compose)
{
GtkSText *text = GTK_STEXT(compose->text);
gboolean linewrap_quote = TRUE;
gboolean set_editable_pos = FALSE;
gint editable_pos = 0;
+ gboolean frozen = FALSE;
guint linewrap_len = prefs_common.linewrap_len;
gchar *qfmt = prefs_common.quotemark;
gchar cbuf[MB_LEN_MAX];
- gtk_stext_freeze(text);
-
tlen = gtk_stext_get_length(text);
for (; cur_pos < tlen; cur_pos++) {
#endif
/* should we delete to perform smart wrapping */
if (line_len < linewrap_len && do_delete) {
+ STEXT_FREEZE();
/* get rid of newline */
gtk_stext_set_point(text, cur_pos);
gtk_stext_forward_delete(text, 1);
if (p_pos + i_len != line_pos ||
!gtkut_stext_is_uri_string
(text, line_pos, tlen)) {
+ STEXT_FREEZE();
/* workaround for correct cursor
position */
if (set_editable_pos == FALSE) {
}
/* insert CR */
+ STEXT_FREEZE();
gtk_stext_set_point(text, line_pos);
gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
/* gtk_stext_compact_buffer(text); */
ins_len = ins_quote
(text, i_len, p_pos,
tlen, qfmt);
-
- /* gtk_stext_compact_buffer(text); */
tlen += ins_len;
}
#ifdef WRAP_DEBUG
cur_len += ch_len;
}
- gtk_stext_thaw(text);
+ if (frozen)
+ gtk_stext_thaw(text);
if (set_editable_pos && editable_pos <= tlen)
gtk_editable_set_position(GTK_EDITABLE(text), editable_pos);
}
+#undef STEXT_FREEZE
#undef GET_CHAR
static void compose_set_title(Compose *compose)