+2006-09-13 [colin] 2.4.0cvs185
+
+ * src/gedit-print.c
+ * src/messageview.c
+ * src/messageview.h
+ * src/summaryview.c
+ * src/textview.c
+ Fix misc. printing issues:
+ - Bad font for linkified headers
+ - Different font if the mail was displayed or not
+ - Factorize the thing
+
2006-09-13 [colin] 2.4.0cvs184
* src/common/ssl_certificate.c
( cvs diff -u -r 1.654.2.1920 -r 1.654.2.1921 configure.ac; cvs diff -u -r 1.20.2.37 -r 1.20.2.38 src/common/utils.h; cvs diff -u -r 1.36.2.77 -r 1.36.2.78 src/common/utils.c; ) > 2.4.0cvs182.patchset
( cvs diff -u -r 1.61.2.51 -r 1.61.2.52 src/account.c; cvs diff -u -r 1.5.2.36 -r 1.5.2.37 src/gtk/pluginwindow.c; ) > 2.4.0cvs183.patchset
( cvs diff -u -r 1.4.2.10 -r 1.4.2.11 src/common/ssl_certificate.c; ) > 2.4.0cvs184.patchset
+( cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/gedit-print.c; cvs diff -u -r 1.94.2.105 -r 1.94.2.106 src/messageview.c; cvs diff -u -r 1.19.2.9 -r 1.19.2.10 src/messageview.h; cvs diff -u -r 1.395.2.248 -r 1.395.2.249 src/summaryview.c; cvs diff -u -r 1.96.2.147 -r 1.96.2.148 src/textview.c; ) > 2.4.0cvs185.patchset
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=184
+EXTRA_VERSION=185
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
GtkWidget *progressbar;
GtkWindow *parent;
+ gboolean done;
};
static GeditPrintJobInfo* gedit_print_job_info_new (GtkTextView *view);
default:
gtk_widget_destroy (dialog);
- gedit_print_job_info_destroy (pji, FALSE);
+ pji->done = TRUE;
}
}
gtk_widget_destroy (pji->dialog);
if (pji->preview == PREVIEW)
- gedit_print_job_info_destroy (pji, FALSE);
+ pji->done = TRUE;
else
{
g_signal_handlers_disconnect_by_func (pji->pjob, (GCallback) page_cb, pji);
gtk_widget_destroy (pji->dialog);
- gedit_print_job_info_destroy (pji, TRUE);
+ pji->done = TRUE;
}
void
pji);
gtk_widget_show (dialog);
+ while (pji->done != TRUE)
+ gtk_main_iteration();
+ gedit_print_job_info_destroy (pji, pji->preview ? FALSE:TRUE);
+
}
static void
msgview_list = g_list_append(msgview_list, msgview);
}
-MessageView *messageview_create_with_new_window(MainWindow *mainwin)
+static MessageView *messageview_create_with_new_window_visible(MainWindow *mainwin, gboolean show)
{
MessageView *msgview;
GtkWidget *window;
messageview_add_toolbar(msgview, window);
- gtk_widget_grab_focus(msgview->mimeview->textview->text);
- gtk_widget_show(window);
+ if (show) {
+ gtk_widget_grab_focus(msgview->mimeview->textview->text);
+ gtk_widget_show(window);
+ } else {
+ gtk_widget_realize(window);
+ }
msgview->new_window = TRUE;
msgview->window = window;
return msgview;
}
+MessageView *messageview_create_with_new_window(MainWindow *mainwin)
+{
+ return messageview_create_with_new_window_visible(mainwin, TRUE);
+}
void messageview_init(MessageView *messageview)
{
headerview_init(messageview->headerview);
messageview_save_as(messageview);
}
+#ifdef USE_GNOMEPRINT
+static void print_mimeview(MimeView *mimeview)
+{
+ if (!mimeview
+ || !mimeview->textview
+ || !mimeview->textview->text)
+ alertpanel_warning(_("Cannot print: the message doesn't "
+ "contain text."));
+ else {
+ gtk_widget_realize(mimeview->textview->text);
+ gedit_print(GTK_TEXT_VIEW(mimeview->textview->text));
+ }
+}
+
+void messageview_print(MsgInfo *msginfo, gboolean all_headers)
+{
+ PangoFontDescription *font_desc = NULL;
+ MessageView *tmpview = messageview_create_with_new_window_visible(
+ mainwindow_get_mainwindow(), FALSE);
+
+ if (prefs_common.use_different_print_font) {
+ font_desc = pango_font_description_from_string
+ (prefs_common.printfont);
+ } else {
+ font_desc = pango_font_description_from_string
+ (prefs_common.textfont);
+ }
+ if (font_desc) {
+ gtk_widget_modify_font(tmpview->mimeview->textview->text,
+ font_desc);
+ pango_font_description_free(font_desc);
+ }
+
+ tmpview->all_headers = all_headers;
+ if (msginfo && messageview_show(tmpview, msginfo,
+ tmpview->all_headers) >= 0) {
+ print_mimeview(tmpview->mimeview);
+ }
+ messageview_destroy(tmpview);
+}
+#endif
+
static void print_cb(gpointer data, guint action, GtkWidget *widget)
{
MessageView *messageview = (MessageView *)data;
procmsg_print_message(messageview->msginfo, cmdline);
g_free(cmdline);
#else
- if (!messageview->mimeview
- || !messageview->mimeview->textview
- || !messageview->mimeview->textview->text)
- alertpanel_warning(_("Cannot print: the message doesn't "
- "contain text."));
-
- gedit_print(
- GTK_TEXT_VIEW(messageview->mimeview
- ->textview->text));
+ messageview_print(messageview->msginfo, messageview->all_headers);
#endif
}
#ifndef __MESSAGEVIEW_H__
#define __MESSAGEVIEW_H__
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <glib.h>
#include <gtk/gtkwidget.h>
void messageview_set_menu_sensitive (MessageView *msgview);
void messageview_learn (MessageView *msgview,
gboolean is_spam);
-
+#ifdef USE_GNOMEPRINT
+void messageview_print (MsgInfo *msginfo,
+ gboolean all_headers);
+#endif
#endif /* __MESSAGEVIEW_H__ */
g_free(tmp);
}
-#ifdef USE_GNOMEPRINT
-static void print_mimeview(MimeView *mimeview)
-{
- if (!mimeview
- || !mimeview->textview
- || !mimeview->textview->text)
- alertpanel_warning(_("Cannot print: the message doesn't "
- "contain text."));
- else {
- gtk_widget_realize(mimeview->textview->text);
- gedit_print(GTK_TEXT_VIEW(mimeview->textview->text));
- }
-}
-#endif
-
void summary_print(SummaryView *summaryview)
{
GtkCList *clist = GTK_CLIST(summaryview->ctree);
cur != NULL && cur->data != NULL;
cur = cur->next) {
GtkCTreeNode *node = GTK_CTREE_NODE(cur->data);
- if (node != summaryview->displayed) {
- MessageView *tmpview = messageview_create(
- summaryview->mainwin);
- MsgInfo *msginfo = gtk_ctree_node_get_row_data(
- GTK_CTREE(summaryview->ctree),
- node);
-
- messageview_init(tmpview);
- tmpview->all_headers = summaryview->messageview->all_headers;
- if (msginfo && messageview_show(tmpview, msginfo,
- tmpview->all_headers) >= 0) {
- print_mimeview(tmpview->mimeview);
- }
- messageview_destroy(tmpview);
- } else {
- print_mimeview(summaryview->messageview->mimeview);
- }
+ MsgInfo *msginfo = gtk_ctree_node_get_row_data(
+ GTK_CTREE(summaryview->ctree),
+ node);
+ messageview_print(msginfo, summaryview->messageview->all_headers);
}
#endif
}
gtk_text_buffer_create_tag(buffer, "header_title",
"font-desc", bold_font_desc,
NULL);
+ tag = gtk_text_buffer_create_tag(buffer, "hlink",
+ "pixels-above-lines", 0,
+ "pixels-above-lines-set", TRUE,
+ "pixels-below-lines", 0,
+ "pixels-below-lines-set", TRUE,
+ "font-desc", font_desc,
+ "left-margin", 3,
+ "left-margin-set", TRUE,
+ "foreground-gdk", &uri_color,
+ NULL);
+ g_signal_connect(G_OBJECT(tag), "event",
+ G_CALLBACK(textview_uri_button_pressed), textview);
if (prefs_common.enable_bgcolor) {
gtk_text_buffer_create_tag(buffer, "quote0",
"foreground-gdk", "e_colors[0],
procheader_headername_equal(header->name, "Reply-To") ||
procheader_headername_equal(header->name, "Sender");
textview_make_clickable_parts(textview, "header",
- "link", header->body,
+ "hlink", header->body,
hdr);
}
gtk_text_buffer_get_end_iter (buffer, &iter);
g_object_get(G_OBJECT(tag), "name", &name, NULL);
- if ((!strcmp(name, "link"))
+ if ((!strcmp(name, "link") || !strcmp(name, "hlink"))
&& textview_get_uri_range(textview, &iter, tag,
&start_iter, &end_iter)) {