[evolution-patches] Fix for bug 324742 [gtkhtml] [UI]
- From: Rohini <srohini novell com>
- To: evolution-patches gnome org
- Subject: [evolution-patches] Fix for bug 324742 [gtkhtml] [UI]
- Date: Fri, 17 Feb 2006 00:13:25 +0530
Hi
Attached fix for Bug 324742 – regression: inline images with DnD
Please Review
Thanks,
Rohini
Index: e-msg-composer.c
===================================================================
RCS file: /cvs/gnome/evolution/composer/e-msg-composer.c,v
retrieving revision 1.529
diff -u -p -r1.529 e-msg-composer.c
--- e-msg-composer.c 30 Jan 2006 09:51:18 -0000 1.529
+++ e-msg-composer.c 16 Feb 2006 12:59:55 -0000
@@ -2884,10 +2884,30 @@ e_msg_composer_get_remote_download_count
(E_ATTACHMENT_BAR (p->attachment_bar));
}
+static char *
+attachment_guess_mime_type (const char *file_name)
+{
+ GnomeVFSFileInfo *info;
+ GnomeVFSResult result;
+ char *type = NULL;
+
+ info = gnome_vfs_file_info_new ();
+ result = gnome_vfs_get_file_info (file_name, info,
+ GNOME_VFS_FILE_INFO_GET_MIME_TYPE |
+ GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE |
+ GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+ if (result == GNOME_VFS_OK)
+ type = g_strdup (gnome_vfs_file_info_get_mime_type (info));
+
+ gnome_vfs_file_info_unref (info);
+
+ return type;
+}
+
static void
drop_action(EMsgComposer *composer, GdkDragContext *context, guint32 action, GtkSelectionData *selection, guint info, guint time)
{
- char *tmp, *str, **urls;
+ char *tmp, *str, **urls, *type;
CamelMimePart *mime_part;
CamelStream *stream;
CamelURL *url;
@@ -2939,12 +2959,14 @@ drop_action(EMsgComposer *composer, GdkD
continue;
}
- if (!g_ascii_strcasecmp (url->protocol, "file"))
- e_attachment_bar_attach
- (E_ATTACHMENT_BAR (p->attachment_bar),
- url->path,
- "attachment");
- else {
+ if (!g_ascii_strcasecmp (url->protocol, "file")) {
+ type=attachment_guess_mime_type (str);
+ if (strncmp (type, "image", 5) || (!p->send_html && !strncmp (type, "image", 5)))
+ e_attachment_bar_attach
+ (E_ATTACHMENT_BAR (p->attachment_bar),
+ url->path,
+ "attachment");
+ } else {
e_attachment_bar_attach_remote_file
(E_ATTACHMENT_BAR (p->attachment_bar),
str);
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/composer/ChangeLog,v
retrieving revision 1.735
diff -u -p -r1.735 ChangeLog
--- ChangeLog 15 Feb 2006 23:33:45 -0000 1.735
+++ ChangeLog 16 Feb 2006 13:06:53 -0000
@@ -1,3 +1,11 @@
+2006-02-16 Rohini S <srohini novell com>
+
+ ** Fixes bug #324742
+
+ * e-msg-composer.c (drop_action) (attachment_guess_mime_type):
+ Modified to add images in plain text mode and other files in both
+ html and plain text mode as attachment during DnD.
+
2006-02-16 Tor Lillqvist <tml novell com>
* e-msg-composer-hdrs.c (e_msg_composer_hdrs_get_to)
Index: gtkhtml.c
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/gtkhtml.c,v
retrieving revision 1.613
diff -u -p -r1.613 gtkhtml.c
--- gtkhtml.c 6 Feb 2006 09:59:36 -0000 1.613
+++ gtkhtml.c 16 Feb 2006 13:12:11 -0000
@@ -2582,6 +2582,31 @@ static gchar *known_protocols [] = {
};
static HTMLObject *
+new_img_obj_from_uri (HTMLEngine *e, char *uri, char *title, gint len)
+{
+ gint i;
+
+ if (!strncmp (uri, "file:", 5)) {
+ if (!HTML_IS_PLAIN_PAINTER(e->painter)) {
+ GdkPixbuf *pixbuf = NULL;
+ char *img_path = g_filename_from_uri (uri, NULL, NULL);
+ if (img_path) {
+ pixbuf = gdk_pixbuf_new_from_file(img_path, NULL);
+ g_free(img_path);
+ }
+ if (pixbuf) {
+ g_object_unref (pixbuf);
+ return html_image_new (html_engine_get_image_factory (e), uri,
+ NULL, NULL, -1, -1, FALSE, FALSE, 0,
+ html_colorset_get_color (e->settings->color_set, HTMLTextColor),
+ HTML_VALIGN_BOTTOM, TRUE);
+ }
+ }
+ }
+ return NULL;
+}
+
+static HTMLObject *
new_obj_from_uri (HTMLEngine *e, char *uri, char *title, gint len)
{
gint i;
@@ -2660,8 +2685,25 @@ drag_data_received (GtkWidget *widget, G
selection_received (widget, selection_data, time);
pasted = TRUE;
break;
- case DND_TARGET_TYPE_MOZILLA_URL :
- case DND_TARGET_TYPE_TEXT_URI_LIST:
+ case DND_TARGET_TYPE_MOZILLA_URL :
+ break;
+ case DND_TARGET_TYPE_TEXT_URI_LIST:
+ if(!HTML_IS_PLAIN_PAINTER (engine->painter)) {
+ HTMLObject *obj;
+ gint list_len, len;
+ gchar *uri;
+ html_undo_level_begin (engine->undo, "Dropped URI(s)", "Remove Dropped URI(s)");
+ list_len = selection_data->length;
+ do {
+ uri = next_uri (&selection_data->data, &len, &list_len);
+ obj = new_img_obj_from_uri (engine, uri, NULL, -1);
+ if (obj) {
+ html_engine_paste_object (engine, obj, html_object_get_length (obj));
+ pasted = TRUE;
+ }
+ } while (list_len);
+ html_undo_level_end (engine->undo);
+ }
break;
}
gtk_drag_finish (context, pasted, FALSE, time);
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/ChangeLog,v
retrieving revision 1.2163
diff -u -p -r1.2163 ChangeLog
--- ChangeLog 15 Feb 2006 15:09:07 -0000 1.2163
+++ ChangeLog 16 Feb 2006 13:16:53 -0000
@@ -1,3 +1,10 @@
+2006-02-16 Rohini S <srohini novell com>
+
+ * gtkhtml.c (drag_data_received, new_img_obj_from_uri): Function modified to
+ add images to editor in html mode during DnD.
+
+ Fixes bug #324742
+
2006-02-15 Rohini S <srohini novell com>
* htmlsearch.c (html_search_new): Function modified to include offset zero too.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]