Get rid of these gotos.
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 35ef358..f278ac7 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -60,6 +60,7 @@ static void showsearch(Client *c);
 static void showurl(Client *c);
 static void stop(Client *c);
 static void titlechange(WebKitWebView* view, WebKitWebFrame* frame, const gchar* title, gpointer d);
+static void usage();
 static void updatetitle(Client *c, const gchar *title);
 
 void
@@ -220,6 +221,16 @@ keypress(GtkWidget* w, GdkEventKey *ev, gpointer d) {
                case GDK_slash:
                        showsearch(c);
                        return TRUE;
+               case GDK_plus:
+               case GDK_equal:
+                       webkit_web_view_zoom_in(c->view);
+                       return TRUE;
+               case GDK_minus:
+                       webkit_web_view_zoom_out(c->view);
+                       return TRUE;
+               case GDK_0:
+                       webkit_web_view_set_zoom_level(c->view, 1.0);
+                       return TRUE;
                case GDK_n:
                case GDK_N:
                        webkit_web_view_search_text(c->view,
@@ -331,7 +342,6 @@ newclient(void) {
        gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600);
        g_signal_connect(G_OBJECT(c->win), "destroy", G_CALLBACK(destroywin), c);
        g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c);
-       c->download = NULL;
 
        /* VBox */
        c->vbox = gtk_vbox_new(FALSE, 0);
@@ -381,6 +391,9 @@ newclient(void) {
        gtk_widget_show(c->win);
        gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK);
        gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c);
+       webkit_web_view_set_full_content_zoom(c->view, TRUE);
+       c->download = NULL;
+       c->title = NULL;
        c->next = clients;
        clients = c;
        if(showxid)
@@ -462,6 +475,12 @@ titlechange(WebKitWebView *v, WebKitWebFrame *f, const gchar *t, gpointer d) {
        updatetitle(c, t);
 }
 
+void
+usage() {
+       fputs("surf - simple browser\n", stderr);
+       die("usage: surf [-e] [-x] [-u uri] [-f file]\n");
+}
+
 void
 updatetitle(Client *c, const char *title) {
        char t[512];
@@ -479,7 +498,6 @@ updatetitle(Client *c, const char *title) {
 }
 
 int main(int argc, char *argv[]) {
-       gchar *uri = NULL, *file = NULL;
        SoupSession *s;
        Client *c;
        int o;
@@ -499,28 +517,21 @@ int main(int argc, char *argv[]) {
                        embed = TRUE;
                        break;
                case 'u':
-                       if(!(uri = optarg))
-                               goto argerr;
                        c = newclient();
-                       loaduri(c, uri);
+                       loaduri(c, optarg);
                        break;
                case 'f':
-                       if(!(file = optarg))
-                               goto argerr;
                        c = newclient();
-                       loadfile(c, file);
+                       loadfile(c, optarg);
                        break;
                case 'v':
                        die("surf-"VERSION", © 2009 surf engineers, see LICENSE for details\n");
                        break;
-               argerr:
                default:
-                       puts("surf - simple browser");
-                       die("usage: surf [-e] [-x] [-u uri] [-f file]\n");
-                       return EXIT_FAILURE;
+                       usage();
                }
        if(optind != argc)
-               goto argerr;
+               usage();
        if(!clients)
                newclient();