Fixing the shift key mask and cleaning up the scrolling code.

This commit is contained in:
Christoph Lohmann 2012-10-12 11:48:38 +02:00
parent e28d27249e
commit 23def74c98
1 changed files with 26 additions and 18 deletions

44
surf.c
View File

@ -21,6 +21,7 @@
#include <sys/file.h> #include <sys/file.h>
#define LENGTH(x) (sizeof x / sizeof x[0]) #define LENGTH(x) (sizeof x / sizeof x[0])
#define CLEANMASK(mask) (mask & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
enum { AtomFind, AtomGo, AtomUri, AtomLast }; enum { AtomFind, AtomGo, AtomUri, AtomLast };
@ -360,7 +361,7 @@ keypress(GtkWidget* w, GdkEventKey *ev, Client *c) {
updatewinid(c); updatewinid(c);
for(i = 0; i < LENGTH(keys); i++) { for(i = 0; i < LENGTH(keys); i++) {
if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval
&& (ev->state & keys[i].mod) == keys[i].mod && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
&& keys[i].func) { && keys[i].func) {
keys[i].func(c, &(keys[i].arg)); keys[i].func(c, &(keys[i].arg));
processed = TRUE; processed = TRUE;
@ -648,31 +649,37 @@ reload(Client *c, const Arg *arg) {
void void
scroll_h(Client *c, const Arg *arg) { scroll_h(Client *c, const Arg *arg) {
scroll(gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(c->scroll)), arg); scroll(gtk_scrolled_window_get_hadjustment(
GTK_SCROLLED_WINDOW(c->scroll)), arg);
} }
void void
scroll_v(Client *c, const Arg *arg) { scroll_v(Client *c, const Arg *arg) {
scroll(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(c->scroll)), arg); scroll(gtk_scrolled_window_get_vadjustment(
GTK_SCROLLED_WINDOW(c->scroll)), arg);
} }
void void
scroll(GtkAdjustment *a, const Arg *arg) { scroll(GtkAdjustment *a, const Arg *arg) {
gdouble v; gdouble v;
v = gtk_adjustment_get_value(a); v = gtk_adjustment_get_value(a);
switch (arg->i){ switch (arg->i){
case +10000: case +10000:
case -10000: case -10000:
v += gtk_adjustment_get_page_increment(a) * (arg->i / 10000); break; v += gtk_adjustment_get_page_increment(a) *
case +20000: (arg->i / 10000);
case -20000: break;
default: case +20000:
v += gtk_adjustment_get_step_increment(a) * arg->i; case -20000:
} default:
v = MAX(v, 0.0); v += gtk_adjustment_get_step_increment(a) * arg->i;
v = MIN(v, gtk_adjustment_get_upper(a) - gtk_adjustment_get_page_size(a)); }
gtk_adjustment_set_value(a, v);
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 void
@ -782,7 +789,8 @@ spawn(Client *c, const Arg *arg) {
void void
eval(Client *c, const Arg *arg) { eval(Client *c, const Arg *arg) {
WebKitWebFrame *frame = webkit_web_view_get_main_frame(c->view); WebKitWebFrame *frame = webkit_web_view_get_main_frame(c->view);
evalscript(webkit_web_frame_get_global_context(frame), ((char **)arg->v)[0], ""); evalscript(webkit_web_frame_get_global_context(frame),
((char **)arg->v)[0], "");
} }
void void