some polishing.
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 50b98dc..fa26a2a 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -72,6 +72,7 @@ static void cleanup(void);
 static void clipboard(Client *c, const Arg *arg);
 static void context(WebKitWebView *v, GtkMenu *m, Client *c);
 static char *copystr(char **str, const char *src);
+static gboolean decidedownload(WebKitWebView *v, WebKitWebFrame *f, WebKitNetworkRequest *r, gchar *m,  WebKitWebPolicyDecision *p, Client *c);
 static gboolean decidewindow(WebKitWebView *v, WebKitWebFrame *f, WebKitNetworkRequest *r, WebKitWebNavigationAction *n, WebKitWebPolicyDecision *p, Client *c);
 static void destroyclient(Client *c);
 static void destroywin(GtkWidget* w, Client *c);
@@ -213,10 +214,10 @@ destroyclient(Client *c) {
        int i;
        Client *p;
 
+       gtk_widget_destroy(c->indicator);
        gtk_widget_destroy(GTK_WIDGET(c->view));
        gtk_widget_destroy(c->scroll);
        gtk_widget_destroy(c->vbox);
-       gtk_widget_destroy(c->indicator);
        gtk_widget_destroy(c->win);
        for(i = 0; i < LENGTH(items); i++)
                gtk_widget_destroy(c->items[i]);
@@ -233,12 +234,12 @@ destroyclient(Client *c) {
 }
 
 gboolean
-mime_policy_cb(WebKitWebView *web_view, WebKitWebFrame *frame, WebKitNetworkRequest *request, gchar *mime_type,  WebKitWebPolicyDecision *policy_decision, gpointer user_data) {
-       if(webkit_web_view_can_show_mime_type(web_view, mime_type))
-               webkit_web_policy_decision_use(policy_decision);
-       else
-               webkit_web_policy_decision_download(policy_decision);
-       return TRUE;
+decidedownload(WebKitWebView *v, WebKitWebFrame *f, WebKitNetworkRequest *r, gchar *m,  WebKitWebPolicyDecision *p, Client *c) {
+       if(!webkit_web_view_can_show_mime_type(v, m)) {
+               webkit_web_policy_decision_download(p);
+               return TRUE;
+       }
+       return FALSE;
 }
 
 gboolean
@@ -471,12 +472,12 @@ newclient(void) {
        /* VBox */
        c->vbox = gtk_vbox_new(FALSE, 0);
 
-       /* scrolled window */
+       /* Scrolled Window */
        c->scroll = gtk_scrolled_window_new(NULL, NULL);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll),
                        GTK_POLICY_NEVER, GTK_POLICY_NEVER);
 
-       /* webview */
+       /* Webview */
        c->view = WEBKIT_WEB_VIEW(webkit_web_view_new());
        g_signal_connect(G_OBJECT(c->view), "title-changed", G_CALLBACK(titlechange), c);
        g_signal_connect(G_OBJECT(c->view), "load-progress-changed", G_CALLBACK(progresschange), c);
@@ -485,11 +486,12 @@ newclient(void) {
        g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(linkhover), c);
        g_signal_connect(G_OBJECT(c->view), "create-web-view", G_CALLBACK(createwindow), c);
        g_signal_connect(G_OBJECT(c->view), "new-window-policy-decision-requested", G_CALLBACK(decidewindow), c);
+       g_signal_connect(G_OBJECT(c->view), "mime-type-policy-decision-requested", G_CALLBACK(decidedownload), c);
        g_signal_connect(G_OBJECT(c->view), "download-requested", G_CALLBACK(initdownload), c);
        g_signal_connect(G_OBJECT(c->view), "window-object-cleared", G_CALLBACK(windowobjectcleared), c);
        g_signal_connect(G_OBJECT(c->view), "populate-popup", G_CALLBACK(context), c);
 
-       /* indicator */
+       /* Indicator */
        c->indicator = gtk_drawing_area_new();
        gtk_widget_set_size_request(c->indicator, 0, 2);
        g_signal_connect (G_OBJECT (c->indicator), "expose_event",
@@ -761,7 +763,7 @@ update(Client *c) {
        char *t;
 
        if(c->progress != 100)
-               t = g_strdup_printf("%s [%i%%]", c->title, c->progress);
+               t = g_strdup_printf("[%i%%] %s", c->progress, c->title);
        else if(c->linkhover)
                t = g_strdup(c->linkhover);
        else
@@ -842,9 +844,8 @@ int main(int argc, char *argv[]) {
                arg.v = argv[i];
        setup();
        newclient();
-       if(arg.v) {
+       if(arg.v)
                loaduri(clients, &arg);
-       }
        gtk_main();
        cleanup();
        return EXIT_SUCCESS;