Apparently, there's an object signal for this.

Fri, 08 Jun 2012 01:18:55 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 08 Jun 2012 01:18:55 +0000
changeset 33028
2a61ad7ca6b6
parent 33027
1e32fba3d30d
child 33029
5005e63a35d4

Apparently, there's an object signal for this.

Unfortunately, this signal is also called when we do programmatic
changes, which could be trouble.

pidgin/gtkwebview.c file | annotate | diff | comparison | revisions
--- a/pidgin/gtkwebview.c	Wed Jun 06 04:10:12 2012 +0000
+++ b/pidgin/gtkwebview.c	Fri Jun 08 01:18:55 2012 +0000
@@ -414,7 +414,7 @@
 }
 
 static void
-editable_input_cb(GObject *target, WebKitDOMEvent *event, GtkWebView *webview)
+editable_input_cb(GtkWebView *webview, gpointer data)
 {
 	GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview);
 	if (!priv->edit.block_changed)
@@ -704,19 +704,15 @@
 void
 gtk_webview_set_editable(GtkWebView *webview, gboolean editable)
 {
-	WebKitDOMDocument *doc;
-
 	webkit_web_view_set_editable(WEBKIT_WEB_VIEW(webview), editable);
 
-	doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview));
 	if (editable) {
-		webkit_dom_event_target_add_event_listener(WEBKIT_DOM_EVENT_TARGET(doc),
-	    	                                       "input", G_CALLBACK(editable_input_cb),
-	    	                                       FALSE, webview);
+		g_signal_connect(G_OBJECT(webview), "user-changed-contents",
+		                 G_CALLBACK(editable_input_cb), NULL);
 	} else {
-		webkit_dom_event_target_remove_event_listener(WEBKIT_DOM_EVENT_TARGET(doc),
-		                                              "input", G_CALLBACK(editable_input_cb),
-		                                              FALSE);
+		g_signal_handlers_disconnect_by_func(G_OBJECT(webview),
+		                                     G_CALLBACK(editable_input_cb),
+		                                     NULL);
 	}
 }
 

mercurial