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