Better handling of spaces on converting text to html
[modest] / src / widgets / modest-gtkhtml-msg-view.c
index 6ec5a20..994f926 100644 (file)
@@ -86,6 +86,7 @@ static gboolean on_activate_link (GtkWidget *widget, const gchar *uri, ModestGtk
 static gboolean on_fetch_url (GtkWidget *widget, const gchar *uri, TnyStream *stream,
                              ModestGtkhtmlMsgView *msg_view);
 static gboolean on_link_hover (GtkWidget *widget, const gchar *uri, ModestGtkhtmlMsgView *msg_view);
+static void on_limit_error (GtkWidget *widget, ModestGtkhtmlMsgView *msg_view);
 
 #ifdef MAEMO_CHANGES
 static void     on_tap_and_hold (GtkWidget *widget, gpointer userdata); 
@@ -596,6 +597,8 @@ set_hadjustment_values (ModestGtkhtmlMsgView *self,
 {
        GtkAllocation view_allocation;
        GtkAdjustment *hadj = get_hadjustment (self);
+       gint full_width = 0;
+       ModestGtkhtmlMsgViewPrivate *priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
        get_view_allocation (self, &view_allocation);
        hadj->page_size = view_allocation.width;
@@ -605,11 +608,20 @@ set_hadjustment_values (ModestGtkhtmlMsgView *self,
        hadj->lower = 0;
        hadj->upper = view_allocation.width;
 
+       /* Get the real width of the embedded html */
+       if (priv->html_scroll && GTK_WIDGET_VISIBLE(priv->html_scroll)) {
+               GtkAdjustment *html_hadj;
+               html_hadj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (priv->html_scroll));
+               full_width += html_hadj->upper;
+       }
+
+       hadj->upper = MAX (view_allocation.width, full_width);
+
        reclamp_adjustment (hadj, value_changed);
 
 }
 
-static void 
+static void
 set_vadjustment_values (ModestGtkhtmlMsgView *self,
                        gboolean *value_changed)
 {
@@ -1075,7 +1087,6 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
 {
        ModestGtkhtmlMsgViewPrivate *priv;
        GtkAdjustment *html_vadj;
-       GtkWidget *separator;
 
        GTK_WIDGET_UNSET_FLAGS (obj, GTK_NO_WINDOW);
        gtk_widget_set_redraw_on_allocate (GTK_WIDGET (obj), TRUE);
@@ -1125,6 +1136,8 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
                                       G_CALLBACK(on_fetch_url), obj);
        g_signal_connect (G_OBJECT(priv->body_view), "link_hover",
                                       G_CALLBACK(on_link_hover), obj);
+       g_signal_connect (G_OBJECT(priv->body_view), "limit_error",
+                         G_CALLBACK(on_limit_error), obj);
 #ifdef MAEMO_CHANGES
        g_signal_connect (G_OBJECT(priv->body_view), "motion-notify-event",
                          G_CALLBACK (motion_notify_event), obj);
@@ -1184,8 +1197,10 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
                g_free (att_label);
        }
 
+#ifndef MODEST_TOOLKIT_HILDON2
        separator = gtk_hseparator_new ();
        gtk_box_pack_start (GTK_BOX(priv->headers_box), separator, FALSE, FALSE, 0);
+#endif
 
        gtk_widget_set_parent (priv->headers_box, GTK_WIDGET (obj));
 
@@ -1554,6 +1569,11 @@ on_link_hover (GtkWidget *widget, const gchar *uri, ModestGtkhtmlMsgView *self)
        return result;
 }
 
+static void 
+on_limit_error (GtkWidget *widget, ModestGtkhtmlMsgView *msg_view)
+{
+       g_signal_emit_by_name (G_OBJECT (msg_view), "limit-error");
+}
 
 
 static TnyMimePart *