Style update for indentation

This commit is contained in:
Quentin Rameau 2015-11-22 01:42:34 +01:00
parent 954a718197
commit 11fa5a7a4d
2 changed files with 158 additions and 181 deletions

View file

@ -10,7 +10,7 @@ static Bool showindicators = TRUE; /* Show indicators in window title */
static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */ static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */
static guint defaultfontsize = 12; /* Default font size */ static guint defaultfontsize = 12; /* Default font size */
static gfloat zoomlevel = 1.0; /* Default zoom level */ static gfloat zoomlevel = 1.0; /* Default zoom level */
/* Soup default features */ /* Soup default features */
static char *cookiefile = "~/.surf/cookies.txt"; static char *cookiefile = "~/.surf/cookies.txt";
@ -36,23 +36,23 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
WEBKIT_FIND_OPTIONS_WRAP_AROUND; WEBKIT_FIND_OPTIONS_WRAP_AROUND;
#define SETPROP(p, q) { \ #define SETPROP(p, q) { \
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"prop=\"`xprop -id $2 $0 " \ "prop=\"`xprop -id $2 $0 " \
"| sed \"s/^$0(STRING) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \ "| sed \"s/^$0(STRING) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
"| xargs -0 printf %b | dmenu`\" &&" \ "| xargs -0 printf %b | dmenu`\" &&" \
"xprop -id $2 -f $1 8s -set $1 \"$prop\"", \ "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
p, q, winid, NULL \ p, q, winid, NULL \
} \ } \
} }
/* DOWNLOAD(URI, referer) */ /* DOWNLOAD(URI, referer) */
#define DOWNLOAD(d, r) { \ #define DOWNLOAD(d, r) { \
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"st -e /bin/sh -c \"curl -L -J -O --user-agent '$1'" \ "st -e /bin/sh -c \"curl -L -J -O --user-agent '$1'" \
" --referer '$2' -b $3 -c $3 '$0';" \ " --referer '$2' -b $3 -c $3 '$0';" \
" sleep 5;\"", \ " sleep 5;\"", \
d, useragent, r, cookiefile, NULL \ d, useragent, r, cookiefile, NULL \
} \ } \
} }
/* PLUMB(URI) */ /* PLUMB(URI) */
@ -60,16 +60,16 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
* "http://" or "https://" should be opened. * "http://" or "https://" should be opened.
*/ */
#define PLUMB(u) {\ #define PLUMB(u) {\
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"xdg-open \"$0\"", u, NULL \ "xdg-open \"$0\"", u, NULL \
} \ } \
} }
/* VIDEOPLAY(URI) */ /* VIDEOPLAY(URI) */
#define VIDEOPLAY(u) {\ #define VIDEOPLAY(u) {\
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"mpv --really-quiet \"$0\"", u, NULL \ "mpv --really-quiet \"$0\"", u, NULL \
} \ } \
} }
/* styles */ /* styles */
@ -90,7 +90,7 @@ static SiteStyle styles[] = {
* edit the CLEANMASK() macro. * edit the CLEANMASK() macro.
*/ */
static Key keys[] = { static Key keys[] = {
/* modifier keyval function arg */ /* modifier keyval function arg */
{ MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") }, { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") },
{ MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
{ MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },

297
surf.c
View file

@ -122,7 +122,7 @@ static void runscript(Client *c);
static void evalscript(Client *c, const char *jsstr, ...); static void evalscript(Client *c, const char *jsstr, ...);
static void updatewinid(Client *c); static void updatewinid(Client *c);
static void handleplumb(Client *c, const gchar *uri); static void handleplumb(Client *c, const gchar *uri);
static void newwindow(Client *c, const Arg *arg, gboolean noembed); static void newwindow(Client *c, const Arg *a, gboolean noembed);
static void spawn(Client *c, const Arg *a); static void spawn(Client *c, const Arg *a);
static void destroyclient(Client *c); static void destroyclient(Client *c);
static void cleanup(void); static void cleanup(void);
@ -130,7 +130,7 @@ static void cleanup(void);
/* GTK/WebKit */ /* GTK/WebKit */
static WebKitWebView *newview(Client *c, WebKitWebView *rv); static WebKitWebView *newview(Client *c, WebKitWebView *rv);
static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a, static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a,
Client *c); Client *c);
static gboolean buttonreleased(GtkWidget *w, GdkEventKey *e, Client *c); static gboolean buttonreleased(GtkWidget *w, GdkEventKey *e, Client *c);
static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key, static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key,
GdkModifierType mods, Client *c); GdkModifierType mods, Client *c);
@ -143,16 +143,16 @@ static void loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c);
static void progresschanged(WebKitWebView *v, GParamSpec *ps, Client *c); static void progresschanged(WebKitWebView *v, GParamSpec *ps, Client *c);
static void titlechanged(WebKitWebView *view, GParamSpec *ps, Client *c); static void titlechanged(WebKitWebView *view, GParamSpec *ps, Client *c);
static void mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, static void mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h,
guint modifiers, Client *c); guint modifiers, Client *c);
static gboolean permissionrequested(WebKitWebView *v, static gboolean permissionrequested(WebKitWebView *v,
WebKitPermissionRequest *r, Client *c); WebKitPermissionRequest *r, Client *c);
static gboolean decidepolicy(WebKitWebView *v, WebKitPolicyDecision *d, static gboolean decidepolicy(WebKitWebView *v, WebKitPolicyDecision *d,
WebKitPolicyDecisionType dt, Client *c); WebKitPolicyDecisionType dt, Client *c);
static void decidenavigation(WebKitPolicyDecision *d, Client *c); static void decidenavigation(WebKitPolicyDecision *d, Client *c);
static void decidenewwindow(WebKitPolicyDecision *d, Client *c); static void decidenewwindow(WebKitPolicyDecision *d, Client *c);
static void decideresource(WebKitPolicyDecision *d, Client *c); static void decideresource(WebKitPolicyDecision *d, Client *c);
static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d, static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d,
Client *c); Client *c);
static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c); static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
static void download(Client *c, WebKitURIResponse *r); static void download(Client *c, WebKitURIResponse *r);
static void closeview(WebKitWebView *v, Client *c); static void closeview(WebKitWebView *v, Client *c);
@ -160,18 +160,18 @@ static void destroywin(GtkWidget* w, Client *c);
/* Hotkeys */ /* Hotkeys */
static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d); static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
static void reload(Client *c, const Arg *arg); static void reload(Client *c, const Arg *a);
static void print(Client *c, const Arg *a); static void print(Client *c, const Arg *a);
static void clipboard(Client *c, const Arg *a); static void clipboard(Client *c, const Arg *a);
static void zoom(Client *c, const Arg *a); static void zoom(Client *c, const Arg *a);
static void scroll_v(Client *c, const Arg *a); static void scroll_v(Client *c, const Arg *a);
static void scroll_h(Client *c, const Arg *a); static void scroll_h(Client *c, const Arg *a);
static void navigate(Client *c, const Arg *a); static void navigate(Client *c, const Arg *a);
static void stop(Client *c, const Arg *arg); static void stop(Client *c, const Arg *a);
static void toggle(Client *c, const Arg *a); static void toggle(Client *c, const Arg *a);
static void togglefullscreen(Client *c, const Arg *a); static void togglefullscreen(Client *c, const Arg *a);
static void togglecookiepolicy(Client *c, const Arg *arg); static void togglecookiepolicy(Client *c, const Arg *a);
static void togglestyle(Client *c, const Arg *arg); static void togglestyle(Client *c, const Arg *a);
static void toggleinspector(Client *c, const Arg *a); static void toggleinspector(Client *c, const Arg *a);
static void find(Client *c, const Arg *a); static void find(Client *c, const Arg *a);
@ -236,9 +236,9 @@ setup(void)
scriptfile = buildfile(scriptfile); scriptfile = buildfile(scriptfile);
cachedir = buildpath(cachedir); cachedir = buildpath(cachedir);
if (stylefile == NULL) { if (!stylefile) {
styledir = buildpath(styledir); styledir = buildpath(styledir);
for (i = 0; i < LENGTH(styles); i++) { for (i = 0; i < LENGTH(styles); ++i) {
if (regcomp(&(styles[i].re), styles[i].regex, if (regcomp(&(styles[i].re), styles[i].regex,
REG_EXTENDED)) { REG_EXTENDED)) {
fprintf(stderr, fprintf(stderr,
@ -247,7 +247,7 @@ setup(void)
styles[i].regex = NULL; styles[i].regex = NULL;
} }
styles[i].style = g_strconcat(styledir, "/", styles[i].style = g_strconcat(styledir, "/",
styles[i].style, NULL); styles[i].style, NULL);
} }
g_free(styledir); g_free(styledir);
} else { } else {
@ -365,7 +365,7 @@ loaduri(Client *c, const Arg *a)
{ {
struct stat st; struct stat st;
char *url, *path; char *url, *path;
const char *uri = (char *)a->v; const char *uri = a->v;
if (g_strcmp0(uri, "") == 0) if (g_strcmp0(uri, "") == 0)
return; return;
@ -420,11 +420,10 @@ getatom(Client *c, int a)
unsigned long ldummy; unsigned long ldummy;
unsigned char *p = NULL; unsigned char *p = NULL;
XGetWindowProperty(dpy, c->xid, XGetWindowProperty(dpy, c->xid, atoms[a], 0L, BUFSIZ, False, XA_STRING,
atoms[a], 0L, BUFSIZ, False, XA_STRING, &adummy, &idummy, &ldummy, &ldummy, &p);
&adummy, &idummy, &ldummy, &ldummy, &p);
if (p) if (p)
strncpy(buf, (char *)p, LENGTH(buf)-1); strncpy(buf, (char *)p, LENGTH(buf) - 1);
else else
buf[0] = '\0'; buf[0] = '\0';
XFree(p); XFree(p);
@ -443,19 +442,19 @@ updatetitle(Client *c)
if (c->progress != 100) { if (c->progress != 100) {
title = g_strdup_printf("[%i%%] %s:%s | %s", title = g_strdup_printf("[%i%%] %s:%s | %s",
c->progress, togglestats, pagestats, c->progress, togglestats, pagestats,
c->targeturi ? c->targeturi : c->title); c->targeturi ? c->targeturi : c->title);
} else { } else {
title = g_strdup_printf("%s:%s | %s", title = g_strdup_printf("%s:%s | %s",
togglestats, pagestats, togglestats, pagestats,
c->targeturi ? c->targeturi : c->title); c->targeturi ? c->targeturi : c->title);
} }
gtk_window_set_title(GTK_WINDOW(c->win), title); gtk_window_set_title(GTK_WINDOW(c->win), title);
g_free(title); g_free(title);
} else { } else {
gtk_window_set_title(GTK_WINDOW(c->win), c->title ? gtk_window_set_title(GTK_WINDOW(c->win), c->title ?
c->title : ""); c->title : "");
} }
} }
@ -463,13 +462,13 @@ void
gettogglestats(Client *c) gettogglestats(Client *c)
{ {
togglestats[0] = cookiepolicy_set(cookiepolicy_get()); togglestats[0] = cookiepolicy_set(cookiepolicy_get());
togglestats[1] = enablecaretbrowsing ? 'C' : 'c'; togglestats[1] = enablecaretbrowsing ? 'C' : 'c';
togglestats[2] = allowgeolocation ? 'G' : 'g'; togglestats[2] = allowgeolocation ? 'G' : 'g';
togglestats[3] = enablecache ? 'D' : 'd'; togglestats[3] = enablecache ? 'D' : 'd';
togglestats[4] = loadimages ? 'I' : 'i'; togglestats[4] = loadimages ? 'I' : 'i';
togglestats[5] = enablescripts ? 'S': 's'; togglestats[5] = enablescripts ? 'S' : 's';
togglestats[6] = enableplugins ? 'V' : 'v'; togglestats[6] = enableplugins ? 'V' : 'v';
togglestats[7] = enablestyle ? 'M' : 'm'; togglestats[7] = enablestyle ? 'M' : 'm';
togglestats[8] = enableframeflattening ? 'F' : 'f'; togglestats[8] = enableframeflattening ? 'F' : 'f';
togglestats[9] = '\0'; togglestats[9] = '\0';
} }
@ -478,7 +477,7 @@ void
getpagestats(Client *c) getpagestats(Client *c)
{ {
pagestats[0] = c->tlsflags > G_TLS_CERTIFICATE_VALIDATE_ALL ? '-' : pagestats[0] = c->tlsflags > G_TLS_CERTIFICATE_VALIDATE_ALL ? '-' :
c->tlsflags > 0 ? 'U' : 'T'; c->tlsflags > 0 ? 'U' : 'T';
pagestats[1] = '\0'; pagestats[1] = '\0';
} }
@ -499,9 +498,9 @@ cookiepolicy_get(void)
} }
char char
cookiepolicy_set(const WebKitCookieAcceptPolicy ep) cookiepolicy_set(const WebKitCookieAcceptPolicy p)
{ {
switch (ep) { switch (p) {
case WEBKIT_COOKIE_POLICY_ACCEPT_NEVER: case WEBKIT_COOKIE_POLICY_ACCEPT_NEVER:
return 'a'; return 'a';
case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY: case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY:
@ -519,12 +518,12 @@ getstyle(const char *uri)
{ {
int i; int i;
if (stylefile != NULL) if (stylefile)
return stylefile; return stylefile;
for (i = 0; i < LENGTH(styles); i++) { for (i = 0; i < LENGTH(styles); ++i) {
if (styles[i].regex && !regexec(&(styles[i].re), uri, 0, if (styles[i].regex &&
NULL, 0)) !regexec(&(styles[i].re), uri, 0, NULL, 0))
return styles[i].style; return styles[i].style;
} }
@ -585,10 +584,8 @@ updatewinid(Client *c)
void void
handleplumb(Client *c, const gchar *uri) handleplumb(Client *c, const gchar *uri)
{ {
Arg arg; Arg a = (Arg)PLUMB(uri);
spawn(c, &a);
arg = (Arg)PLUMB(uri);
spawn(c, &arg);
} }
void void
@ -645,14 +642,14 @@ newwindow(Client *c, const Arg *a, int noembed)
} }
void void
spawn(Client *c, const Arg *arg) spawn(Client *c, const Arg *a)
{ {
if (fork() == 0) { if (fork() == 0) {
if (dpy) if (dpy)
close(ConnectionNumber(dpy)); close(ConnectionNumber(dpy));
setsid(); setsid();
execvp(((char **)arg->v)[0], (char **)arg->v); execvp(((char **)a->v)[0], (char **)a->v);
fprintf(stderr, "surf: execvp %s", ((char **)arg->v)[0]); fprintf(stderr, "surf: execvp %s", ((char **)a->v)[0]);
perror(" failed"); perror(" failed");
exit(0); exit(0);
} }
@ -702,19 +699,19 @@ newview(Client *c, WebKitWebView *rv)
webkit_web_view_new_with_related_view(rv)); webkit_web_view_new_with_related_view(rv));
} else { } else {
settings = webkit_settings_new_with_settings( settings = webkit_settings_new_with_settings(
"auto-load-images", loadimages, "auto-load-images", loadimages,
"default-font-size", defaultfontsize, "default-font-size", defaultfontsize,
"enable-caret-browsing", enablecaretbrowsing, "enable-caret-browsing", enablecaretbrowsing,
"enable-developer-extras", enableinspector, "enable-developer-extras", enableinspector,
"enable-dns-prefetching", enablednsprefetching, "enable-dns-prefetching", enablednsprefetching,
"enable-frame-flattening", enableframeflattening, "enable-frame-flattening", enableframeflattening,
"enable-html5-database", enablecache, "enable-html5-database", enablecache,
"enable-html5-local-storage", enablecache, "enable-html5-local-storage", enablecache,
"enable-javascript", enablescripts, "enable-javascript", enablescripts,
"enable-plugins", enableplugins, "enable-plugins", enableplugins,
NULL); NULL);
/* Have a look at http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html /* For mor interesting settings, have a look at
* for more interesting settings */ * http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html */
if (strcmp(fulluseragent, "")) { if (strcmp(fulluseragent, "")) {
webkit_settings_set_user_agent(settings, fulluseragent); webkit_settings_set_user_agent(settings, fulluseragent);
@ -727,21 +724,23 @@ newview(Client *c, WebKitWebView *rv)
contentmanager = webkit_user_content_manager_new(); contentmanager = webkit_user_content_manager_new();
context = webkit_web_context_new_with_website_data_manager( context = webkit_web_context_new_with_website_data_manager(
webkit_website_data_manager_new( webkit_website_data_manager_new(
"base-cache-directory", cachedir, "base-cache-directory", cachedir,
"base-data-directory", cachedir, "base-data-directory", cachedir,
NULL)); NULL));
/* rendering process model, can be a shared unique one or one for each /* rendering process model, can be a shared unique one
* view */ * or one for each view */
webkit_web_context_set_process_model(context, webkit_web_context_set_process_model(context,
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
/* ssl */ /* ssl */
webkit_web_context_set_tls_errors_policy(context, strictssl ? webkit_web_context_set_tls_errors_policy(context, strictssl ?
WEBKIT_TLS_ERRORS_POLICY_FAIL : WEBKIT_TLS_ERRORS_POLICY_IGNORE); WEBKIT_TLS_ERRORS_POLICY_FAIL :
WEBKIT_TLS_ERRORS_POLICY_IGNORE);
/* disk cache */ /* disk cache */
webkit_web_context_set_cache_model(context, enablecache ? webkit_web_context_set_cache_model(context, enablecache ?
WEBKIT_CACHE_MODEL_WEB_BROWSER : WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); WEBKIT_CACHE_MODEL_WEB_BROWSER :
WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);
/* Currently only works with text file to be compatible with curl */ /* Currently only works with text file to be compatible with curl */
webkit_cookie_manager_set_persistent_storage( webkit_cookie_manager_set_persistent_storage(
@ -753,7 +752,7 @@ newview(Client *c, WebKitWebView *rv)
cookiepolicy_get()); cookiepolicy_get());
g_signal_connect(G_OBJECT(context), "download-started", g_signal_connect(G_OBJECT(context), "download-started",
G_CALLBACK(downloadstarted), c); G_CALLBACK(downloadstarted), c);
v = g_object_new(WEBKIT_TYPE_WEB_VIEW, v = g_object_new(WEBKIT_TYPE_WEB_VIEW,
"settings", settings, "settings", settings,
@ -762,31 +761,23 @@ newview(Client *c, WebKitWebView *rv)
NULL); NULL);
} }
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "notify::title",
"notify::title",
G_CALLBACK(titlechanged), c); G_CALLBACK(titlechanged), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "mouse-target-changed",
"mouse-target-changed",
G_CALLBACK(mousetargetchanged), c); G_CALLBACK(mousetargetchanged), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "permission-request",
"permission-request",
G_CALLBACK(permissionrequested), c); G_CALLBACK(permissionrequested), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "create",
"create",
G_CALLBACK(createview), c); G_CALLBACK(createview), c);
g_signal_connect(G_OBJECT(v), "ready-to-show", g_signal_connect(G_OBJECT(v), "ready-to-show",
G_CALLBACK(showview), c); G_CALLBACK(showview), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "decide-policy",
"decide-policy",
G_CALLBACK(decidepolicy), c); G_CALLBACK(decidepolicy), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "load-changed",
"load-changed",
G_CALLBACK(loadchanged), c); G_CALLBACK(loadchanged), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "notify::estimated-load-progress",
"notify::estimated-load-progress",
G_CALLBACK(progresschanged), c); G_CALLBACK(progresschanged), c);
g_signal_connect(G_OBJECT(v), g_signal_connect(G_OBJECT(v), "button-release-event",
"button-release-event",
G_CALLBACK(buttonreleased), c); G_CALLBACK(buttonreleased), c);
g_signal_connect(G_OBJECT(v), "close", g_signal_connect(G_OBJECT(v), "close",
G_CALLBACK(closeview), c); G_CALLBACK(closeview), c);
@ -806,10 +797,8 @@ createview(WebKitWebView *v, WebKitNavigationAction *a, Client *c)
* by user gesture, so inverse the logic here * by user gesture, so inverse the logic here
*/ */
/* instead of this, compare destination uri to mouse-over uri for validating window */ /* instead of this, compare destination uri to mouse-over uri for validating window */
if (webkit_navigation_action_is_user_gesture(a)) { if (webkit_navigation_action_is_user_gesture(a))
return NULL; return NULL;
break;
}
case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
@ -819,7 +808,6 @@ createview(WebKitWebView *v, WebKitNavigationAction *a, Client *c)
break; break;
default: default:
return NULL; return NULL;
break;
} }
return GTK_WIDGET(n->view); return GTK_WIDGET(n->view);
@ -874,7 +862,7 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
{ {
Client *c = (Client *)d; Client *c = (Client *)d;
XPropertyEvent *ev; XPropertyEvent *ev;
Arg arg; Arg a;
if (((XEvent *)e)->type == PropertyNotify) { if (((XEvent *)e)->type == PropertyNotify) {
ev = &((XEvent *)e)->xproperty; ev = &((XEvent *)e)->xproperty;
@ -884,8 +872,8 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
return GDK_FILTER_REMOVE; return GDK_FILTER_REMOVE;
} else if (ev->atom == atoms[AtomGo]) { } else if (ev->atom == atoms[AtomGo]) {
arg.v = getatom(c, AtomGo); a.v = getatom(c, AtomGo);
loaduri(c, &arg); loaduri(c, &a);
return GDK_FILTER_REMOVE; return GDK_FILTER_REMOVE;
} }
@ -906,7 +894,7 @@ winevent(GtkWidget *w, GdkEvent *e, Client *c)
if (e->window_state.changed_mask == if (e->window_state.changed_mask ==
GDK_WINDOW_STATE_FULLSCREEN) { GDK_WINDOW_STATE_FULLSCREEN) {
c->fullscreen = e->window_state.new_window_state & c->fullscreen = e->window_state.new_window_state &
GDK_WINDOW_STATE_FULLSCREEN; GDK_WINDOW_STATE_FULLSCREEN;
break; break;
} }
default: default:
@ -923,49 +911,43 @@ showview(WebKitWebView *v, Client *c)
GdkRGBA bgcolor = { 0 }; GdkRGBA bgcolor = { 0 };
GdkWindow *gwin; GdkWindow *gwin;
c->win = createwindow(c); c->finder = webkit_web_view_get_find_controller(c->view);
if (enableinspector) if (enableinspector)
c->inspector = webkit_web_view_get_inspector(c->view); c->inspector = webkit_web_view_get_inspector(c->view);
c->finder = webkit_web_view_get_find_controller(c->view); c->win = createwindow(c);
if (!kioskmode)
addaccelgroup(c);
/* Arranging */
gtk_container_add(GTK_CONTAINER(c->win), GTK_WIDGET(c->view)); gtk_container_add(GTK_CONTAINER(c->win), GTK_WIDGET(c->view));
gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints,
/* Setup */ GDK_HINT_MIN_SIZE);
gtk_widget_show_all(c->win);
gtk_widget_grab_focus(GTK_WIDGET(c->view)); gtk_widget_grab_focus(GTK_WIDGET(c->view));
gtk_widget_show(GTK_WIDGET(c->view));
gtk_widget_show(c->win);
gwin = gtk_widget_get_window(GTK_WIDGET(c->win)); gwin = gtk_widget_get_window(GTK_WIDGET(c->win));
c->xid = gdk_x11_window_get_xid(gwin); c->xid = gdk_x11_window_get_xid(gwin);
gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints, updatewinid(c);
GDK_HINT_MIN_SIZE); if (showxid) {
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK); gdk_display_sync(gtk_widget_get_display(c->win));
gdk_window_add_filter(gwin, processx, c); puts(winid);
}
if (zoomlevel != 1.0) if (hidebackground)
webkit_web_view_set_zoom_level(c->view, zoomlevel); webkit_web_view_set_background_color(c->view, &bgcolor);
if (!kioskmode) {
addaccelgroup(c);
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(gwin, processx, c);
}
if (runinfullscreen) if (runinfullscreen)
togglefullscreen(c, NULL); togglefullscreen(c, NULL);
if (zoomlevel != 1.0)
webkit_web_view_set_zoom_level(c->view, zoomlevel);
setatom(c, AtomFind, ""); setatom(c, AtomFind, "");
setatom(c, AtomUri, "about:blank"); setatom(c, AtomUri, "about:blank");
if (hidebackground)
webkit_web_view_set_background_color(c->view, &bgcolor);
if (showxid) {
gdk_display_sync(gtk_widget_get_display(c->win));
printf("%lu\n", c->xid);
fflush(NULL);
if (fclose(stdout) != 0) {
die("Error closing stdout");
}
}
} }
GtkWidget * GtkWidget *
@ -996,11 +978,11 @@ createwindow(Client *c)
} }
g_signal_connect(G_OBJECT(w), "destroy", g_signal_connect(G_OBJECT(w), "destroy",
G_CALLBACK(destroywin), c); G_CALLBACK(destroywin), c);
g_signal_connect(G_OBJECT(w), "leave-notify-event", g_signal_connect(G_OBJECT(w), "leave-notify-event",
G_CALLBACK(winevent), c); G_CALLBACK(winevent), c);
g_signal_connect(G_OBJECT(w), "window-state-event", g_signal_connect(G_OBJECT(w), "window-state-event",
G_CALLBACK(winevent), c); G_CALLBACK(winevent), c);
return w; return w;
} }
@ -1016,7 +998,8 @@ loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c)
setatom(c, AtomUri, geturi(c)); setatom(c, AtomUri, geturi(c));
break; break;
case WEBKIT_LOAD_COMMITTED: case WEBKIT_LOAD_COMMITTED:
if (!webkit_web_view_get_tls_info(c->view, NULL, &(c->tlsflags))) if (!webkit_web_view_get_tls_info(c->view, NULL,
&(c->tlsflags)))
c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1; c->tlsflags = G_TLS_CERTIFICATE_VALIDATE_ALL + 1;
setatom(c, AtomUri, geturi(c)); setatom(c, AtomUri, geturi(c));
@ -1040,7 +1023,7 @@ void
progresschanged(WebKitWebView *v, GParamSpec *ps, Client *c) progresschanged(WebKitWebView *v, GParamSpec *ps, Client *c)
{ {
c->progress = webkit_web_view_get_estimated_load_progress(c->view) * c->progress = webkit_web_view_get_estimated_load_progress(c->view) *
100; 100;
updatetitle(c); updatetitle(c);
} }
@ -1055,13 +1038,11 @@ void
mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, guint modifiers, mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, guint modifiers,
Client *c) Client *c)
{ {
WebKitHitTestResultContext hc; WebKitHitTestResultContext hc = webkit_hit_test_result_get_context(h);
/* Keep the hit test to know where is the pointer on the next click */ /* Keep the hit test to know where is the pointer on the next click */
c->mousepos = h; c->mousepos = h;
hc = webkit_hit_test_result_get_context(h);
if (hc & OnLink) if (hc & OnLink)
c->targeturi = webkit_hit_test_result_get_link_uri(h); c->targeturi = webkit_hit_test_result_get_link_uri(h);
else if (hc & OnImg) else if (hc & OnImg)
@ -1111,9 +1092,8 @@ decidepolicy(WebKitWebView *v, WebKitPolicyDecision *d,
void void
decidenavigation(WebKitPolicyDecision *d, Client *c) decidenavigation(WebKitPolicyDecision *d, Client *c)
{ {
WebKitNavigationAction *a; WebKitNavigationAction *a =
webkit_navigation_policy_decision_get_navigation_action(
a = webkit_navigation_policy_decision_get_navigation_action(
WEBKIT_NAVIGATION_POLICY_DECISION(d)); WEBKIT_NAVIGATION_POLICY_DECISION(d));
switch (webkit_navigation_action_get_navigation_type(a)) { switch (webkit_navigation_action_get_navigation_type(a)) {
@ -1121,7 +1101,7 @@ decidenavigation(WebKitPolicyDecision *d, Client *c)
case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED: case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
default: default:
/* Do not navigate to links with a "_blank" target (popup) */ /* Do not navigate to links with a "_blank" target (popup) */
@ -1141,12 +1121,12 @@ decidenavigation(WebKitPolicyDecision *d, Client *c)
void void
decidenewwindow(WebKitPolicyDecision *d, Client *c) decidenewwindow(WebKitPolicyDecision *d, Client *c)
{ {
WebKitNavigationAction *a;
Arg arg; Arg arg;
WebKitNavigationAction *a =
a = webkit_navigation_policy_decision_get_navigation_action( webkit_navigation_policy_decision_get_navigation_action(
WEBKIT_NAVIGATION_POLICY_DECISION(d)); WEBKIT_NAVIGATION_POLICY_DECISION(d));
switch (webkit_navigation_action_get_navigation_type(a)) { switch (webkit_navigation_action_get_navigation_type(a)) {
case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
@ -1157,7 +1137,7 @@ decidenewwindow(WebKitPolicyDecision *d, Client *c)
/* If the value of “mouse-button” is not 0, then the navigation was triggered by a mouse event. /* If the value of “mouse-button” is not 0, then the navigation was triggered by a mouse event.
* test for link clicked but no button ? */ * test for link clicked but no button ? */
arg.v = webkit_uri_request_get_uri( arg.v = webkit_uri_request_get_uri(
webkit_navigation_action_get_request(a)); webkit_navigation_action_get_request(a));
newwindow(c, &arg, 0); newwindow(c, &arg, 0);
break; break;
case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */ case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
@ -1171,13 +1151,11 @@ decidenewwindow(WebKitPolicyDecision *d, Client *c)
void void
decideresource(WebKitPolicyDecision *d, Client *c) decideresource(WebKitPolicyDecision *d, Client *c)
{ {
const gchar *uri;
int i, isascii = 1; int i, isascii = 1;
WebKitResponsePolicyDecision *r = WEBKIT_RESPONSE_POLICY_DECISION(d); WebKitResponsePolicyDecision *r = WEBKIT_RESPONSE_POLICY_DECISION(d);
WebKitURIResponse *res; WebKitURIResponse *res =
webkit_response_policy_decision_get_response(r);
res = webkit_response_policy_decision_get_response(r); const gchar *uri = webkit_uri_response_get_uri(res);
uri = webkit_uri_response_get_uri(res);
if (g_str_has_suffix(uri, "/favicon.ico")) if (g_str_has_suffix(uri, "/favicon.ico"))
webkit_uri_request_set_uri( webkit_uri_request_set_uri(
@ -1215,7 +1193,7 @@ void
downloadstarted(WebKitWebContext *wc, WebKitDownload *d, Client *c) downloadstarted(WebKitWebContext *wc, WebKitDownload *d, Client *c)
{ {
g_signal_connect(G_OBJECT(d), "notify::response", g_signal_connect(G_OBJECT(d), "notify::response",
G_CALLBACK(responsereceived), c); G_CALLBACK(responsereceived), c);
} }
void void
@ -1228,9 +1206,7 @@ responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c)
void void
download(Client *c, WebKitURIResponse *r) download(Client *c, WebKitURIResponse *r)
{ {
Arg a; Arg a = (Arg)DOWNLOAD(webkit_uri_response_get_uri(r), geturi(c));
a = (Arg)DOWNLOAD(webkit_uri_response_get_uri(r), geturi(c));
spawn(c, &a); spawn(c, &a);
} }
@ -1244,22 +1220,22 @@ void
destroywin(GtkWidget* w, Client *c) destroywin(GtkWidget* w, Client *c)
{ {
destroyclient(c); destroyclient(c);
if (clients == NULL) if (!clients)
gtk_main_quit(); gtk_main_quit();
} }
void void
pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
{ {
Arg arg = {.v = text }; Arg a = {.v = text };
if (text != NULL) if (!text)
loaduri((Client *) d, &arg); loaduri((Client *) d, &a);
} }
void void
reload(Client *c, const Arg *arg) reload(Client *c, const Arg *a)
{ {
gboolean nocache = *(gboolean *)arg; gboolean nocache = *(gboolean *)a;
if (nocache) if (nocache)
webkit_web_view_reload_bypass_cache(c->view); webkit_web_view_reload_bypass_cache(c->view);
else else
@ -1270,7 +1246,7 @@ void
print(Client *c, const Arg *a) print(Client *c, const Arg *a)
{ {
webkit_print_operation_run_dialog(webkit_print_operation_new(c->view), webkit_print_operation_run_dialog(webkit_print_operation_new(c->view),
GTK_WINDOW(c->win)); GTK_WINDOW(c->win));
} }
void void
@ -1304,14 +1280,14 @@ void
scroll_v(Client *c, const Arg *a) scroll_v(Client *c, const Arg *a)
{ {
evalscript(c, "window.scrollBy(0, %d * (window.innerHeight / 100))", evalscript(c, "window.scrollBy(0, %d * (window.innerHeight / 100))",
a->i); a->i);
} }
void void
scroll_h(Client *c, const Arg *a) scroll_h(Client *c, const Arg *a)
{ {
evalscript(c, "window.scrollBy(%d * (window.innerWidth / 100), 0)", evalscript(c, "window.scrollBy(%d * (window.innerWidth / 100), 0)",
a->i); a->i);
} }
void void
@ -1324,7 +1300,7 @@ navigate(Client *c, const Arg *a)
} }
void void
stop(Client *c, const Arg *arg) stop(Client *c, const Arg *a)
{ {
webkit_web_view_stop_loading(c->view); webkit_web_view_stop_loading(c->view);
} }
@ -1332,9 +1308,7 @@ stop(Client *c, const Arg *arg)
void void
toggle(Client *c, const Arg *a) toggle(Client *c, const Arg *a)
{ {
WebKitSettings *s; WebKitSettings *s = webkit_web_view_get_settings(c->view);
s = webkit_web_view_get_settings(c->view);
switch ((unsigned int)a->i) { switch ((unsigned int)a->i) {
case CaretBrowsing: case CaretBrowsing:
@ -1390,7 +1364,7 @@ togglefullscreen(Client *c, const Arg *a)
} }
void void
togglecookiepolicy(Client *c, const Arg *arg) togglecookiepolicy(Client *c, const Arg *a)
{ {
++cookiepolicy; ++cookiepolicy;
cookiepolicy %= strlen(cookiepolicies); cookiepolicy %= strlen(cookiepolicies);
@ -1405,7 +1379,7 @@ togglecookiepolicy(Client *c, const Arg *arg)
} }
void void
togglestyle(Client *c, const Arg *arg) togglestyle(Client *c, const Arg *a)
{ {
enablestyle = !enablestyle; enablestyle = !enablestyle;
setstyle(c, enablestyle ? getstyle(geturi(c)) : ""); setstyle(c, enablestyle ? getstyle(geturi(c)) : "");
@ -1439,9 +1413,11 @@ find(Client *c, const Arg *a)
f = webkit_find_controller_get_search_text(c->finder); f = webkit_find_controller_get_search_text(c->finder);
if (g_strcmp0(f, s) == 0) /* reset search */ if (g_strcmp0(f, s) == 0) /* reset search */
webkit_find_controller_search(c->finder, "", findopts, G_MAXUINT); webkit_find_controller_search(c->finder, "", findopts,
G_MAXUINT);
webkit_find_controller_search(c->finder, s, findopts, G_MAXUINT); webkit_find_controller_search(c->finder, s, findopts,
G_MAXUINT);
if (strcmp(s, "") == 0) if (strcmp(s, "") == 0)
webkit_find_controller_search_finish(c->finder); webkit_find_controller_search_finish(c->finder);
@ -1580,6 +1556,7 @@ main(int argc, char *argv[])
setup(); setup();
c = newclient(NULL); c = newclient(NULL);
showview(NULL, c); showview(NULL, c);
if (arg.v) if (arg.v)
loaduri(clients, &arg); loaduri(clients, &arg);
else else