#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
+#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <webkit/webkit.h>
gint progress;
gboolean sslfailed;
struct Client *next;
- gboolean zoomed;
+ gboolean zoomed, fullscreen;
} Client;
typedef struct {
static void drawindicator(Client *c);
static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c);
static void find(Client *c, const Arg *arg);
+static void fullscreen(Client *c, const Arg *arg);
static const char *getatom(Client *c, int a);
static char *geturi(Client *c);
static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
webkit_web_view_search_text(c->view, s, FALSE, forward, TRUE);
}
+void
+fullscreen(Client *c, const Arg *arg) {
+ if(c->fullscreen) {
+ gtk_window_unfullscreen(GTK_WINDOW(c->win));
+ } else {
+ gtk_window_fullscreen(GTK_WINDOW(c->win));
+ }
+ c->fullscreen = !c->fullscreen;
+}
+
const char *
getatom(Client *c, int a) {
static char buf[BUFSIZ];
void
loaduri(Client *c, const Arg *arg) {
- char *u;
+ char *u, *rp;
const char *uri = (char *)arg->v;
Arg a = { .b = FALSE };
if(strcmp(uri, "") == 0)
return;
- u = g_strrstr(uri, "://") ? g_strdup(uri)
- : g_strdup_printf("http://%s", uri);
+
+ /* In case it's a file path. */
+ if(uri[0] == '/') {
+ rp = realpath(uri, NULL);
+ u = g_strdup_printf("file://%s", rp);
+ free(rp);
+ } else {
+ u = g_strrstr(uri, "://") ? g_strdup(uri)
+ : g_strdup_printf("http://%s", uri);
+ }
+
/* prevents endless loop */
if(c->uri && strcmp(u, c->uri) == 0) {
reload(c, &a);
void
zoom(Client *c, const Arg *arg) {
c->zoomed = TRUE;
- if(arg->i < 0) /* zoom out */
+ if(arg->i < 0) {
+ /* zoom out */
webkit_web_view_zoom_out(c->view);
- else if(arg->i > 0) /* zoom in */
+ } else if(arg->i > 0) {
+ /* zoom in */
webkit_web_view_zoom_in(c->view);
- else { /* reset */
+ } else {
+ /* reset */
c->zoomed = FALSE;
webkit_web_view_set_zoom_level(c->view, 1.0);
}