diff options
author | Quentin Rameau <quinq@fifth.space> | 2015-11-19 14:25:29 +0100 |
---|---|---|
committer | Quentin Rameau <quinq@fifth.space> | 2015-11-20 00:34:21 +0100 |
commit | 2e1fb873613b3917b97c954f0c085ea05016bdce (patch) | |
tree | 665bfb5fa5b3eed953178ee53b38e34a577b1d7b /surf.c | |
parent | 04d46d1791f1ff3b82a665fbc5b574f4e2a70c97 (diff) | |
download | surf-2e1fb873613b3917b97c954f0c085ea05016bdce.tar.gz surf-2e1fb873613b3917b97c954f0c085ea05016bdce.tar.bz2 surf-2e1fb873613b3917b97c954f0c085ea05016bdce.zip |
Add closeview() for JavaScript window closing
Simply call gtk_widget_destroy() on the window. Then GtkWindow closing
process will take care of the rest.
Diffstat (limited to 'surf.c')
-rw-r--r-- | surf.c | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -120,6 +120,7 @@ static gboolean decidepolicy(WebKitWebView *v, WebKitPolicyDecision *d, static void decidenavigation(WebKitPolicyDecision *d, Client *c); static void decidenewwindow(WebKitPolicyDecision *d, Client *c); static void decideresource(WebKitPolicyDecision *d, Client *c); +static void closeview(WebKitWebView *v, Client *c); static void destroyclient(Client *c); static void destroywin(GtkWidget* w, Client *c); static void die(const char *errstr, ...); @@ -551,10 +552,9 @@ destroyclient(Client *c) Client *p; webkit_web_view_stop_loading(c->view); - gtk_widget_destroy(GTK_WIDGET(c->view)); - gtk_widget_destroy(c->scroll); - gtk_widget_destroy(c->vbox); + /* Not needed, has already been called gtk_widget_destroy(c->win); + */ for (p = clients; p && p->next != c; p = p->next) ; @@ -563,14 +563,20 @@ destroyclient(Client *c) else clients = c->next; free(c); - if (clients == NULL) - gtk_main_quit(); +} + +void +closeview(WebKitWebView *v, Client *c) +{ + gtk_widget_destroy(c->win); } void destroywin(GtkWidget* w, Client *c) { destroyclient(c); + if (clients == NULL) + gtk_main_quit(); } void @@ -998,6 +1004,8 @@ newview(Client *c, WebKitWebView *rv) g_signal_connect(G_OBJECT(v), "button-release-event", G_CALLBACK(buttonreleased), c); + g_signal_connect(G_OBJECT(v), "close", + G_CALLBACK(closeview), c); return v; } |