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 \