[epiphany-extensions] greasemonkey: apply scripts on LOAD_FINISHED
- From: Diego Escalante Urrelo <diegoe src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [epiphany-extensions] greasemonkey: apply scripts on LOAD_FINISHED
- Date: Sat, 23 Jan 2010 20:20:54 +0000 (UTC)
commit 75e7fd6ab1d8a84eef9a236b9ccae5fbb9686323
Author: Diego Escalante Urrelo <descalante igalia com>
Date: Sat Jan 23 15:12:35 2010 -0500
greasemonkey: apply scripts on LOAD_FINISHED
window-object-cleared does not meet our needs since it let us install hooks
rather than apply actions, most userscripts seem to expect to be able to
execute code when loaded and window-object-cleared does not mean the page has
content ready.
.../greasemonkey/ephy-greasemonkey-extension.c | 26 +++++++++++--------
1 files changed, 15 insertions(+), 11 deletions(-)
---
diff --git a/extensions/greasemonkey/ephy-greasemonkey-extension.c b/extensions/greasemonkey/ephy-greasemonkey-extension.c
index 1954e48..36e528d 100644
--- a/extensions/greasemonkey/ephy-greasemonkey-extension.c
+++ b/extensions/greasemonkey/ephy-greasemonkey-extension.c
@@ -451,20 +451,24 @@ maybe_apply_script (const char *basename,
}
static void
-window_object_cleared_cb (WebKitWebView *web_view,
- WebKitWebFrame *web_frame,
- gpointer context,
- gpointer window_object,
- EphyGreasemonkeyExtension *extension)
+load_status_notify_cb (GObject *object,
+ GParamSpec *spec,
+ EphyGreasemonkeyExtension *extension)
{
ApplyScriptCBData *data;
+ WebKitWebView *web_view;
+ WebKitLoadStatus status;
const char *location;
- location = webkit_web_frame_get_uri (web_frame);
+ web_view = WEBKIT_WEB_VIEW (object);
+
+ status = webkit_web_view_get_load_status (web_view);
+ if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ location = webkit_web_view_get_uri (web_view);
if (location == NULL)
- {
return;
- }
data = g_new (ApplyScriptCBData, 1);
data->web_view = web_view;
@@ -585,8 +589,8 @@ impl_attach_tab (EphyExtension *ext,
g_signal_connect (web_view, "hovering-over-link",
G_CALLBACK (hovering_over_link_cb), ext);
- g_signal_connect (web_view, "window-object-cleared",
- G_CALLBACK (window_object_cleared_cb), ext);
+ g_signal_connect (web_view, "notify::load-status",
+ G_CALLBACK (load_status_notify_cb), ext);
}
static void
@@ -608,7 +612,7 @@ impl_detach_tab (EphyExtension *ext,
(web_view, G_CALLBACK (hovering_over_link_cb), ext);
g_signal_handlers_disconnect_by_func
- (web_view, G_CALLBACK (window_object_cleared_cb), ext);
+ (web_view, G_CALLBACK (load_status_notify_cb), ext);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]