| tAdd closeview() for JavaScript window closing - surf - customized build of sur… | |
| git clone git://src.adamsgaard.dk/surf | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 2e1fb873613b3917b97c954f0c085ea05016bdce | |
| parent 04d46d1791f1ff3b82a665fbc5b574f4e2a70c97 | |
| Author: Quentin Rameau <[email protected]> | |
| Date: Thu, 19 Nov 2015 14:25:29 +0100 | |
| 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: | |
| M surf.c | 18 +++++++++++++----- | |
| 1 file changed, 13 insertions(+), 5 deletions(-) | |
| --- | |
| diff --git a/surf.c b/surf.c | |
| t@@ -120,6 +120,7 @@ static gboolean decidepolicy(WebKitWebView *v, WebKitPolic… | |
| 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, ...); | |
| t@@ -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) | |
| ; | |
| t@@ -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 | |
| t@@ -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; | |
| } |