Re: BUG report



Am 04.03.10 16:01 schrieb(en) Mario Mikocevic:
minor annoyance ->

copy/pasting parts of received e-mail with classic code remarks is impossible,
remark signs are ommited in copy buffer

Actually, that's a real bug!  E.g., sometimes, there is '}' in the quote regex, which makes copying C sources sometimes impossible.

The attached patch does not omit the citation prefix from the buffer, but displays it in a /very/ small (invisible) size.  Works now with Emacs, gedit and OpenOffice.  Setting the size to 0.0 doesn't work, btw - then all cited stuff disappears.

Opinions?

Best, Albrecht.
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index 6da1eb3..6e121ce 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -268,6 +268,7 @@ balsa_mime_widget_new_text(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
 	guint cite_start;
 	gint margin;
         gdouble char_width;
+        GtkTextTag *invisible;
         PangoContext *context = gtk_widget_get_pango_context(mw->widget);
         PangoFontDescription *desc =
             pango_context_get_font_description(context);
@@ -288,6 +289,9 @@ balsa_mime_widget_new_text(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
 				   "foreground", "red",
 				   "underline", PANGO_UNDERLINE_SINGLE,
 				   NULL);
+        invisible = gtk_text_buffer_create_tag(buffer, "hide-cite",
+                                               "size-points", (gdouble) 0.01,
+                                               NULL);
 	url_info.callback = url_found_cb;
 	url_info.callback_data = &url_list;
 	url_info.buffer_is_flowed = libbalsa_message_body_is_flowed(mime_body);
@@ -334,13 +338,23 @@ balsa_mime_widget_new_text(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
 		}
 
 		/* skip the citation prefix */
+		tag = quote_tag(buffer, quote_level, margin);
 		if (quote_level) {
-		    line_start += cite_idx;
-                    if (line_start < line_end
-                        && g_unichar_isspace(g_utf8_get_char(line_start)))
-                        line_start = g_utf8_next_char(line_start);
+                    GtkTextIter cite_iter;
+                    const gchar *cite_end;
+
+                    gtk_text_buffer_get_iter_at_mark(buffer, &cite_iter,
+                                                     gtk_text_buffer_get_insert(buffer));
+                    cite_end = line_start + cite_idx;
+                    if (cite_end < line_end
+                        && g_unichar_isspace(g_utf8_get_char(cite_end)))
+                        line_start = g_utf8_next_char(cite_end);
+                    gtk_text_buffer_insert_with_tags(buffer, &cite_iter,
+                                                     line_start,
+                                                     cite_end - line_start,
+                                                     tag, invisible, NULL);
+                    line_start = cite_end;
 		}
-		tag = quote_tag(buffer, quote_level, margin);
 	    }
 
             len = line_end - line_start;

Attachment: pgpiZrSI5yzwK.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]