2008-10-09 [colin] 3.6.0cvs19
[claws.git] / src / printing.c
index c4c8f08977d441554eed840dbae30974750b2846..5f49838dfcec4afd0accda196bd5c96cf636ed78 100644 (file)
@@ -24,7 +24,7 @@
 #include "printing.h"
 #include "image_viewer.h"
 
-#if GTK_CHECK_VERSION(2,10,0) && !defined(USE_GNOMEPRINT)
+#if GTK_CHECK_VERSION(2,10,0)
 
 #include "gtkutils.h"
 #include "toolbar.h"
@@ -229,7 +229,7 @@ void printing_print_full(GtkWindow *parent, PrintRenderer *renderer, gpointer re
   if(res == GTK_PRINT_OPERATION_RESULT_ERROR) {
     GError *error = NULL;
     gtk_print_operation_get_error(op, &error);
-    debug_print("Error printing message: %s",
+    debug_print("Error printing message: %s\n",
            error ? error->message : "no details");
   }
   else if(res == GTK_PRINT_OPERATION_RESULT_APPLY) {
@@ -324,8 +324,9 @@ static gboolean cb_preview(GtkPrintOperation        *operation,
   GtkToolItem *separator;
   static GdkGeometry geometry;
   GtkWidget *dialog = NULL;
-  GtkTooltips *toolbar_tips = gtk_tooltips_new();
   GtkWidget *statusbar = gtk_hbox_new(2, FALSE);
+  CLAWS_TIP_DECL();
+
   debug_print("Creating internal print preview\n");
 
   print_data = (PrintData*) data;
@@ -373,14 +374,25 @@ static gboolean cb_preview(GtkPrintOperation        *operation,
        
   gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
 
+#if !(GTK_CHECK_VERSION(2,12,0))
+#define CLAWS_SET_TOOL_ITEM_TIP(widget,tip) { \
+       gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(widget), GTK_TOOLTIPS(tips),                    \
+                       tip, NULL);                                                             \
+}
+#else
+#define CLAWS_SET_TOOL_ITEM_TIP(widget,tip) { \
+       gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), tip);                             \
+}
+#endif 
+
 #define TOOLBAR_ITEM(item,text,tooltip,cb,cbdata) {                                                            \
        item = GTK_WIDGET(gtk_tool_button_new_from_stock(text));                                        \
        gtk_tool_item_set_homogeneous(GTK_TOOL_ITEM(item), FALSE);                                      \
        gtk_tool_item_set_is_important(GTK_TOOL_ITEM(item), TRUE);                                      \
        gtk_toolbar_insert(GTK_TOOLBAR(toolbar), GTK_TOOL_ITEM(item), -1);                              \
        g_signal_connect (G_OBJECT(item), "clicked", G_CALLBACK(cb), cbdata);                           \
-       gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(item), GTK_TOOLTIPS(toolbar_tips),                      \
-                       tooltip, NULL);                                                                 \
+       CLAWS_SET_TOOL_ITEM_TIP(GTK_TOOL_ITEM(item),            \
+                       tooltip);                                                                       \
 }
 
   TOOLBAR_ITEM(preview_data->first, GTK_STOCK_GOTO_FIRST, _("First page"), cb_preview_go_first, preview_data);
@@ -763,7 +775,9 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
   int start, ii;
   PangoLayoutIter *iter;
   double start_pos;
+  gint header_end_pos;
   gint num_header_lines;
+  gint dummy;
   gboolean header_done;
   const gchar *text;
   double line_height =0.;
@@ -801,21 +815,24 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
   start_pos = 0.;
   iter = pango_layout_get_iter(print_data->layout);
 
-  /* count number of header lines */
-  num_header_lines = 0;
+  /* find the last character of the header */
+  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')) {
-       num_header_lines++;
-       if(text[1] == '\n') {
-         header_done = TRUE;
-       }
-      }
+      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++;
 
   do {
     PangoRectangle logical_rect;