aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/e-mail-display.c122
-rw-r--r--mail/e-mail-display.h80
2 files changed, 103 insertions, 99 deletions
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 7d7f04f9cf..c39c5c73ca 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -44,11 +44,6 @@
#define d(x)
-G_DEFINE_TYPE (
- EMailDisplay,
- e_mail_display,
- E_TYPE_WEB_VIEW);
-
#define E_MAIL_DISPLAY_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_MAIL_DISPLAY, EMailDisplayPrivate))
@@ -60,8 +55,7 @@ struct _EMailDisplayPrivate {
gboolean headers_collapsable;
gboolean headers_collapsed;
-
- gint force_image_load: 1;
+ gboolean force_image_load;
GSettings *settings;
@@ -156,6 +150,11 @@ static GtkActionEntry image_entries[] = {
NULL /* Handled by EMailReader */ },
};
+G_DEFINE_TYPE (
+ EMailDisplay,
+ e_mail_display,
+ E_TYPE_WEB_VIEW);
+
static void
formatter_image_loading_policy_changed_cb (GObject *object,
GParamSpec *pspec,
@@ -176,18 +175,22 @@ formatter_image_loading_policy_changed_cb (GObject *object,
static gboolean
mail_display_image_exists_in_cache (const gchar *image_uri)
{
- gchar *image_filename, *uri_md5;
- gboolean exists;
+ gchar *filename;
+ gchar *hash;
+ gboolean exists = FALSE;
g_return_val_if_fail (emd_global_http_cache != NULL, FALSE);
- uri_md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, image_uri, -1);
- image_filename = camel_data_cache_get_filename (emd_global_http_cache, "http", uri_md5);
+ hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, image_uri, -1);
+ filename = camel_data_cache_get_filename (
+ emd_global_http_cache, "http", hash);
- exists = image_filename && g_file_test (image_filename, G_FILE_TEST_EXISTS);
+ if (filename != NULL) {
+ exists = g_file_test (filename, G_FILE_TEST_EXISTS);
+ g_free (filename);
+ }
- g_free (uri_md5);
- g_free (image_filename);
+ g_free (hash);
return exists;
}
@@ -195,11 +198,14 @@ mail_display_image_exists_in_cache (const gchar *image_uri)
static void
mail_display_update_formatter_colors (EMailDisplay *display)
{
- if (display->priv->formatter == NULL)
- return;
+ EMailFormatter *formatter;
+ GtkStateFlags state_flags;
+
+ formatter = display->priv->formatter;
+ state_flags = gtk_widget_get_state_flags (GTK_WIDGET (display));
- e_mail_formatter_update_style (display->priv->formatter,
- gtk_widget_get_state_flags (GTK_WIDGET (display)));
+ if (formatter != NULL)
+ e_mail_formatter_update_style (formatter, state_flags);
}
static void
@@ -230,6 +236,8 @@ mail_display_process_mailto (EWebView *web_view,
const gchar *mailto_uri,
gpointer user_data)
{
+ gboolean handled = FALSE;
+
g_return_val_if_fail (E_IS_WEB_VIEW (web_view), FALSE);
g_return_val_if_fail (mailto_uri != NULL, FALSE);
@@ -245,10 +253,10 @@ mail_display_process_mailto (EWebView *web_view,
em_utils_compose_new_message_with_mailto (
shell, mailto_uri, folder);
- return TRUE;
+ handled = TRUE;
}
- return FALSE;
+ return handled;
}
static gboolean
@@ -331,12 +339,22 @@ mail_display_resource_requested (WebKitWebView *web_view,
{
EMailDisplay *display = E_MAIL_DISPLAY (web_view);
EMailPartList *part_list;
- const gchar *uri = webkit_network_request_get_uri (request);
+ gboolean uri_is_http;
+ const gchar *uri;
part_list = display->priv->part_list;
if (part_list == NULL)
return;
+ uri = webkit_network_request_get_uri (request);
+ g_return_if_fail (uri != NULL);
+
+ uri_is_http =
+ g_str_has_prefix (uri, "http:") ||
+ g_str_has_prefix (uri, "https:") ||
+ g_str_has_prefix (uri, "evo-http:") ||
+ g_str_has_prefix (uri, "evo-https:");
+
/* Redirect cid:part_id to mail://mail_id/cid:part_id */
if (g_str_has_prefix (uri, "cid:")) {
CamelFolder *folder;
@@ -371,8 +389,7 @@ mail_display_resource_requested (WebKitWebView *web_view,
/* Redirect http(s) request to evo-http(s) protocol.
* See EMailRequest for further details about this. */
- } else if (g_str_has_prefix (uri, "http:") || g_str_has_prefix (uri, "https:") ||
- g_str_has_prefix (uri, "evo-http:") || g_str_has_prefix (uri, "evo-https:")) {
+ } else if (uri_is_http) {
CamelFolder *folder;
const gchar *message_uid;
gchar *new_uri, *mail_uri, *enc;
@@ -482,7 +499,8 @@ mail_display_plugin_widget_resize (GtkWidget *widget,
gint height, width;
gfloat scale;
- parent_element = g_object_get_data (G_OBJECT (widget), "parent_element");
+ parent_element = g_object_get_data (
+ G_OBJECT (widget), "parent_element");
if (!WEBKIT_DOM_IS_ELEMENT (parent_element)) {
d (
@@ -495,12 +513,12 @@ mail_display_plugin_widget_resize (GtkWidget *widget,
width = gtk_widget_get_allocated_width (widget);
gtk_widget_get_preferred_height_for_width (widget, width, &height, NULL);
- /* When zooming WebKit does not change dimensions of the elements, but
- * only scales them on the canvas. GtkWidget can't be scaled though
- * so we need to cope with the dimensions changes to keep the widgets
- * still the correct size. Due to inaccuracy in rounding (float -> int)
- * it still acts a bit funny, but at least it does not cause widgets in
- * WebKit to go crazy when zooming. */
+ /* When zooming WebKit does not change dimensions of the elements,
+ * but only scales them on the canvas. GtkWidget can't be scaled
+ * though so we need to cope with the dimension changes to keep the
+ * the widgets the correct size. Due to inaccuracy in rounding
+ * (float -> int) it still acts a bit funny, but at least it does
+ * not cause widgets in WebKit to go crazy when zooming. */
height = height * (1 / scale);
/* Int -> Str */
@@ -523,23 +541,18 @@ mail_display_plugin_widget_realize_cb (GtkWidget *widget,
GList *children;
children = gtk_container_get_children (GTK_CONTAINER (widget));
- if (children && children->data &&
- E_IS_ATTACHMENT_BAR (children->data)) {
+ if (children != NULL && E_IS_ATTACHMENT_BAR (children->data))
widget = children->data;
- }
-
g_list_free (children);
}
/* First check if we are actually supposed to be visible */
element = g_object_get_data (G_OBJECT (widget), "parent_element");
if (element == NULL || !WEBKIT_DOM_IS_HTML_ELEMENT (element)) {
- g_warning ("UAAAAA");
- } else {
- if (webkit_dom_html_element_get_hidden (element)) {
- gtk_widget_hide (widget);
- return;
- }
+ g_warn_if_reached ();
+ } else if (webkit_dom_html_element_get_hidden (element)) {
+ gtk_widget_hide (widget);
+ return;
}
/* Initial resize of the <object> element when the widget
@@ -567,8 +580,8 @@ plugin_widget_set_parent_element (GtkWidget *widget,
return;
}
- /* Assign the WebKitDOMElement to "parent_element" data of the GtkWidget
- * and the GtkWidget to "widget" data of the DOM Element */
+ /* Assign the WebKitDOMElement to "parent_element" data of the
+ * GtkWidget and the GtkWidget to "widget" data of the DOM Element. */
g_object_set_data (G_OBJECT (widget), "parent_element", element);
g_object_set_data (G_OBJECT (element), "widget", widget);
@@ -606,7 +619,7 @@ toggle_widget_visibility (EAttachmentButton *button,
GList *children;
children = gtk_container_get_children (GTK_CONTAINER (widget));
- if (children && children->data && E_IS_ATTACHMENT_BAR (children->data)) {
+ if (children != NULL && E_IS_ATTACHMENT_BAR (children->data)) {
EAttachmentStore *store;
store = e_attachment_bar_get_store (
@@ -671,7 +684,6 @@ bind_iframe_content_visibility (WebKitDOMElement *iframe,
/* Iterate through all <object>s and bind visibility of their widget
* with expanded-state of related attachment button */
for (ii = 0; ii < length; ii++) {
-
WebKitDOMNode *node = webkit_dom_node_list_item (nodes, ii);
/* Initial sync */
@@ -770,7 +782,7 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
EMailExtensionRegistry *reg;
EMailFormatterExtension *extension;
GQueue *extensions;
- GList *iter;
+ GList *head, *link;
EMailPart *part = NULL;
GtkWidget *widget = NULL;
gchar *part_id, *type, *object_uri;
@@ -802,9 +814,10 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
goto exit;
extension = NULL;
- for (iter = g_queue_peek_head_link (extensions); iter; iter = iter->next) {
+ head = g_queue_peek_head_link (extensions);
+ for (link = head; link != NULL; link = g_list_next (link)) {
+ extension = link->data;
- extension = iter->data;
if (extension == NULL)
continue;
@@ -1031,7 +1044,7 @@ toggle_headers_visibility (WebKitDOMElement *button,
d (printf ("Headers %s!\n", expanded ? "collapsed" : "expanded"));
}
-static const gchar * addresses[] = { "to", "cc", "bcc" };
+static const gchar *addresses[] = { "to", "cc", "bcc" };
static void
toggle_address_visibility (WebKitDOMElement *button,
@@ -1091,11 +1104,10 @@ toggle_address_visibility (WebKitDOMElement *button,
webkit_dom_html_image_element_set_src (
WEBKIT_DOM_HTML_IMAGE_ELEMENT (button), path);
-
}
static void
-setup_DOM_bindings (GObject *object,
+setup_dom_bindings (GObject *object,
GParamSpec *pspec,
gpointer user_data)
{
@@ -1605,7 +1617,7 @@ e_mail_display_init (EMailDisplay *display)
main_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (display));
g_signal_connect (
main_frame, "notify::load-status",
- G_CALLBACK (setup_DOM_bindings), NULL);
+ G_CALLBACK (setup_dom_bindings), NULL);
g_signal_connect (
main_frame, "notify::load-status",
G_CALLBACK (mail_parts_bind_dom), NULL);
@@ -1951,8 +1963,10 @@ e_mail_display_set_status (EMailDisplay *display,
g_return_if_fail (E_IS_MAIL_DISPLAY (display));
str = g_strdup_printf (
- "<!DOCTYPE HTML>\n<html>\n"
- "<head>\n<meta name=\"generator\" content=\"Evolution Mail Component\" />\n"
+ "<!DOCTYPE HTML>\n"
+ "<html>\n"
+ "<head>\n"
+ "<meta name=\"generator\" content=\"Evolution Mail\"/>\n"
"<title>Evolution Mail Display</title>\n"
"</head>\n"
"<body bgcolor=\"#%06x\" text=\"#%06x\">"
@@ -1991,7 +2005,7 @@ mail_display_get_frame_selection_text (WebKitDOMElement *iframe)
gulong ii, length;
document = webkit_dom_html_iframe_element_get_content_document (
- WEBKIT_DOM_HTML_IFRAME_ELEMENT (iframe));
+ WEBKIT_DOM_HTML_IFRAME_ELEMENT (iframe));
window = webkit_dom_document_get_default_view (document);
selection = webkit_dom_dom_window_get_selection (window);
if (selection && (webkit_dom_dom_selection_get_range_count (selection) > 0)) {
diff --git a/mail/e-mail-display.h b/mail/e-mail-display.h
index 1acae83c8d..fdc7ea550f 100644
--- a/mail/e-mail-display.h
+++ b/mail/e-mail-display.h
@@ -61,51 +61,41 @@ struct _EMailDisplayClass {
};
-GType e_mail_display_get_type (void);
-
-void e_mail_display_set_mode (EMailDisplay *display,
- EMailFormatterMode mode);
-EMailFormatterMode e_mail_display_get_mode (EMailDisplay *display);
-
-EMailFormatter * e_mail_display_get_formatter (EMailDisplay *display);
-
-EMailPartList * e_mail_display_get_parts_list (EMailDisplay *display);
-
-void e_mail_display_set_parts_list (EMailDisplay *display,
- EMailPartList *parts_list);
-
-void e_mail_display_set_headers_collapsable
- (EMailDisplay *display,
- gboolean collapsable);
-gboolean e_mail_display_get_headers_collapsable
- (EMailDisplay *display);
-void e_mail_display_set_headers_collapsed
- (EMailDisplay *display,
- gboolean collapsed);
-gboolean e_mail_display_get_headers_collapsed
- (EMailDisplay *display);
-
-void e_mail_display_load (EMailDisplay *display,
- const gchar *msg_uri);
-void e_mail_display_reload (EMailDisplay *display);
-
-GtkAction * e_mail_display_get_action (EMailDisplay *display,
- const gchar *action_name);
-
-void e_mail_display_set_status (EMailDisplay *display,
- const gchar *status);
-
-gchar * e_mail_display_get_selection_plain_text
- (EMailDisplay *display);
-
-void e_mail_display_load_images (EMailDisplay *display);
-
-void e_mail_display_set_force_load_images
- (EMailDisplay *display,
- gboolean force_load_images);
-
-void e_mail_display_set_charset (EMailDisplay *display,
- const gchar *charset);
+GType e_mail_display_get_type (void);
+EMailFormatterMode
+ e_mail_display_get_mode (EMailDisplay *display);
+void e_mail_display_set_mode (EMailDisplay *display,
+ EMailFormatterMode mode);
+EMailFormatter *
+ e_mail_display_get_formatter (EMailDisplay *display);
+EMailPartList * e_mail_display_get_parts_list (EMailDisplay *display);
+void e_mail_display_set_parts_list (EMailDisplay *display,
+ EMailPartList *parts_list);
+gboolean e_mail_display_get_headers_collapsable
+ (EMailDisplay *display);
+void e_mail_display_set_headers_collapsable
+ (EMailDisplay *display,
+ gboolean collapsable);
+gboolean e_mail_display_get_headers_collapsed
+ (EMailDisplay *display);
+void e_mail_display_set_headers_collapsed
+ (EMailDisplay *display,
+ gboolean collapsed);
+void e_mail_display_load (EMailDisplay *display,
+ const gchar *msg_uri);
+void e_mail_display_reload (EMailDisplay *display);
+GtkAction * e_mail_display_get_action (EMailDisplay *display,
+ const gchar *action_name);
+void e_mail_display_set_status (EMailDisplay *display,
+ const gchar *status);
+gchar * e_mail_display_get_selection_plain_text
+ (EMailDisplay *display);
+void e_mail_display_load_images (EMailDisplay *display);
+void e_mail_display_set_force_load_images
+ (EMailDisplay *display,
+ gboolean force_load_images);
+void e_mail_display_set_charset (EMailDisplay *display,
+ const gchar *charset);
G_END_DECLS