+2006-12-14 [paul] 2.6.1cvs33
+
+ * src/messageview.c
+ * src/messageview.h
+ * src/mimeview.c
+ * src/mimeview.h
+ * src/summaryview.c
+ * src/textview.c
+ * src/textview.h
+ Fix printing of selection
+ Fix printing of message parts
+ Fix printing of images
+ * src/gtk/gtksourceprintjob.c
+ Fix page count when there are images
+
2006-12-14 [wwp] 2.6.1cvs32
* src/mainwindow.c
( cvs diff -u -r 1.3.2.9 -r 1.3.2.10 src/ldapquery.c; cvs diff -u -r 1.1.4.4 -r 1.1.4.5 src/ldaputil.c; cvs diff -u -r -1.16.2.5 -r -1.16.2.6 src/syldap.c; cvs diff -u -r -1.9.2.3 -r -1.9.2.4 src/syldap.h; ) > 2.6.1cvs30.patchset
( cvs diff -u -r 1.274.2.157 -r 1.274.2.158 src/mainwindow.c; cvs diff -u -r 1.395.2.270 -r 1.395.2.271 src/summaryview.c; cvs diff -u -r 1.68.2.29 -r 1.68.2.30 src/summaryview.h; cvs diff -u -r 1.1.2.55 -r 1.1.2.56 src/gtk/quicksearch.c; ) > 2.6.1cvs31.patchset
( cvs diff -u -r 1.274.2.157 -r 1.274.2.158 src/mainwindow.c; cvs diff -u -r 1.395.2.270 -r 1.395.2.271 src/summaryview.c; cvs diff -u -r 1.68.2.29 -r 1.68.2.30 src/summaryview.h; cvs diff -u -r 1.1.2.55 -r 1.1.2.56 src/gtk/quicksearch.c; ) > 2.6.1cvs32.patchset
+( cvs diff -u -r 1.94.2.111 -r 1.94.2.112 src/messageview.c; cvs diff -u -r 1.19.2.11 -r 1.19.2.12 src/messageview.h; cvs diff -u -r 1.83.2.93 -r 1.83.2.94 src/mimeview.c; cvs diff -u -r 1.20.2.16 -r 1.20.2.17 src/mimeview.h; cvs diff -u -r 1.395.2.271 -r 1.395.2.272 src/summaryview.c; cvs diff -u -r 1.96.2.161 -r 1.96.2.162 src/textview.c; cvs diff -u -r 1.12.2.15 -r 1.12.2.16 src/textview.h; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/gtk/gtksourceprintjob.c; ) > 2.6.1cvs33.patchset
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=32
+EXTRA_VERSION=33
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
}
while (pango_layout_iter_next_line (iter));
-
job->priv->available_height -= max - page_skip;
-
pango_layout_iter_free (iter);
g_object_unref (layout);
} else {
job->priv->text_width,
job->priv->text_height,
&scaled_width, &scaled_height);
-
if (scaled_height > max_height) {
job->priv->page_count++;
- job->priv->available_height = job->priv->text_height;
+ job->priv->available_height = job->priv->text_height - scaled_height;
} else {
job->priv->available_height -= scaled_height;
}
}
#ifdef USE_GNOMEPRINT
-static void print_mimeview(MimeView *mimeview)
+static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gint partnum)
{
if (!mimeview
|| !mimeview->textview
"contain text."));
else {
gtk_widget_realize(mimeview->textview->text);
+ if (partnum > 0) {
+ mimeview_select_part_num(mimeview, partnum);
+ }
+ if (sel_start != -1 && sel_end != -1) {
+ GtkTextIter start, end;
+ GtkTextView *text = GTK_TEXT_VIEW(mimeview->textview->text);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+
+ gtk_text_buffer_get_iter_at_offset(buffer, &start, sel_start);
+ gtk_text_buffer_get_iter_at_offset(buffer, &end, sel_end);
+ gtk_text_buffer_select_range(buffer, &start, &end);
+ }
+
gedit_print(GTK_TEXT_VIEW(mimeview->textview->text));
}
}
-void messageview_print(MsgInfo *msginfo, gboolean all_headers)
+void messageview_print(MsgInfo *msginfo, gboolean all_headers,
+ gint sel_start, gint sel_end, gint partnum)
{
PangoFontDescription *font_desc = NULL;
MessageView *tmpview = messageview_create_with_new_window_visible(
tmpview->all_headers = all_headers;
if (msginfo && messageview_show(tmpview, msginfo,
tmpview->all_headers) >= 0) {
- print_mimeview(tmpview->mimeview);
+ print_mimeview(tmpview->mimeview,
+ sel_start, sel_end, partnum);
}
messageview_destroy(tmpview);
}
#ifndef USE_GNOMEPRINT
gchar *cmdline = NULL;
gchar *p;
+#else
+ gint sel_start = -1, sel_end = -1, partnum = 0;
#endif
if (!messageview->msginfo) return;
procmsg_print_message(messageview->msginfo, cmdline);
g_free(cmdline);
#else
- messageview_print(messageview->msginfo, messageview->all_headers);
+ partnum = mimeview_get_selected_part_num(messageview->mimeview);
+ textview_get_selection_offsets(messageview->mimeview->textview,
+ &sel_start, &sel_end);
+ messageview_print(messageview->msginfo, messageview->all_headers,
+ sel_start, sel_end, partnum);
#endif
}
gboolean is_spam);
#ifdef USE_GNOMEPRINT
void messageview_print (MsgInfo *msginfo,
- gboolean all_headers);
+ gboolean all_headers,
+ gint sel_start,
+ gint sel_end,
+ gint partnum);
#endif
#endif /* __MESSAGEVIEW_H__ */
(GTK_CTREE(mimeview->ctree), mimeview->opened);
}
+gint mimeview_get_selected_part_num(MimeView *mimeview)
+{
+ gint i = 0;
+ GList *rows = GTK_CLIST(mimeview->ctree)->row_list;
+ while (rows) {
+ if (mimeview->opened == GTK_CTREE_NODE(rows))
+ return i;
+ i++;
+ rows = rows->next;
+ }
+ return -1;
+}
+
+void mimeview_select_part_num(MimeView *mimeview, gint i)
+{
+ if (i < 0)
+ return;
+ gtk_clist_unselect_all(GTK_CLIST(mimeview->ctree));
+ gtk_clist_select_row(GTK_CLIST(mimeview->ctree), i, -1);
+ gtkut_clist_set_focus_row(GTK_CLIST(mimeview->ctree), i);
+}
+
static void mimeview_set_multipart_tree(MimeView *mimeview,
MimeInfo *mimeinfo,
GtkCTreeNode *parent)
gboolean up);
void mimeview_scroll_one_line (MimeView *mimeview,
gboolean up);
+gint mimeview_get_selected_part_num (MimeView *mimeview);
+void mimeview_select_part_num (MimeView *mimeview,
+ gint i);
#ifdef __cplusplus
MsgInfo *msginfo = gtk_ctree_node_get_row_data(
GTK_CTREE(summaryview->ctree),
node);
- messageview_print(msginfo, summaryview->messageview->all_headers);
+ gint sel_start = -1, sel_end = -1, partnum = 0;
+
+ if (node == summaryview->displayed) {
+ partnum = mimeview_get_selected_part_num(summaryview->messageview->mimeview);
+ textview_get_selection_offsets(summaryview->messageview->mimeview->textview,
+ &sel_start, &sel_end);
+ }
+ messageview_print(msginfo, summaryview->messageview->all_headers,
+ sel_start, sel_end, partnum);
}
#endif
}
} else {
gint w, h;
gdk_pixbuf_get_file_info(filename, &w, &h);
- if (w > textview->scrolledwin->allocation.width - 100)
+ if (textview->scrolledwin->allocation.width - 100 > 0 &&
+ w > textview->scrolledwin->allocation.width - 100)
pixbuf = gdk_pixbuf_new_from_file_at_scale(filename,
textview->scrolledwin->allocation.width - 100,
-1, TRUE, &error);
NULL);
}
+void textview_get_selection_offsets(TextView *textview, gint *sel_start, gint *sel_end)
+{
+ GtkTextView *text = GTK_TEXT_VIEW(textview->text);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
+ GtkTextIter start, end;
+ if (gtk_text_buffer_get_selection_bounds(buffer, &start, &end)) {
+ if (sel_start)
+ *sel_start = gtk_text_iter_get_offset(&start);
+ if (sel_end)
+ *sel_end = gtk_text_iter_get_offset(&end);
+ } else {
+ if (sel_start)
+ *sel_start = -1;
+ if (sel_end)
+ *sel_end = -1;
+ }
+}
void textview_cursor_wait(TextView *textview);
void textview_cursor_normal(TextView *textview);
void textview_show_icon(TextView *textview, const gchar *stock_id);
+void textview_get_selection_offsets (TextView *textview,
+ gint *sel_start,
+ gint *sel_end);
#define TEXTVIEW_INSERT(str) \
gtk_text_buffer_insert_with_tags_by_name \