--- a/pidgin/gtkwebview.c Tue Jun 05 06:15:26 2012 +0000
+++ b/pidgin/gtkwebview.c Tue Jun 05 06:17:48 2012 +0000
@@ -1052,3 +1052,19 @@
+gtk_webview_insert_image(GtkWebView *webview, int id) + GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview); + WebKitDOMDocument *dom; + dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview)); + img = g_strdup_printf("<img src='%s'/>", get_image_src_from_id(priv, id)); + priv->edit.block_changed = TRUE; + webkit_dom_document_exec_command(dom, "insertHTML", FALSE, img); + priv->edit.block_changed = FALSE; --- a/pidgin/gtkwebview.h Tue Jun 05 06:15:26 2012 +0000
+++ b/pidgin/gtkwebview.h Tue Jun 05 06:17:48 2012 +0000
@@ -429,6 +429,14 @@
void gtk_webview_insert_link(GtkWebView *webview, const char *url, const char *desc);
+ * Inserts an image at the current location or selection in a GtkWebView. + * @param webview The GtkWebView + * @param id The PurpleStoredImage id +void gtk_webview_insert_image(GtkWebView *webview, int id); #endif /* _PIDGIN_WEBVIEW_H_ */
--- a/pidgin/gtkwebviewtoolbar.c Tue Jun 05 06:15:26 2012 +0000
+++ b/pidgin/gtkwebviewtoolbar.c Tue Jun 05 06:17:48 2012 +0000
@@ -540,27 +540,22 @@
do_insert_image_cb(GtkWidget *widget, int response, GtkWebViewToolbar *toolbar)
GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar);
- gchar *filename, *name, *buf;
+ gchar *filename = NULL, *name, *buf;
- if (response != GTK_RESPONSE_ACCEPT)
+ if (response == GTK_RESPONSE_ACCEPT) + filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)); - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
+ /* The following triggers a callback that closes the widget */ + gtk_action_activate(priv->image); - /* The following triggers a callback that closes the widget */
- gtk_action_activate(priv->image);
if (!g_file_get_contents(filename, &filedata, &size, &error)) {
purple_notify_error(NULL, NULL, error->message, NULL);
@@ -586,12 +581,8 @@
- ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->webview)));
- gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->webview)),
- gtk_webview_insert_image_at_iter(GTK_WEBVIEW(toolbar->webview), id, &iter);
+ gtk_webview_insert_image(GTK_WEBVIEW(toolbar->webview), id); purple_imgstore_unref_by_id(id);
@@ -600,14 +591,14 @@
GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar);
- if (priv->image_dialog) {
+ if (!priv->image_dialog) { window = gtk_file_chooser_dialog_new(_("Insert Image"), NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_ACCEPT);
- g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(window)), "response",
+ g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_insert_image_cb), toolbar);