/* idle changes count */
gint idle_changes_count;
guint idle_readjust_scroll_id;
+ guint idle_resize_children_id;
/* zoom */
gdouble current_zoom;
}
}
+static gboolean
+resize_children_idle (GtkContainer *cont)
+{
+ ModestGtkhtmlMsgViewPrivate *priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (cont);
+ if (GTK_WIDGET_DRAWABLE (cont)) {
+ gtk_container_resize_children (cont);
+ }
+ priv->idle_resize_children_id = 0;
+
+ return FALSE;
+}
+
static void
html_adjustment_changed (GtkAdjustment *adj,
gpointer userdata)
if (GTK_WIDGET_DRAWABLE (priv->html_scroll)) {
gdk_window_resize (priv->html_window, (gint) priv->hadj->upper, (gint) new_height);
gdk_window_process_updates (priv->view_window, TRUE);
- gtk_container_resize_children (GTK_CONTAINER (self));
+ if (priv->idle_resize_children_id == 0)
+ priv->idle_resize_children_id = gdk_threads_add_idle ((GSourceFunc) resize_children_idle, self);
}
}
priv->idle_changes_count = 0;
priv->idle_readjust_scroll_id = 0;
+ priv->idle_resize_children_id = 0;
priv->current_zoom = 1.0;
priv->hadj = NULL;
priv->msg = NULL;
}
+ if (priv->idle_resize_children_id > 0) {
+ g_source_remove (priv->idle_resize_children_id);
+ priv->idle_resize_children_id = 0;
+ }
+
if (priv->idle_readjust_scroll_id > 0) {
g_source_remove (priv->idle_readjust_scroll_id);
priv->idle_readjust_scroll_id = 0;