2009-02-24 [colin] 3.7.0cvs74
authorColin Leroy <colin@colino.net>
Tue, 24 Feb 2009 17:07:06 +0000 (17:07 +0000)
committerColin Leroy <colin@colino.net>
Tue, 24 Feb 2009 17:07:06 +0000 (17:07 +0000)
* src/printing.c
Don't print separation line if there
are no headers

ChangeLog
PATCHSETS
configure.ac
src/printing.c

index 234ec84bca4c812fead657431ef6315af6b07fc8..277ca579b6ee0b1df07376ed37046ea4625f73b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-24 [colin]     3.7.0cvs74
+
+       * src/printing.c
+               Don't print separation line if there
+               are no headers
+
 2009-02-23 [cleroy]    3.7.0cvs73
 
        * src/account.c
index 3fc9b1d1c5a6206e7ccc974c48a4f0ef7ef3e9c3..4ada11dea2cd5a206b0db34d7637f2312b4cda1e 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.179.2.240 -r 1.179.2.241 src/imap.c;  ) > 3.7.0cvs71.patchset
 ( cvs diff -u -r 1.179.2.241 -r 1.179.2.242 src/imap.c;  ) > 3.7.0cvs72.patchset
 ( cvs diff -u -r 1.61.2.93 -r 1.61.2.94 src/account.c;  cvs diff -u -r 1.12.2.56 -r 1.12.2.57 src/action.c;  cvs diff -u -r 1.27.2.44 -r 1.27.2.45 src/addr_compl.c;  cvs diff -u -r 1.22.2.22 -r 1.22.2.23 src/addrbook.c;  cvs diff -u -r 1.15.2.15 -r 1.15.2.16 src/addrcache.c;  cvs diff -u -r 1.1.4.9 -r 1.1.4.10 src/addrcindex.c;  cvs diff -u -r 1.5.2.9 -r 1.5.2.10 src/addrclip.c;  cvs diff -u -r 1.1.2.15 -r 1.1.2.16 src/addrduplicates.c;  cvs diff -u -r 1.9.2.28 -r 1.9.2.29 src/addressadd.c;  cvs diff -u -r 1.60.2.132 -r 1.60.2.133 src/addressbook.c;  cvs diff -u -r 1.1.2.16 -r 1.1.2.17 src/addressbook_foldersel.c;  cvs diff -u -r 1.6.10.21 -r 1.6.10.22 src/addrharvest.c;  cvs diff -u -r 1.28.2.41 -r 1.28.2.42 src/addrindex.c;  cvs diff -u -r 1.13.2.19 -r 1.13.2.20 src/addritem.c;  cvs diff -u -r 1.1.4.9 -r 1.1.4.10 src/addrquery.c;  cvs diff -u -r 1.3.2.9 -r 1.3.2.10 src/addrselect.c;  cvs diff -u -r 1.65.2.67 -r 1.65.2.68 src/codeconv.c;  cvs diff -u -r 1.382.2.501 -r 1.382.2.502 src/compose.c;  cvs diff -u -r 1.5.2.10 -r 1.5.2.11 src/customheader.c;  cvs diff -u -r 1.14.2.55 -r 1.14.2.56 src/editaddress.c;  cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/editaddress_other_attributes_ldap.c;  cvs diff -u -r 1.11.2.21 -r 1.11.2.22 src/editgroup.c;  cvs diff -u -r 1.8.2.34 -r 1.8.2.35 src/editldap.c;  cvs diff -u -r 1.3.2.6 -r 1.3.2.7 src/enriched.c;  cvs diff -u -r 1.5.2.27 -r 1.5.2.28 src/exporthtml.c;  cvs diff -u -r 1.1.4.19 -r 1.1.4.20 src/exportldif.c;  cvs diff -u -r 1.60.2.51 -r 1.60.2.52 src/filtering.c;  cvs diff -u -r 1.213.2.189 -r 1.213.2.190 src/folder.c;  cvs diff -u -r 1.26.2.42 -r 1.26.2.43 src/foldersel.c;  cvs diff -u -r 1.3.2.18 -r 1.3.2.19 src/folderutils.c;  cvs diff -u -r 1.207.2.212 -r 1.207.2.213 src/folderview.c;  cvs diff -u -r 1.1.2.13 -r 1.1.2.14 src/gedit-print.c;  cvs diff -u -r 1.12.2.27 -r 1.12.2.28 src/html.c;  cvs diff -u -r 1.179.2.242 -r 1.179.2.243 src/imap.c;  cvs diff -u -r 1.1.2.63 -r 1.1.2.64 src/imap_gtk.c;  cvs diff -u -r 1.149.2.99 -r 1.149.2.100 src/inc.c;  cvs diff -u -r 1.18.2.29 -r 1.18.2.30 src/jpilot.c;  cvs diff -u -r 1.2.2.18 -r 1.2.2.19 src/ldapctrl.c;  cvs diff -u -r 1.3.2.30 -r 1.3.2.31 src/ldapquery.c;  cvs diff -u -r 1.4.2.17 -r 1.4.2.18 src/ldapserver.c;  cvs diff -u -r 1.1.2.21 -r 1.1.2.22 src/ldapupdate.c;  cvs diff -u -r 1.12.2.19 -r 1.12.2.20 src/ldif.c;  cvs diff -u -r 1.3.4.6 -r 1.3.4.7 src/localfolder.c;  cvs diff -u -r 1.115.2.220 -r 1.115.2.221 src/main.c;  cvs diff -u -r 1.274.2.299 -r 1.274.2.300 src/mainwindow.c;  cvs diff -u -r 1.75.2.64 -r 1.75.2.65 src/matcher.c;  cvs diff -u -r 1.28.2.47 -r 1.28.2.48 src/mbox.c;  cvs diff -u -r 1.94.2.199 -r 1.94.2.200 src/messageview.c;  cvs diff -u -r 1.79.2.68 -r 1.79.2.69 src/mh.c;  cvs diff -u -r 1.2.2.36 -r 1.2.2.37 src/mh_gtk.c;  cvs diff -u -r 1.83.2.153 -r 1.83.2.154 src/mimeview.c;  cvs diff -u -r 1.16.2.64 -r 1.16.2.65 src/msgcache.c;  cvs diff -u -r 1.6.10.16 -r 1.6.10.17 src/mutt.c;  cvs diff -u -r 1.101.2.59 -r 1.101.2.60 src/news.c;  cvs diff -u -r 1.2.2.30 -r 1.2.2.31 src/news_gtk.c;  cvs diff -u -r 1.5.2.22 -r 1.5.2.23 src/noticeview.c;  cvs diff -u -r 1.6.2.15 -r 1.6.2.16 src/pine.c;  cvs diff -u -r 1.56.2.65 -r 1.56.2.66 src/pop.c;  cvs diff -u -r 1.105.2.150 -r 1.105.2.151 src/prefs_account.c;  cvs diff -u -r 1.60.2.68 -r 1.60.2.69 src/prefs_actions.c;  cvs diff -u -r 1.204.2.187 -r 1.204.2.188 src/prefs_common.c;  cvs diff -u -r 1.59.2.77 -r 1.59.2.78 src/prefs_filtering.c;  cvs diff -u -r 1.1.4.59 -r 1.1.4.60 src/prefs_filtering_action.c;  cvs diff -u -r 1.1.2.15 -r 1.1.2.16 src/prefs_folder_column.c;  cvs diff -u -r 1.52.2.73 -r 1.52.2.74 src/prefs_folder_item.c;  cvs diff -u -r 1.10.2.40 -r 1.10.2.41 src/prefs_gtk.c;  cvs diff -u -r 1.43.2.79 -r 1.43.2.80 src/prefs_matcher.c;  cvs diff -u -r 1.1.2.31 -r 1.1.2.32 src/prefs_quote.c;  cvs diff -u -r 1.1.2.24 -r 1.1.2.25 src/prefs_send.c;  cvs diff -u -r 1.1.2.59 -r 1.1.2.60 src/prefs_summaries.c;  cvs diff -u -r 1.10.2.24 -r 1.10.2.25 src/prefs_summary_column.c;  cvs diff -u -r 1.12.2.68 -r 1.12.2.69 src/prefs_template.c;  cvs diff -u -r 1.3.2.63 -r 1.3.2.64 src/prefs_themes.c;  cvs diff -u -r 1.30.2.55 -r 1.30.2.56 src/prefs_toolbar.c;  cvs diff -u -r 1.1.2.22 -r 1.1.2.23 src/printing.c;  cvs diff -u -r 1.10.2.21 -r 1.10.2.22 src/privacy.c;  cvs diff -u -r 1.47.2.50 -r 1.47.2.51 src/procheader.c;  cvs diff -u -r 1.49.2.126 -r 1.49.2.127 src/procmime.c;  cvs diff -u -r 1.150.2.113 -r 1.150.2.114 src/procmsg.c;  cvs diff -u -r 1.8.2.38 -r 1.8.2.39 src/quote_fmt.c;  cvs diff -u -r 1.1.4.7 -r 1.1.4.8 src/remotefolder.c;  cvs diff -u -r 1.17.2.53 -r 1.17.2.54 src/send_message.c;  cvs diff -u -r 1.9.2.24 -r 1.9.2.25 src/sourcewindow.c;  cvs diff -u -r 1.5.2.24 -r 1.5.2.25 src/statusbar.c;  cvs diff -u -r 1.25.2.65 -r 1.25.2.66 src/stock_pixmap.c;  cvs diff -u -r 1.15.2.57 -r 1.15.2.58 src/summary_search.c;  cvs diff -u -r 1.395.2.408 -r 1.395.2.409 src/summaryview.c;  cvs diff -u -r 1.96.2.216 -r 1.96.2.217 src/textview.c;  cvs diff -u -r 1.43.2.106 -r 1.43.2.107 src/toolbar.c;  cvs diff -u -r 1.13.2.20 -r 1.13.2.21 src/undo.c;  cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/uri_opener.c;  cvs diff -u -r 1.14.2.17 -r 1.14.2.18 src/vcard.c;  cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/common/base64.c;  cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/common/claws.c;  cvs diff -u -r 1.10.2.8 -r 1.10.2.9 src/common/hooks.c;  cvs diff -u -r 1.13.2.36 -r 1.13.2.37 src/common/plugin.c;  cvs diff -u -r 1.5.2.14 -r 1.5.2.15 src/common/prefs.c;  cvs diff -u -r 1.23.2.22 -r 1.23.2.23 src/common/session.c;  cvs diff -u -r 1.11.2.27 -r 1.11.2.28 src/common/smtp.c;  cvs diff -u -r 1.13.2.44 -r 1.13.2.45 src/common/socket.c;  cvs diff -u -r 1.1.4.6 -r 1.1.4.7 src/common/string_match.c;  cvs diff -u -r 1.2.2.8 -r 1.2.2.9 src/common/stringtable.c;  cvs diff -u -r 1.36.2.165 -r 1.36.2.166 src/common/utils.c;  cvs diff -u -r 1.20.2.67 -r 1.20.2.68 src/common/utils.h;  cvs diff -u -r 1.1.4.25 -r 1.1.4.26 src/common/xml.c;  cvs diff -u -r 1.1.4.10 -r 1.1.4.11 src/common/xmlprops.c;  cvs diff -u -r 1.2.2.26 -r 1.2.2.27 src/gtk/colorlabel.c;  cvs diff -u -r 1.1.2.16 -r 1.1.2.17 src/gtk/combobox.c;  cvs diff -u -r 1.1.2.18 -r 1.1.2.19 src/gtk/foldersort.c;  cvs diff -u -r 1.9.2.66 -r 1.9.2.67 src/gtk/gtkaspell.c;  cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/gtk/gtkcmclist.c;  cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/gtk/gtkcmctree.c;  cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/gtk/gtkcmoptionmenu.c;  cvs diff -u -r 1.1.4.55 -r 1.1.4.56 src/gtk/gtksctree.c;  cvs diff -u -r 1.1.4.10 -r 1.1.4.11 src/gtk/gtkshruler.c;  cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/gtk/gtksourceprintjob.c;  cvs diff -u -r 1.5.2.87 -r 1.5.2.88 src/gtk/gtkutils.c;  cvs diff -u -r 1.5.2.16 -r 1.5.2.17 src/gtk/gtkvscrollbutton.c;  cvs diff -u -r 1.1.4.34 -r 1.1.4.35 src/gtk/logwindow.c;  cvs diff -u -r 1.5.2.40 -r 1.5.2.41 src/gtk/menu.c;  cvs diff -u -r 1.5.2.57 -r 1.5.2.58 src/gtk/pluginwindow.c;  cvs diff -u -r 1.12.2.52 -r 1.12.2.53 src/gtk/prefswindow.c;  cvs diff -u -r 1.1.2.86 -r 1.1.2.87 src/gtk/quicksearch.c;  cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/gtk/spell_entry.c;  cvs diff -u -r 1.1.2.26 -r 1.1.2.27 src/plugins/pgpcore/select-keys.c;  cvs diff -u -r 1.1.2.43 -r 1.1.2.44 src/plugins/pgpinline/pgpinline.c;  cvs diff -u -r 1.1.2.54 -r 1.1.2.55 src/plugins/pgpmime/pgpmime.c;  cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/plugins/smime/smime.c;  cvs diff -u -r 1.23.2.53 -r 1.23.2.54 src/plugins/spamassassin/spamassassin_gtk.c;  ) > 3.7.0cvs73.patchset
+( cvs diff -u -r 1.1.2.23 -r 1.1.2.24 src/printing.c;  ) > 3.7.0cvs74.patchset
index 0078db0361edf74ea8e6abcc996fd37948a3c2b4..5b3268232e931c0618342dcc7951f5e13be9fa20 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=7
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=73
+EXTRA_VERSION=74
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index 6270d064b279e1555d4fc77a0fc4ab4317eefaf9..e8104ff62e3b7c252c767f39bcac8f140f56be29 100644 (file)
@@ -114,7 +114,7 @@ static GtkPrintSettings *settings   = NULL;
 static GtkPageSetup     *page_setup = NULL;
 
 /* other static functions */
-static void     printing_layout_set_text_attributes(PrintData*, GtkPrintContext *);
+static void     printing_layout_set_text_attributes(PrintData*, GtkPrintContext *, gboolean *);
 static gboolean printing_is_pango_gdk_color_equal(PangoColor*, GdkColor*); 
 static gint     printing_text_iter_get_offset_bytes(PrintData *, const GtkTextIter*);
 
@@ -844,6 +844,7 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
   gint num_header_lines;
   gint dummy;
   gboolean header_done;
+  gboolean has_headers = FALSE;
   const gchar *text;
   double line_height =0.;
 
@@ -869,7 +870,7 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
   pango_layout_set_width(print_data->layout, width * PANGO_SCALE);
   pango_layout_set_text(print_data->layout, (char *)print_data->to_print, -1);
 
-  printing_layout_set_text_attributes(print_data, context);
+  printing_layout_set_text_attributes(print_data, context, &has_headers);
 
   num_lines = pango_layout_get_line_count(print_data->layout);
 
@@ -884,20 +885,25 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
   header_end_pos = 0;
   header_done = FALSE;
   text = pango_layout_get_text(print_data->layout);
-  if(text && *text && *text != '\n') {
-    do {
-      if(text[0] == '\n' && (text[1] != '\0') && (text[1] == '\n'))
-       header_done = TRUE;
-      else
-       header_end_pos++;
-      text++;
-    } while(*text && !header_done);
+  
+  if (has_headers) {
+    if(text && *text && *text != '\n') {
+      do {
+       if(text[0] == '\n' && (text[1] != '\0') && (text[1] == '\n'))
+         header_done = TRUE;
+       else
+         header_end_pos++;
+       text++;
+      } while(*text && !header_done);
+    }
+    /* find line number for header end */
+    pango_layout_index_to_line_x(print_data->layout, header_end_pos, 1,
+                                &num_header_lines, &dummy);
+    /* line count is zero-based */
+    num_header_lines++;
+  } else {
+    print_data->ypos_line = -1.0;
   }
-  /* find line number for header end */
-  pango_layout_index_to_line_x(print_data->layout, header_end_pos, 1,
-                              &num_header_lines, &dummy);
-  /* line count is zero-based */
-  num_header_lines++;
 
   do {
     PangoRectangle logical_rect;
@@ -922,7 +928,7 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
       page_height = 0;
     }
 
-    if(ii == num_header_lines) {
+    if(has_headers && ii == num_header_lines) {
       int y0, y1;
       pango_layout_iter_get_line_yrange(iter,&y0,&y1);
       print_data->ypos_line = (double)y0 + 1./3.*((double)(y1 - y0))/2.;
@@ -1069,7 +1075,7 @@ static void printing_textview_cb_draw_page(GtkPrintOperation *op, GtkPrintContex
        start_pos = ((double)logical_rect.y) / PANGO_SCALE;
 
       /* Draw header separator line */
-      if(ii == 0) {
+      if(ii == 0 && print_data->ypos_line >= 0) {
        cairo_surface_t *surface;
        surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
                                             gtk_print_context_get_width(context)/print_data->zoom,
@@ -1110,7 +1116,7 @@ static void printing_textview_cb_draw_page(GtkPrintOperation *op, GtkPrintContex
   debug_print("Sent page %d to printer\n", page_nr+1);
 }
 
-static void printing_layout_set_text_attributes(PrintData *print_data, GtkPrintContext *context)
+static void printing_layout_set_text_attributes(PrintData *print_data, GtkPrintContext *context, gboolean *has_headers)
 {
   GtkTextIter iter;
   PangoAttrList *attr_list;
@@ -1119,6 +1125,9 @@ static void printing_layout_set_text_attributes(PrintData *print_data, GtkPrintC
   GtkTextView *text_view = GTK_TEXT_VIEW(print_data->renderer_data);
   GtkTextBuffer *buffer = gtk_text_view_get_buffer(text_view);
 
+
+  *has_headers = FALSE;
+
   attr_list = pango_attr_list_new();
   if (print_data->sel_start < 0 || print_data->sel_end <= print_data->sel_start) {
     gtk_text_buffer_get_start_iter(buffer, &iter);
@@ -1332,6 +1341,10 @@ static void printing_layout_set_text_attributes(PrintData *print_data, GtkPrintC
                attr = pango_attr_weight_new(weight);
                attr->start_index = printing_text_iter_get_offset_bytes(print_data, &iter);
                open_attrs = g_slist_prepend(open_attrs, attr); 
+               /* Hack to see if the first char is bold -- indicates header */
+               if (attr->start_index == 0 && weight == PANGO_WEIGHT_BOLD) {
+                       *has_headers = TRUE;
+               }
        }
       }
       g_slist_free(tags);