Merge branch 'part-to-stream-in-plugins' of https://git.maemo.org/projects/modest...
[modest] / src / widgets / modest-gtkhtml-msg-view.c
index 6ec5a20..72f0f66 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)
 {
@@ -1125,6 +1137,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);
@@ -1554,6 +1568,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 *