CVS: sylpheedclaws/sylpheed-claws/src messageview.c,1.94.2.111,1.94.2.112 messageview.h,1.19.2.11,1.19.2.12 mimeview.c,1.83.2.93,1.83.2.94 mimeview.h,1.20.2.16,1.20.2.17 summaryview.c,1.395.2.271,1.395.2.272 textview.c,1.96.2.161,1.96.2.162 textview.h,1.12.2.15,1.12.2.16
[email protected] Thu, 14 Dec 2006 09:49:27 +0000
| Newsgroups | gmane.mail.sylpheed.claws.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /pack/anoncvs/sylpheedclaws/sylpheed-claws/src
In directory sunsite.dk:/tmp/cvs-serv7737/src
Modified Files:
Tag: gtk2
messageview.c messageview.h mimeview.c mimeview.h
summaryview.c textview.c textview.h
Log Message:
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
Index: messageview.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/messageview.c,v
retrieving revision 1.94.2.111
retrieving revision 1.94.2.112
diff -u -d -r1.94.2.111 -r1.94.2.112
--- messageview.c 2006/12/06 08:18:32 1.94.2.111
+++ messageview.c 2006/12/14 09:49:16 1.94.2.112
@@ -1448,7 +1448,7 @@
}
#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
@@ -1457,11 +1457,25 @@
"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(
@@ -1483,7 +1497,8 @@
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);
}
@@ -1495,6 +1510,8 @@
#ifndef USE_GNOMEPRINT
gchar *cmdline = NULL;
gchar *p;
+#else
+ gint sel_start = -1, sel_end = -1, partnum = 0;
#endif
if (!messageview->msginfo) return;
@@ -1514,7 +1531,11 @@
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
}
Index: messageview.h
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/messageview.h,v
retrieving revision 1.19.2.11
retrieving revision 1.19.2.12
diff -u -d -r1.19.2.11 -r1.19.2.12
--- messageview.h 2006/11/07 10:39:07 1.19.2.11
+++ messageview.h 2006/12/14 09:49:16 1.19.2.12
@@ -119,6 +119,9 @@
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__ */
Index: mimeview.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/mimeview.c,v
retrieving revision 1.83.2.93
retrieving revision 1.83.2.94
diff -u -d -r1.83.2.93 -r1.83.2.94
--- mimeview.c 2006/11/27 08:06:19 1.83.2.93
+++ mimeview.c 2006/12/14 09:49:17 1.83.2.94
@@ -427,6 +427,28 @@
(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)
Index: mimeview.h
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/mimeview.h,v
retrieving revision 1.20.2.16
retrieving revision 1.20.2.17
diff -u -d -r1.20.2.16 -r1.20.2.17
--- mimeview.h 2006/11/07 10:39:09 1.20.2.16
+++ mimeview.h 2006/12/14 09:49:17 1.20.2.17
@@ -162,6 +162,9 @@
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
Index: summaryview.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/summaryview.c,v
retrieving revision 1.395.2.271
retrieving revision 1.395.2.272
diff -u -d -r1.395.2.271 -r1.395.2.272
--- summaryview.c 2006/12/14 08:37:53 1.395.2.271
+++ summaryview.c 2006/12/14 09:49:18 1.395.2.272
@@ -4151,7 +4151,15 @@
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
}
Index: textview.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/textview.c,v
retrieving revision 1.96.2.161
retrieving revision 1.96.2.162
diff -u -d -r1.96.2.161 -r1.96.2.162
--- textview.c 2006/12/06 08:18:34 1.96.2.161
+++ textview.c 2006/12/14 09:49:20 1.96.2.162
@@ -673,7 +673,8 @@
} 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);
@@ -2740,3 +2741,20 @@
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;
+ }
+}
Index: textview.h
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/textview.h,v
retrieving revision 1.12.2.15
retrieving revision 1.12.2.16
diff -u -d -r1.12.2.15 -r1.12.2.16
--- textview.h 2006/11/07 10:39:35 1.12.2.15
+++ textview.h 2006/12/14 09:49:21 1.12.2.16
@@ -120,6 +120,9 @@
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 \