const char *needle;
gint progress;
struct Client *next;
- gboolean zoomed, fullscreen;
+ gboolean fullscreen;
} Client;
typedef struct {
guint modifiers, Client *c);
static void loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c);
static void loaduri(Client *c, const Arg *arg);
-static void navigate(Client *c, const Arg *arg);
+static void navigate(Client *c, const Arg *a);
static Client *newclient(Client *c);
static WebKitWebView *newview(Client *c, WebKitWebView *rv);
static void showview(WebKitWebView *v, Client *c);
static void linkopen(Client *c, const Arg *arg);
static void linkopenembed(Client *c, const Arg *arg);
static void reload(Client *c, const Arg *arg);
-static void scroll_h(Client *c, const Arg *arg);
-static void scroll_v(Client *c, const Arg *arg);
-static void scroll(GtkAdjustment *a, const Arg *arg);
+static void scroll_h(Client *c, const Arg *a);
+static void scroll_v(Client *c, const Arg *a);
static void setatom(Client *c, int a, const char *v);
static void setup(void);
static void sigchld(int unused);
static void toggle(Client *c, const Arg *arg);
static void togglecookiepolicy(Client *c, const Arg *arg);
static void togglegeolocation(Client *c, const Arg *arg);
-static void togglescrollbars(Client *c, const Arg *arg);
static void togglestyle(Client *c, const Arg *arg);
static void updatetitle(Client *c);
static void updatewinid(Client *c);
static void usage(void);
-static void zoom(Client *c, const Arg *arg);
+static void zoom(Client *c, const Arg *a);
/* configuration, allows nested code to access above variables */
#include "config.h"
}
void
-navigate(Client *c, const Arg *arg)
+navigate(Client *c, const Arg *a)
{
- int steps = *(int *)arg;
- webkit_web_view_go_back_or_forward(c->view, steps);
+ if (a->i < 0)
+ webkit_web_view_go_back(c->view);
+ else if (a->i > 0)
+ webkit_web_view_go_forward(c->view);
}
Client *
gdk_window_set_events(gwin, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(gwin, processx, c);
- /* This might conflict with _zoomto96dpi_. */
if (zoomlevel != 1.0)
webkit_web_view_set_zoom_level(c->view, zoomlevel);
}
void
-scroll_h(Client *c, const Arg *arg)
+scroll_h(Client *c, const Arg *a)
{
- scroll(gtk_scrolled_window_get_hadjustment(
- GTK_SCROLLED_WINDOW(c->scroll)), arg);
+ evalscript(c, "window.scrollBy(%d * (window.innerWidth / 100), 0)",
+ a->i);
}
void
-scroll_v(Client *c, const Arg *arg)
+scroll_v(Client *c, const Arg *a)
{
- scroll(gtk_scrolled_window_get_vadjustment(
- GTK_SCROLLED_WINDOW(c->scroll)), arg);
-}
-
-void
-scroll(GtkAdjustment *a, const Arg *arg)
-{
- gdouble v;
-
- v = gtk_adjustment_get_value(a);
- switch (arg->i) {
- case +10000:
- case -10000:
- v += gtk_adjustment_get_page_increment(a) * (arg->i / 10000);
- break;
- case +20000:
- case -20000:
- default:
- v += gtk_adjustment_get_step_increment(a) * arg->i;
- }
-
- v = MAX(v, 0.0);
- v = MIN(v, gtk_adjustment_get_upper(a) -
- gtk_adjustment_get_page_size(a));
- gtk_adjustment_set_value(a, v);
+ evalscript(c, "window.scrollBy(0, %d * (window.innerHeight / 100))",
+ a->i);
}
void
reload(c, &a);
}
-void
-twitch(Client *c, const Arg *arg)
-{
- GtkAdjustment *a;
- gdouble v;
-
- a = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(
- c->scroll));
-
- v = gtk_adjustment_get_value(a);
-
- v += arg->i;
-
- v = MAX(v, 0.0);
- v = MIN(v, gtk_adjustment_get_upper(a) -
- gtk_adjustment_get_page_size(a));
- gtk_adjustment_set_value(a, v);
-}
-
-void
-togglescrollbars(Client *c, const Arg *arg)
-{
- GtkPolicyType vspolicy;
- Arg a;
-
- gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(c->scroll), NULL,
- &vspolicy);
-
- if (vspolicy == GTK_POLICY_AUTOMATIC) {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll),
- GTK_POLICY_NEVER,
- GTK_POLICY_NEVER);
- } else {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(c->scroll),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- a.i = +1;
- twitch(c, &a);
- a.i = -1;
- twitch(c, &a);
- }
-}
-
void
togglestyle(Client *c, const Arg *arg)
{
}
void
-zoom(Client *c, const Arg *arg)
-{
- c->zoomed = TRUE;
- if (arg->i < 0) {
- /* zoom out */
- webkit_web_view_zoom_out(c->view);
- } else if (arg->i > 0) {
- /* zoom in */
- webkit_web_view_zoom_in(c->view);
- } else {
- /* reset */
- c->zoomed = FALSE;
+zoom(Client *c, const Arg *a)
+{
+ if (a->i > 0)
+ webkit_web_view_set_zoom_level(c->view, zoomlevel + 0.1);
+ else if (a->i < 0)
+ webkit_web_view_set_zoom_level(c->view, zoomlevel - 0.1);
+ else
webkit_web_view_set_zoom_level(c->view, 1.0);
- }
+
+ zoomlevel = webkit_web_view_get_zoom_level(c->view);
}
int