diff options
| -rw-r--r-- | config.def.h | 48 | ||||
| -rw-r--r-- | surf.c | 74 | 
2 files changed, 56 insertions, 66 deletions
| diff --git a/config.def.h b/config.def.h index e1d2f50..ffe11ac 100644 --- a/config.def.h +++ b/config.def.h @@ -4,29 +4,29 @@ static gchar *progress_trust = "#00FF00";  #define MODKEY GDK_CONTROL_MASK  static Key keys[] = {      /* modifier	            keyval      function    arg             Focus */ -    { MODKEY|GDK_SHIFT_MASK,GDK_r,      reload,     { .b = TRUE },  ALWAYS }, -    { MODKEY,               GDK_r,      reload,     { .b = FALSE }, ALWAYS }, -    { MODKEY,               GDK_g,      showurl,    { 0 },          ALWAYS }, -    { MODKEY,               GDK_slash,  showsearch, { 0 },          ALWAYS }, -    { 0,                    GDK_Escape, hidesearch, { 0 },          ALWAYS }, -    { 0,                    GDK_Escape, hideurl,    { 0 },          ALWAYS }, -    { MODKEY|GDK_SHIFT_MASK,GDK_p,      print,      { 0 },          ALWAYS }, -    { MODKEY,               GDK_p,      clipboard,  { .b = TRUE },  BROWSER }, -    { MODKEY,               GDK_y,      clipboard,  { .b = FALSE }, BROWSER }, -    { MODKEY|GDK_SHIFT_MASK,GDK_j,      zoom,       { .i = -1 },    BROWSER }, -    { MODKEY|GDK_SHIFT_MASK,GDK_k,      zoom,       { .i = +1 },    BROWSER }, -    { MODKEY|GDK_SHIFT_MASK,GDK_i,      zoom,       { .i = 0  },    BROWSER }, -    { MODKEY,               GDK_l,      navigate,   { .i = +1 },    BROWSER }, -    { MODKEY,               GDK_h,      navigate,   { .i = -1 },    BROWSER }, -    { MODKEY,               GDK_j,      scroll,     { .i = +1 },    BROWSER }, -    { MODKEY,               GDK_k,      scroll,     { .i = -1 },    BROWSER }, -    { 0,                    GDK_Escape, stop,       { 0 },          BROWSER }, -    { MODKEY,               GDK_o,      source,     { 0 },          BROWSER }, -    { MODKEY,               GDK_n,      searchtext, { .b = TRUE },  BROWSER|SEARCHBAR }, -    { MODKEY|GDK_SHIFT_MASK,GDK_n,      searchtext, { .b = FALSE }, BROWSER|SEARCHBAR }, -    { 0,                    GDK_Return, searchtext, { .b = TRUE },  SEARCHBAR }, -    { GDK_SHIFT_MASK,       GDK_Return, searchtext, { .b = FALSE }, SEARCHBAR }, -    { 0,                    GDK_Return, loaduri,    { .v = NULL },  URLBAR }, -    { 0,                    GDK_Return, hideurl,    { 0 },          URLBAR }, +    { MODKEY|GDK_SHIFT_MASK,GDK_r,      reload,     { .b = TRUE },  Any }, +    { MODKEY,               GDK_r,      reload,     { .b = FALSE }, Any }, +    { MODKEY,               GDK_g,      showurl,    { 0 },          Any }, +    { MODKEY,               GDK_slash,  showsearch, { 0 },          Any }, +    { 0,                    GDK_Escape, hidesearch, { 0 },          Any }, +    { 0,                    GDK_Escape, hideurl,    { 0 },          Any }, +    { MODKEY|GDK_SHIFT_MASK,GDK_p,      print,      { 0 },          Any }, +    { MODKEY,               GDK_p,      clipboard,  { .b = TRUE },  Browser }, +    { MODKEY,               GDK_y,      clipboard,  { .b = FALSE }, Browser }, +    { MODKEY|GDK_SHIFT_MASK,GDK_j,      zoom,       { .i = -1 },    Browser }, +    { MODKEY|GDK_SHIFT_MASK,GDK_k,      zoom,       { .i = +1 },    Browser }, +    { MODKEY|GDK_SHIFT_MASK,GDK_i,      zoom,       { .i = 0  },    Browser }, +    { MODKEY,               GDK_l,      navigate,   { .i = +1 },    Browser }, +    { MODKEY,               GDK_h,      navigate,   { .i = -1 },    Browser }, +    { MODKEY,               GDK_j,      scroll,     { .i = +1 },    Browser }, +    { MODKEY,               GDK_k,      scroll,     { .i = -1 },    Browser }, +    { 0,                    GDK_Escape, stop,       { 0 },          Browser }, +    { MODKEY,               GDK_o,      source,     { 0 },          Browser }, +    { MODKEY,               GDK_n,      searchtext, { .b = TRUE },  Browser|SearchBar }, +    { MODKEY|GDK_SHIFT_MASK,GDK_n,      searchtext, { .b = FALSE }, Browser|SearchBar }, +    { 0,                    GDK_Return, searchtext, { .b = TRUE },  SearchBar }, +    { GDK_SHIFT_MASK,       GDK_Return, searchtext, { .b = FALSE }, SearchBar }, +    { 0,                    GDK_Return, loaduri,    { .v = NULL },  UrlBar }, +    { 0,                    GDK_Return, hideurl,    { 0 },          UrlBar },  }; @@ -10,7 +10,6 @@  #include <gdk/gdkkeysyms.h>  #include <string.h>  #include <unistd.h> -#include <getopt.h>  #include <stdlib.h>  #include <stdio.h>  #include <webkit/webkit.h> @@ -25,7 +24,7 @@ union Arg {  	const gboolean b;  	const gint i;  	const void *v; -} ; +};  typedef struct Client {  	GtkWidget *win, *scroll, *vbox, *urlbar, *searchbar, *indicator; @@ -45,10 +44,10 @@ typedef struct Cookie {  } Cookie;  typedef enum { -    BROWSER = 0x0001, -    SEARCHBAR = 0x0010, -    URLBAR = 0x0100, -    ALWAYS = ~0, +	Browser = 0x0001, +	SearchBar = 0x0010, +	UrlBar = 0x0100, +	Any = ~0,  } KeyFocus;  typedef struct { @@ -69,8 +68,6 @@ static GdkNativeWindow embed = 0;  static gboolean showxid = FALSE;  static gboolean ignore_once = FALSE;  static gchar *workdir; -extern char *optarg; -extern gint optind;  static void cleanup(void);  static void clipboard(Client *c, const Arg *arg); @@ -104,8 +101,7 @@ static void reload(Client *c, const Arg *arg);  static void rereadcookies(void);  static void setcookie(char *name, char *val, char *dom, char *path, long exp);  static void setup(void); -static void titlechange(WebKitWebView* view, WebKitWebFrame* frame, -		const gchar* title, Client *c); +static void titlechange(WebKitWebView* view, WebKitWebFrame* frame, const gchar* title, Client *c);  static void scroll(Client *c, const Arg *arg);  static void searchtext(Client *c, const Arg *arg);  static void source(Client *c, const Arg *arg); @@ -277,11 +273,11 @@ keypress(GtkWidget* w, GdkEventKey *ev, Client *c) {  	if(ev->type != GDK_KEY_PRESS)  		return FALSE;  	if(GTK_WIDGET_HAS_FOCUS(c->searchbar)) -		focus = SEARCHBAR; +		focus = SearchBar;  	else if(GTK_WIDGET_HAS_FOCUS(c->urlbar)) -		focus = URLBAR; +		focus = UrlBar;  	else -		focus = BROWSER; +		focus = Browser;  	for(i = 0; i < LENGTH(keys); i++) {  		if(focus & keys[i].focus  				&& gdk_keyval_to_lower(ev->keyval) == keys[i].keyval @@ -585,6 +581,10 @@ setup(void) {  	SoupSession *s;  	FILE *tmp; +	gtk_init(NULL, NULL); +	if (!g_thread_supported()) +		g_thread_init(NULL); +  	dpy = GDK_DISPLAY();  	session = webkit_get_default_session();  	urlprop = XInternAtom(dpy, "_SURF_URL", False); @@ -719,45 +719,35 @@ zoom(Client *c, const Arg *arg) {  }  int main(int argc, char *argv[]) { -	Client *c; -	gint o, a; +	int i;  	Arg arg; +	Client *c; -	gtk_init(NULL, NULL); -	if (!g_thread_supported()) -		g_thread_init(NULL); -	while((o = getopt(argc, argv, "vhxe:")) != -1) -		switch(o) { -		case 'x': +	/* command line args */ +	for(i = 1, arg.v = NULL; i < argc; i++) { +		if(!strcmp(argv[i], "-x"))  			showxid = TRUE; -			break; -		case 'e': -			if(!(a = atoi(optarg))) +		else if(!strcmp(argv[i], "-e")) { +			if(++i < argc) +				embed = atoi(argv[i]); +			else  				usage(); -			embed = a; -			break; -		case 'v': +		} +		else if(!strcmp(argv[i], "-v"))  			die("surf-"VERSION", © 2009 surf engineers, see LICENSE for details\n"); -			break; -		default: +		else if(argv[i][0] == '-')  			usage(); -		} +		else +			arg.v = argv[i]; +	}  	setup(); -	if(optind + 1 == argc) { -		c = newclient(); -		arg.v = argv[optind]; -		if(strchr("./", argv[optind][0]) || strcmp("-", argv[optind]) == 0) -			loadfile(c, argv[optind]); +	c = newclient(); +	if(arg.v) { +		if(strchr("./", ((char *)arg.v)[0]) || strcmp("-", (char *)arg.v) == 0) +			loadfile(c, (char *)arg.v);  		else  			loaduri(c, &arg); -  	} -	else if(optind != argc) -		usage(); -	if(!clients) -		newclient(); - -  	gtk_main();  	cleanup();  	return EXIT_SUCCESS; | 
