summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorportix <portix@gmx.net>2011-03-26 01:16:45 +0100
committerportix <portix@gmx.net>2011-03-26 01:16:45 +0100
commitc6b02c719191e7b07265c843ebcedcd5b2deb4e4 (patch)
tree4a938152bad7e0a5e2718ec2f60a379a033f686a /src
parentf9b66dfe33539fbc4a6ce754b5fd52da5d97611b (diff)
downloaddwb-c6b02c719191e7b07265c843ebcedcd5b2deb4e4.zip
plugin blocker: clone node if possible
Diffstat (limited to 'src')
-rw-r--r--src/plugins.c32
-rw-r--r--src/view.c6
2 files changed, 23 insertions, 15 deletions
diff --git a/src/plugins.c b/src/plugins.c
index c6fe951b..73c52108 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -3,21 +3,34 @@
typedef struct {
GList *gl;
char *id;
+ GtkWidget *plugin;
} Plugin;
static void
dwb_plugins_get_embed_values(char *key, char *value, GString **gl) {
g_string_append_printf(*gl, " %s=\"%s\" ", key, value);
}
-void
-show(GtkWidget *plugin, Plugin *p) {
+static gboolean
+dwb_plugins_remove(Plugin *p) {
GtkAllocation a;
- gtk_widget_get_allocation(plugin, &a);
- char *command = g_strdup_printf("DwbPlugin.remove('%s', '%d', '%d', '%d', '%d');", p->id, a.x, a.y, a.width, a.height);
- dwb_execute_script(WEBVIEW(p->gl), command, false);
- g_free(p->id);
- g_free(p);
- gtk_widget_destroy(plugin);
+ gtk_widget_get_allocation(p->plugin, &a);
+ if (a.x != -1 && a.y != -1) {
+ gtk_widget_destroy(p->plugin);
+ char *command = g_strdup_printf("DwbPlugin.remove('%s', '%d', '%d', '%d', '%d');", p->id, a.x, a.y, a.width, a.height);
+ dwb_execute_script(WEBVIEW(p->gl), command, false);
+ g_free(p->id);
+ g_free(p);
+ return false;
+ }
+ return true;
+}
+static void
+dwb_plugins_realize_cb(GtkWidget *plugin, Plugin *p) {
+ GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(VIEW(p->gl)->scroll));
+ double value = gtk_adjustment_get_value(adj);
+ gtk_adjustment_set_value(adj, value + 1);
+ gtk_adjustment_set_value(adj, value - 1);
+ g_timeout_add(20, (GSourceFunc)dwb_plugins_remove, p);
}
GtkWidget *
@@ -36,7 +49,8 @@ dwb_plugins_create_cb(WebKitWebView *wv, char *mimetype, char *uri, GHashTable *
value = dwb_execute_script(wv, command, true);
if (!value || strcmp(value, "__dwb__blocked__")) {
ret = gtk_event_box_new();
- g_signal_connect_after(ret, "show", G_CALLBACK(show), p);
+ p->plugin = ret;
+ g_signal_connect_after(ret, "realize", G_CALLBACK(dwb_plugins_realize_cb), p);
}
g_string_free(string, true);
FREE(value);
diff --git a/src/view.c b/src/view.c
index 29ba2b34..53b8a941 100644
--- a/src/view.c
+++ b/src/view.c
@@ -276,12 +276,6 @@ dwb_web_view_resource_request_cb(WebKitWebView *web, WebKitWebFrame *frame,
WebKitWebResource *resource, WebKitNetworkRequest *request,
WebKitNetworkResponse *response, GList *gl) {
-#if 0
- if (request)
- printf("response %s\n", webkit_network_request_get_uri(request));
- if (response)
- printf("request %s\n", webkit_network_response_get_uri(response));
-#endif
if (dwb_block_ad(gl, webkit_network_request_get_uri(request))) {
webkit_network_request_set_uri(request, "about:blank");
return;