surf-0.7-smoothscrolling.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
surf-0.7-smoothscrolling.diff (9765B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 93a3d49..fa7935c 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -83,50 +83,51 @@ static SiteStyle styles[] = {
6 * edit the CLEANMASK() macro.
7 */
8 static Key keys[] = {
9 - /* modifier keyval function arg Focus */
10 - { MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } },
11 - { MODKEY, GDK_r, reload, { .b = FALSE } },
12 - { MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 } },
13 -
14 - { MODKEY, GDK_p, clipboard, { .b = TRUE } },
15 - { MODKEY, GDK_y, clipboard, { .b = FALSE } },
16 -
17 - { MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 } },
18 - { MODKEY|GDK_SHIFT_MASK,GDK_k, zoom, { .i = +1 } },
19 - { MODKEY|GDK_SHIFT_MASK,GDK_q, zoom, { .i = 0 } },
20 - { MODKEY, GDK_minus, zoom, { .i = -1 } },
21 - { MODKEY, GDK_plus, zoom, { .i = +1 } },
22 -
23 - { MODKEY, GDK_l, navigate, { .i = +1 } },
24 - { MODKEY, GDK_h, navigate, { .i = -1 } },
25 -
26 - { MODKEY, GDK_j, scroll_v, { .i = +1 } },
27 - { MODKEY, GDK_k, scroll_v, { .i = -1 } },
28 - { MODKEY, GDK_b, scroll_v, { .i = -10000 } },
29 - { MODKEY, GDK_space, scroll_v, { .i = +10000 } },
30 - { MODKEY, GDK_i, scroll_h, { .i = +1 } },
31 - { MODKEY, GDK_u, scroll_h, { .i = -1 } },
32 -
33 - { 0, GDK_F11, fullscreen, { 0 } },
34 - { 0, GDK_Escape, stop, { 0 } },
35 - { MODKEY, GDK_o, source, { 0 } },
36 - { MODKEY|GDK_SHIFT_MASK,GDK_o, inspector, { 0 } },
37 -
38 - { MODKEY, GDK_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") },
39 - { MODKEY, GDK_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
40 - { MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
41 -
42 - { MODKEY, GDK_n, find, { .b = TRUE } },
43 - { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } },
44 -
45 - { MODKEY|GDK_SHIFT_MASK,GDK_c, toggle, { .v = "enable-caret-browsing" } },
46 - { MODKEY|GDK_SHIFT_MASK,GDK_i, toggle, { .v = "auto-load-images" } },
47 - { MODKEY|GDK_SHIFT_MASK,GDK_s, toggle, { .v = "enable-scripts" } },
48 - { MODKEY|GDK_SHIFT_MASK,GDK_v, toggle, { .v = "enable-plugins" } },
49 - { MODKEY|GDK_SHIFT_MASK,GDK_a, togglecookiepolicy, { 0 } },
50 - { MODKEY|GDK_SHIFT_MASK,GDK_m, togglestyle, { 0 } },
51 - { MODKEY|GDK_SHIFT_MASK,GDK_b, togglescrollbars, { 0 } },
52 - { MODKEY|GDK_SHIFT_MASK,GDK_g, togglegeolocation, { 0 } },
53 + /* modifier keyval function arg Focus */
54 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_r, reload, { .b = TRUE } },
55 + { MODKEY, GDK_KEY_r, reload, { .b = FALSE } },
56 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_p, print, { 0 } },
57 +
58 + { MODKEY, GDK_KEY_p, clipboard, { .b = TRUE } },
59 + { MODKEY, GDK_KEY_y, clipboard, { .b = FALSE } },
60 +
61 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_j, zoom, { .i = -1 } },
62 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_k, zoom, { .i = +1 } },
63 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_q, zoom, { .i = 0 } },
64 + { MODKEY, GDK_KEY_minus, zoom, { .i = -1 } },
65 + { MODKEY, GDK_KEY_plus, zoom, { .i = +1 } },
66 +
67 + { MODKEY, GDK_KEY_l, navigate, { .i = +1 } },
68 + { MODKEY, GDK_KEY_h, navigate, { .i = -1 } },
69 +
70 + { MODKEY, GDK_KEY_j, scroll_v, { .i = +1 } },
71 + { MODKEY, GDK_KEY_k, scroll_v, { .i = -1 } },
72 + { MODKEY, GDK_KEY_b, scroll_v, { .i = -10000 } },
73 + { MODKEY, GDK_KEY_space, scroll_v, { .i = +10000 } },
74 + { MODKEY, GDK_KEY_i, scroll_h, { .i = +1 } },
75 + { MODKEY, GDK_KEY_u, scroll_h, { .i = -1 } },
76 +
77 + { 0, GDK_KEY_F11, fullscreen, { 0 } },
78 + { 0, GDK_KEY_Escape, stop, { 0 } },
79 + { MODKEY, GDK_KEY_o, source, { 0 } },
80 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_o, inspector, { 0 } },
81 +
82 + { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") },
83 + { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
84 + { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
85 +
86 + { MODKEY, GDK_KEY_n, find, { .b = TRUE } },
87 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_n, find, { .b = FALSE } },
88 +
89 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_c, toggle, { .v = "enable-caret-browsing" } },
90 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_i, toggle, { .v = "auto-load-images" } },
91 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_s, toggle, { .v = "enable-scripts" } },
92 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_v, toggle, { .v = "enable-plugins" } },
93 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_a, togglecookiepolicy, { 0 } },
94 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_m, togglestyle, { 0 } },
95 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_b, togglescrollbars, { 0 } },
96 + { MODKEY|GDK_SHIFT_MASK,GDK_KEY_g, togglegeolocation, { 0 } },
97 +
98 };
99
100 /* button definitions */
101 diff --git a/config.mk b/config.mk
102 index 9f85ea4..a070f88 100644
103 --- a/config.mk
104 +++ b/config.mk
105 @@ -10,8 +10,8 @@ MANPREFIX = ${PREFIX}/share/man
106 X11INC = /usr/X11R6/include
107 X11LIB = /usr/X11R6/lib
108
109 -GTKINC = `pkg-config --cflags gtk+-2.0 webkit-1.0`
110 -GTKLIB = `pkg-config --libs gtk+-2.0 webkit-1.0`
111 +GTKINC = `pkg-config --cflags gtk+-3.0 webkitgtk-3.0`
112 +GTKLIB = `pkg-config --libs gtk+-3.0 webkitgtk-3.0`
113
114 # includes and libs
115 INCS = -I. -I/usr/include -I${X11INC} ${GTKINC}
116 diff --git a/surf.c b/surf.c
117 index 108485b..7a708d4 100644
118 --- a/surf.c
119 +++ b/surf.c
120 @@ -6,6 +6,7 @@
121 #include <X11/X.h>
122 #include <X11/Xatom.h>
123 #include <gtk/gtk.h>
124 +#include <gtk/gtkx.h>
125 #include <gdk/gdkx.h>
126 #include <gdk/gdk.h>
127 #include <gdk/gdkkeysyms.h>
128 @@ -100,7 +101,7 @@ typedef struct {
129 static Display *dpy;
130 static Atom atoms[AtomLast];
131 static Client *clients = NULL;
132 -static GdkNativeWindow embed = 0;
133 +static Window embed = 0;
134 static gboolean showxid = FALSE;
135 static char winid[64];
136 static gboolean usingproxy = 0;
137 @@ -627,9 +628,9 @@ getatom(Client *c, int a)
138 unsigned long ldummy;
139 unsigned char *p = NULL;
140
141 - XGetWindowProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window),
142 - atoms[a], 0L, BUFSIZ, False, XA_STRING,
143 - &adummy, &idummy, &ldummy, &ldummy, &p);
144 + XGetWindowProperty(dpy, GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win))),
145 + atoms[a], 0L, BUFSIZ, False, XA_STRING,
146 + &adummy, &idummy, &ldummy, &ldummy, &p);
147 if (p)
148 strncpy(buf, (char *)p, LENGTH(buf)-1);
149 else
150 @@ -873,6 +874,7 @@ newclient(void)
151 WebKitWebFrame *frame;
152 GdkGeometry hints = { 1, 1 };
153 GdkScreen *screen;
154 + GdkWindow *window;
155 gdouble dpi;
156 char *ua;
157
158 @@ -902,6 +904,10 @@ newclient(void)
159 */
160 gtk_window_set_role(GTK_WINDOW(c->win), "Surf");
161 }
162 +
163 + gtk_widget_realize(GTK_WIDGET(c->win));
164 + window = gtk_widget_get_window(GTK_WIDGET(c->win));
165 +
166 gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600);
167 g_signal_connect(G_OBJECT(c->win),
168 "destroy",
169 @@ -914,10 +920,10 @@ newclient(void)
170 addaccelgroup(c);
171
172 /* Pane */
173 - c->pane = gtk_vpaned_new();
174 + c->pane = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
175
176 /* VBox */
177 - c->vbox = gtk_vbox_new(FALSE, 0);
178 + c->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
179 gtk_paned_pack1(GTK_PANED(c->pane), c->vbox, TRUE, TRUE);
180
181 /* Webview */
182 @@ -999,8 +1005,8 @@ newclient(void)
183 gtk_widget_show(c->win);
184 gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints,
185 GDK_HINT_MIN_SIZE);
186 - gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK);
187 - gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c);
188 + gdk_window_set_events(window, GDK_ALL_EVENTS_MASK);
189 + gdk_window_add_filter(window, processx, c);
190 webkit_web_view_set_full_content_zoom(c->view, TRUE);
191
192 runscript(frame);
193 @@ -1034,7 +1040,7 @@ newclient(void)
194 * It is equivalent to firefox's "layout.css.devPixelsPerPx" setting.
195 */
196 if (zoomto96dpi) {
197 - screen = gdk_window_get_screen(GTK_WIDGET(c->win)->window);
198 + screen = gdk_window_get_screen(window);
199 dpi = gdk_screen_get_resolution(screen);
200 if (dpi != -1) {
201 g_object_set(G_OBJECT(settings),
202 @@ -1073,7 +1079,7 @@ newclient(void)
203 if (showxid) {
204 gdk_display_sync(gtk_widget_get_display(c->win));
205 printf("%u\n",
206 - (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window));
207 + (guint)GDK_WINDOW_XID(window));
208 fflush(NULL);
209 if (fclose(stdout) != 0)
210 die("Error closing stdout");
211 @@ -1281,7 +1287,7 @@ void
212 setatom(Client *c, int a, const char *v)
213 {
214 XSync(dpy, False);
215 - XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window),
216 + XChangeProperty(dpy, GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win))),
217 atoms[a], XA_STRING, 8, PropModeReplace,
218 (unsigned char *)v, strlen(v) + 1);
219 }
220 @@ -1302,7 +1308,7 @@ setup(void)
221 die("Can't install SIGHUP handler");
222 gtk_init(NULL, NULL);
223
224 - dpy = GDK_DISPLAY();
225 + dpy = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
226
227 /* atoms */
228 atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False);
229 @@ -1634,7 +1640,7 @@ void
230 updatewinid(Client *c)
231 {
232 snprintf(winid, LENGTH(winid), "%u",
233 - (int)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window));
234 + (int)GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win))));
235 }
236
237 void
238