typedef struct _ModestTnyStreamGtkhtmlPrivate ModestTnyStreamGtkhtmlPrivate;
struct _ModestTnyStreamGtkhtmlPrivate {
GtkHTMLStream *stream;
+ GtkHTML *html;
};
#define MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MODEST_TYPE_TNY_STREAM_GTKHTML, \
priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(obj);
priv->stream = NULL;
+ priv->html = NULL;
}
static void
priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(obj);
priv->stream = NULL;
+ if (priv->html) {
+ g_object_unref (priv->html);
+ priv->html = NULL;
+ }
}
GObject*
-modest_tny_stream_gtkhtml_new (GtkHTMLStream *stream)
+modest_tny_stream_gtkhtml_new (GtkHTMLStream *stream, GtkHTML *html)
{
GObject *obj;
ModestTnyStreamGtkhtmlPrivate *priv;
g_return_val_if_fail (stream, NULL);
priv->stream = stream;
+ priv->html = g_object_ref (html);
return obj;
}
if (n == 0 || !buffer)
return 0;
-
+
+ if (!GTK_WIDGET_VISIBLE (priv->html))
+ return -1;
+
gtk_html_stream_write (priv->stream, buffer, n);
return n; /* hmmm */
}
g_return_val_if_fail (self, 0);
priv = MODEST_TNY_STREAM_GTKHTML_GET_PRIVATE(self);
- gtk_html_stream_close (priv->stream, GTK_HTML_STREAM_OK);
+ if (GTK_WIDGET_VISIBLE (priv->html)) {
+ gtk_html_stream_close (priv->stream, GTK_HTML_STREAM_OK);
+ }
priv->stream = NULL;
+ if (priv->html) {
+ g_object_unref (priv->html);
+ priv->html = NULL;
+ }
return 0;
}