adding autozoom for small windows

This commit is contained in:
Enno Boland (tox) 2009-10-20 20:34:13 +02:00
parent f277dbd3d2
commit 92afa03d80
1 changed files with 15 additions and 0 deletions

15
surf.c
View File

@ -106,6 +106,7 @@ static void print(Client *c, const Arg *arg);
static void progresschange(WebKitWebView *v, gint p, Client *c); static void progresschange(WebKitWebView *v, gint p, Client *c);
static void reloadcookies(); static void reloadcookies();
static void reload(Client *c, const Arg *arg); static void reload(Client *c, const Arg *arg);
static void resize(GtkWidget *w, GtkAllocation *a, Client *c);
static void sigchld(int unused); static void sigchld(int unused);
static void setup(void); static void setup(void);
static void spawn(Client *c, const Arg *arg); static void spawn(Client *c, const Arg *arg);
@ -470,6 +471,7 @@ newclient(void) {
gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600); 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), "destroy", G_CALLBACK(destroywin), c);
g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c); g_signal_connect(G_OBJECT(c->win), "key-press-event", G_CALLBACK(keypress), c);
g_signal_connect(G_OBJECT(c->win), "size-allocate", G_CALLBACK(resize), c);
if(!(c->items = calloc(1, sizeof(GtkWidget *) * LENGTH(items)))) if(!(c->items = calloc(1, sizeof(GtkWidget *) * LENGTH(items))))
die("Cannot malloc!\n"); die("Cannot malloc!\n");
@ -674,6 +676,19 @@ scroll(Client *c, const Arg *arg) {
gtk_adjustment_set_value(a, v); gtk_adjustment_set_value(a, v);
} }
void
resize(GtkWidget *w, GtkAllocation *a, Client *c) {
double zoom;
zoom = webkit_web_view_get_zoom_level(c->view);
if(a->width * a->height < 300 * 300 && zoom != 0.2)
webkit_web_view_set_zoom_level(c->view, 0.2);
else if(zoom != 1.0)
webkit_web_view_set_zoom_level(c->view, 1.0);
}
void void
sigchld(int unused) { sigchld(int unused) {
if(signal(SIGCHLD, sigchld) == SIG_ERR) if(signal(SIGCHLD, sigchld) == SIG_ERR)